管理会话

Keycloak 会维护用户会话,以跟踪跨应用程序的已认证用户。本指南介绍如何查看、配置和管理用户会话。

查看活动会话

Realm 会话

  1. 在 Admin Console 中,转到 Sessions。
  2. 概览会显示活动会话总数,以及按 client 划分的明细。

按用户查看会话

  1. 转到 Users 并选择一个用户。
  2. 单击 Sessions 选项卡。
  3. 查看该用户的所有活动会话,包括:
    • 会话开始时间
    • 上次访问时间
    • IP 地址
    • 会话内访问过的 Clients

按客户端查看会话

  1. 转到 Clients 并选择一个 client。
  2. 单击 Sessions 选项卡。
  3. 查看该 client 的所有活动会话。

终止会话

注销单个用户

  1. 转到 Users > 选择用户 > Sessions 选项卡。
  2. 在特定会话上单击 Sign out,或者单击 Sign out all sessions 以终止该用户的所有会话。

注销 Realm 中的所有用户

  1. 转到 Sessions。
  2. 单击 Sign out all active sessions。
Impact

注销所有会话会强制 Realm 中的每个用户在下次请求时重新认证。仅在安全事件或计划内维护期间使用此操作。

撤销策略

撤销策略会使指定时间之前签发的所有 token 失效:

  1. 转到 Sessions > Revocation。
  2. 单击 Set to now,或指定自定义的 Not Before 日期/时间。
  3. 单击 Push。
  4. 在指定时间之前签发的所有 token 都将被视为无效。

会话超时配置

在 Realm Settings > Sessions 选项卡中配置会话超时。

SSO 会话超时

SettingDescriptionDefault
SSO Session IdleSSO 会话过期前允许的最长空闲时间。用户在空闲达到此时长后必须重新认证。30 分钟
SSO Session MaxSSO 会话的最长总持续时间,不受活动影响。10 小时
SSO Session Idle Remember Me启用 "Remember Me" 时的空闲超时。将其设置为 0 可使用标准空闲超时。0(已禁用)
SSO Session Max Remember Me启用 "Remember Me" 时的最长期限。将其设置为 0 可使用标准最长超时。0(已禁用)

客户端会话超时

SettingDescriptionDefault
Client Session Idle客户端级会话的最长空闲时间(在 SSO 会话内限定于单个 client)。0(使用 SSO Session Idle)
Client Session Max客户端级会话的最长持续时间。0(使用 SSO Session Max)

Token 超时

SettingDescriptionDefault
Access Token Lifespanaccess token 的有效期5 分钟
Access Token Lifespan For Implicit Flowimplicit flow 的 access token 有效期15 分钟
Client login timeout在 authorization request 之后完成登录流程的最长时间5 分钟
Login timeout登录页面在过期前可保持打开的最长时间30 分钟
Login action timeout完成登录操作的最长时间(例如,电子邮件验证)5 分钟

离线会话

离线会话 允许应用程序维护长期存在的 refresh token,其有效期可超出正常的 SSO 会话生命周期。这用于需要代表用户执行后台操作的应用程序。

配置离线会话

  1. 转到 Realm Settings > Sessions 选项卡。
  2. 配置:
SettingDescriptionDefault
Offline Session Idle离线会话的最长空闲时间30 天
Offline Session Max Limited启用后可设置离线会话的最长生命周期关闭
Offline Session Max离线会话的最长持续时间(如果已启用)60 天

授予离线访问权限

要让 client 请求离线 token:

  1. 在 authorization request 中包含 offline_access scope。
  2. 该 client 必须已分配 offline_access scope(作为默认或可选 scope 均可)。
  3. 用户必须具有 offline_access role(默认包含在 offline_access scope 中)。

Remember Me

Remember Me 功能允许用户在登录页面勾选 "Remember Me" 复选框,从而延长会话持续时间。

启用 Remember Me

  1. 转到 Realm Settings > Login 选项卡。
  2. 启用 Remember me。
  3. 在 Sessions 选项卡中配置 "Remember Me" 会话超时(SSO Session Idle Remember Me、SSO Session Max Remember Me)。