5.6. 应用程序启动的操作
应用程序启动的操作(AIA)允许客户端应用程序请求用户在红帽构建的 Keycloak 端执行操作。通常,当 OIDC 客户端应用程序希望用户登录时,它会将该用户重定向到登录 URL,如 OIDC 部分所述。登录后,用户将重新重定向到客户端应用程序。用户执行管理员 在上一节中 描述所需的操作,然后立即重定向到应用程序。但是,AIA 允许客户端应用程序在登录期间从用户请求一些必要的操作。即使用户已在客户端上进行身份验证并且具有活跃的 SSO 会话,也可以执行此操作。它通过将 kc_action 参数添加到 OIDC 登录 URL 中触发,其值包含所请求操作的值。例如 kc_action=UPDATE_PASSWORD 参数。
kc_action 参数是红帽构建的 OIDC 规格不支持的 Keycloak 专有机制。
应用程序启动的操作只支持 OIDC 客户端。
因此,如果使用 AIA,则示例流类似如下:
-
客户端应用程序使用附加参数将用户重定向到 OIDC 登录 URL,如
kc_action=UPDATE_PASSWORD -
按照 Authentication flows 部分所述,始终触发
浏览器流。如果用户没有经过身份验证,则该用户在正常登录过程中需要以 身份进行身份验证。如果用户已经通过了身份验证,该用户可能会被 SSO cookie 自动重新验证,而无需主动重新验证并再次提供凭据。在这种情况下,该用户将直接重定向到带有特定操作(本例中为更新密码)的屏幕。然而,在某些情况下,即使用户有 SSO cookie (详情请参阅 下面), 也需要激活重新身份验证。 -
用户会显示具有特定操作的屏幕(本例中为
更新密码),以便用户需要执行特定操作 - 然后,用户被重定向到客户端应用程序
请注意,红帽构建的 Keycloak 帐户 控制台使用 AIA 来请求更新密码或重置 OTP 或 WebAuthn 等其他凭证。
即使使用了 kc_action 参数,也不足以假定用户始终执行该操作。例如,用户可以从浏览器 URL 中手动删除 kc_action 参数。因此,在客户端请求 kc_action=CONFIGURE_TOTP 后,用户不会保证用户具有 OTP。如果要验证用户配置了双因素验证器,则客户端应用程序可能需要检查它是否已配置。例如,通过检查令牌中的 acr 等声明。
5.6.1. AIA 期间重新进行身份验证 复制链接链接已复制到粘贴板!
如果用户因为活跃的 SSO 会话而已通过身份验证,则该用户通常不需要主动重新验证。但是,如果该用户在五分钟以前被主动验证的时间超过五分钟,客户端仍然可以在请求一些 AIA 时请求重新身份验证。本指南行中存在例外,如下所示:
-
操作
delete_account将始终要求用户主动重新验证 -
如果要使用较短的重新身份验证,您仍可使用带有指定较短的值的
max_age等参数查询参数,或者最终提示=login,这始终需要用户来主动重新验证,如 OIDC 规范中所述。请注意,不支持将max_age比默认的五分钟长。目前,max_age只能用于使值比默认的五分钟短。
5.6.2. 可能的操作 复制链接链接已复制到粘贴板!
要查看所有可用的操作,请登录到 Admin 控制台,再进入右上角,点 Realm info Provider info required-action。但请注意,这可以根据在 Required 操作选项卡中为您的域启用哪些操作 进行进一步限制。