Keycloak 如何确定新浏览器中的用户 window?
How does Keycloak determinate a User in new browser window?
我试着弄明白以下问题:
有:
app1.gatekeeper-test.com
app2.other-url.com
这两个客户端(app1、app2)在同一个领域(在 2 个 Gatekeepers 后面保护)
两者都指向同一个资源服务器 - Cookie 是全范围的。
- 我以
user1
身份登录 app1.gatekeeper-test.com
。
- 我在新标签页中打开
app2.other-url.com
它会自动将我登录为 user1
。
- 如果我在私人window中打开
app1.gatekeeper-test.com
,我需要重新登录。
- 没有什么是全局范围的,我找不到 keycloak 如何确定用户的原因。
这怎么可能?必须有一些前端状态机制让 Keycloak 知道这是 user1
,它正在尝试访问 app2?我很困惑...(在Chrome 80.0.3987.87上测试)
这就是 SSO 的工作原理,它是跨浏览器选项卡共享的浏览器会话 UUID。
一旦您从新选项卡重定向到 keycloak,它会通过您的浏览器会话检测到同一领域下已经有该会话的经过身份验证的用户,因此它 returns 给您令牌。
从隐身模式 windows,您有一个新的会话 UUID,因此您将需要重做身份验证机制,并且您将获得具有不同到期时间的不同令牌,即使它是同一用户也是如此。
我试着弄明白以下问题:
有:
app1.gatekeeper-test.com
app2.other-url.com
这两个客户端(app1、app2)在同一个领域(在 2 个 Gatekeepers 后面保护) 两者都指向同一个资源服务器 - Cookie 是全范围的。
- 我以
user1
身份登录app1.gatekeeper-test.com
。 - 我在新标签页中打开
app2.other-url.com
它会自动将我登录为user1
。 - 如果我在私人window中打开
app1.gatekeeper-test.com
,我需要重新登录。 - 没有什么是全局范围的,我找不到 keycloak 如何确定用户的原因。
这怎么可能?必须有一些前端状态机制让 Keycloak 知道这是 user1
,它正在尝试访问 app2?我很困惑...(在Chrome 80.0.3987.87上测试)
这就是 SSO 的工作原理,它是跨浏览器选项卡共享的浏览器会话 UUID。
一旦您从新选项卡重定向到 keycloak,它会通过您的浏览器会话检测到同一领域下已经有该会话的经过身份验证的用户,因此它 returns 给您令牌。
从隐身模式 windows,您有一个新的会话 UUID,因此您将需要重做身份验证机制,并且您将获得具有不同到期时间的不同令牌,即使它是同一用户也是如此。