oauth-2.0 - Keyclock 与客户端 ID 共享相同的会话
问题描述
我不是这方面的专家。
在同一领域的 Keycloak 上,我们定义了两个客户端 ID。
我的客户端 ID 配置了 OpenID 连接和授权代码流。
像这样,可以通过这些客户端使用其凭据对用户进行身份验证。
我有个问题。我的一个用户在这两个不同的客户端 ID 之间共享相同的 Keycloak 会话。事实上,当用户登录客户端 A 时,他已从客户端 B 中注销。同样,当他登录客户端 B 时,他已从客户端 A 中注销。
为什么可以共享同一个 Keycloak 会话?以及如何确保有两个不同的 Keycloak 会话。
更新:我注意到,当用户通过客户端 A 或客户端 B 登录时,他使用相同的浏览器。如果他通过客户端 A 登录,则无需通过客户端 B 输入其登录名/密码。结果是有一个 Keycloak 会话。(如果用户使用每个客户端的不同浏览器,则客户端有一个 keycloak 会话)。是否可以通过客户端 ID 强制执行一个 keycloak 会话?
解决方案
你说的是几乎所有实现OIDC的AM软件中的一个基本功能,没有登录clientA这回事,用户总是登录IDP,即Keycloak。
默认情况下,客户端没有会话,keycloak 有,并且客户端在其 OIDC 流程中使用 keycloak 会话。例如,如果您已经通过 keycloak 的身份验证,并且您尝试使用 ClientA 或 ClientB 进行 OIDC 流,则不会提示您输入用户名/密码,keycloak 将使用现有会话。
因此,如果您想为同一用户创建不同的会话,则必须创建自己的会话,例如,如果您的客户端使用 apache,则可以使用 apache oidc 模块创建本地会话(这将是您的 ClientA 会话) ,至于 keycloak 会话,您不能有两个会话,但您可以为两个客户端设置一个 keycloak 会话,为每个客户端设置两个 apache 会话。
推荐阅读
- javascript - 使用 jQuery 和 CSS3 自定义圆形光标
- java - 在 Lambda 函数 (Java) 中加载类时出错
- ios - 在情节提要中加载 xib 视图。为什么我们必须做 self.addSubview(nibView) ?
- low-latency - 用于估计启用 NUMA 的改进的 Memory Profiler 工具
- java - 如何使用 Selenium 框架从受用户名和密码保护的站点下载文件?
- hbase - MultiRowRangeFilter:如何限制每个 RowRange 的结果?
- c# - 如何使用 Display() 方法或任何替代方法?
- python - MacOS 上的 PyCharm 无法处理文件
- rest - 将活动目录中的员工数据放入共享点中的 html 页面
- c# - 制作静态类当前状态的快照对象