8.11. 身份验证会话
当在 Web 浏览器中第一次打开登录页面时,Red Hat build of Keycloak 会创建一个名为 authentication 会话的对象,它存储了有关请求的一些有用信息。每当从同一浏览器中的不同标签页打开新的登录页面时,红帽构建的 Keycloak 都会创建一个名为 authentication sub-session 的新记录,该记录存储在身份验证会话中。身份验证请求可能来自任何类型的客户端,如 Admin CLI。在这种情况下,还使用一个身份验证子会话创建新的身份验证会话。请注意,除使用浏览器流外,也可以以其他方式创建身份验证会话。
默认情况下,身份验证会话通常在 30 分钟后过期。在配置域 时,具体时间由管理控制台的 Sessions 选项卡中的 Login timeout 开关指定。
8.11.1. 在更多浏览器标签页中进行身份验证
如上一节所述,这种情况可能涉及一个用户,可以从单个浏览器的多个标签页向红帽构建 Keycloak 服务器进行身份验证。但是,当用户在一个浏览器标签页中进行身份验证时,其他浏览器标签页将自动重启身份验证。由于红帽构建的 Keycloak 登录页面上提供了小型 javascript,因此会发生此身份验证。重启通常会在其他浏览器标签页中验证用户,并重定向到客户端,因为现在有一个 SSO 会话,因为用户刚刚在第一浏览器标签页中成功进行身份验证。当用户没有在其他浏览器标签页中自动进行身份验证时(如使用 OIDC 参数 提示=login 或 step-up 身份验证 )时,会出现一些罕见的异常。
在某些情况下,在第一个浏览器选项卡中进行身份验证后可能会发生,其他浏览器标签页将无法重启身份验证,因为身份验证会话已经过期。在这种情况下,特定的浏览器选项卡将以特定协议的特定方式将有关过期身份验证会话的错误重定向到客户端。如需了解更多详细信息,请参阅安全应用程序部分的 OIDC 文档 的对应部分。当客户端应用程序收到此类错误时,它可以立即将 OIDC/SAML 身份验证请求重新提交到红帽构建的 Keycloak,因为这通常应该因为上述现有 SSO 会话自动验证用户。因此,最终用户在所有浏览器标签页中自动进行身份验证。保护 应用程序部分中的 Keycloak JavaScript 适配器,以及 红帽构建的 Keycloak 身份提供程序 支持,以自动处理这个错误,并重试身份验证到红帽构建的 Keycloak 服务器。