1. 场景描述
当前版本3.10.19,现在想通过iframe方式嵌入jumpserver的terminal
-
开启
AUTH_SSO。 -
通过
/api/v1/authentication/super-connection-token/获取login_url。 -
得到的 URL 格式为:
https://jms-host/api/v1/authentication/sso/login/?authkey=xxx&next=/koko/connect/?token=yyy。 -
将此 URL 放入第三方系统的
iframe中加载。 -
修改了core配置
SSO 认证配置
AUTH_SSO=True
X_FRAME_OPTIONS=ALLOWALL
DOMAINS=test-office-jumpserver.aaaa.cn
Cookie 跨站策略(允许在 iframe 中传递)
SESSION_COOKIE_SAMESITE=None
SESSION_COOKIE_SECURE=True
CSRF 跨站策略
CSRF_COOKIE_SAMESITE=None
CSRF_COOKIE_SECURE=True
CSRF 信任来源
CSRF_TRUSTED_ORIGINS=http://localhost:3000,https://test-office-jumpserver.aaaa.cn
CORS_ALLOWED_ORIGINS=http://localhost:3000
- 修改了源码/opt/jumpserver/apps/jumpserver/settings/base.py
目前来看,3.10.19版本,并未把这两个配置释放出来,所以需要手动修改源码来设置这两个配置项:
SESSION_COOKIE_SAMESITE = os.environ.get(“SESSION_COOKIE_SAMESITE”, “Lax”)
CSRF_COOKIE_SAMESITE = os.environ.get(“CSRF_COOKIE_SAMESITE”, “Lax”)
- 问题:
当前情况是,得到login_url,在新的浏览器窗口能正常访问并登入到服务器。但在iframe中,会跳转到jumpserver的登入页面。
现在想咨询的时候,是否有办法在iframe中正常使用jumpserver的terminal功能,或者是否有其他的解决方案来实现这个需求?
另外做了以下的测试:
先在浏览器里允许这个域名的第三方 Cookie 再测一次。
Chrome 里去:
chrome://settings/cookies
把下面域名加入允许列表:
[*.]test-office-jumpserver.aaaa.cn
再次测试,iframe里面的就能正常登入到 JumpServer 的 Terminal 页面了。
想请教官方技术大大和社区的小伙伴:
想采用 iframe方式嵌入terminal的最佳方案是什么?
希望能得到官方的关注和解答,感谢!