【发布时间】:2019-05-19 06:27:10
【问题描述】:
我有 2 个 JHipster 应用程序在一个子域(app1.domain.tld 和 app2.domain.tld)上运行。
在这两个应用程序中,用户都通过 Keycloak 登录。顺序是这样的:
- Angular 应用向 Keycloak 发送带有凭据的 /authenticate 请求
- 如果响应成功,则返回身份验证 cookie
- POST 请求被发送到生成 JSessionID cookie 的 Jhipster 后端应用程序
- JSessionID 然后用于对支持的应用程序的每个请求。
如果用户已经登录域 (*.domain.tld) 的其中一个应用程序,那么自动登录用户(无需询问用户名和密码)的最佳方式是什么?
我尝试将 JSessionID 用作全局令牌,然后才明白它仅适用于生成它的应用程序...
也许捕获 Keycloak 身份验证 cookie(在第 2 步返回)并在第二个应用程序上进行身份验证可以解决问题?
根据我在测试时看到的情况,在第一个应用程序上通过身份验证后,当我转到第二个应用程序时,Angular 401 HTTP 拦截器会重定向到带有会话令牌的 keycloak 登录页面。因此,那时 Keycloak 应该会看到我已经登录并且应该将我重定向到我的第二个应用程序的主页。
我说的对吗?
【问题讨论】:
-
有什么解决办法吗?我也有同样的要求。
标签: java spring-security single-sign-on jhipster keycloak