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
将始终要求用户主动重新验证 -
操作
update_password
可能需要用户根据配置的 Maximum Authentication Age Password 策略 主动重新验证。如果没有配置策略,则在配置特定所需操作时,也可以在 Required 操作选项卡中 在所需的操作本身中配置它。如果策略没有在其中任何地方配置,则默认为五分钟。 -
如果要使用较短的重新身份验证,您仍可使用带有指定较短的值的
max_age
等参数查询参数,或者最终提示=login
,这始终需要用户来主动重新验证,如 OIDC 规范中所述。请注意,不支持使用max_age
作为默认的五分钟(或者密码策略所描述的值)。目前,max_age
只能用于使值比默认的五分钟短。 -
如果启用了 Step-up 身份验证,且操作是添加或删除凭证,则需要在与给定凭证对应的级别进行身份验证。当用户已具有特定级别的凭证时,这个要求已存在。例如,如果在身份验证流中配置
otp
和webauthn
作为第二因素验证器(在 2 级验证流中),并且用户已具有双因素凭证(本例中为otp
或webauthn
),则需要通过现有的双因素凭证进行身份验证来添加另一个双因素凭证。同样,删除现有的双因素凭证(本例中为otp
或webauthn
),需要使用现有的双因素级凭证进行身份验证。出于安全考虑,需要存在。
5.6.2. 参数化 AIA 复制链接链接已复制到粘贴板!
有些 AIA 可能需要将参数与操作名称一起发送。例如,Delete Credential
操作只能由 AIA 触发,它要求参数与操作的名称一起发送,指向已删除凭证的 ID。因此,本示例的 URL 为 kc_action=delete_credential:ce1008ac-f811-427f-825a-c0b878d1c24b
。在这种情况下,冒号字符(ce1008ac-f811-427f-825a-c0b878d1c24b
)后面的部分包含特定用户的 ID,即要删除的用户。Delete Credential
操作显示确认屏幕,用户可以在其中确认协议来删除凭证。
红帽 Keycloak 帐户控制台的构建 通常在删除第二因素凭证时使用 Delete Credential
操作。如果要直接从您自己的应用程序使用这个操作,您可以检查帐户控制台以了解示例。但是,依赖帐户控制台,而不是从您自己的应用程序管理凭证。
5.6.3. 可能的操作 复制链接链接已复制到粘贴板!
要查看所有可用的操作,请登录到 Admin 控制台,再进入右上角,点 Realm info
Provider info
required-action
。但请注意,这可以根据在 Required 操作选项卡中为您的域启用哪些操作 进行进一步限制。