第 3 章 用于保护 Web 应用程序的 OpenID Connect 授权代码流机制
要保护 Web 应用程序,您可以使用 Quarkus OIDC 扩展提供的行业标准 OpenID Connect (OIDC)授权代码流机制。
3.1. OIDC 授权代码流机制概述
Quarkus OpenID Connect (OIDC)扩展可以使用 OIDC 兼容授权服务器支持的 OIDC 授权代码流机制(如 Keycloak )来保护应用程序 HTTP 端点。
授权代码流机制通过将 Web 应用程序重定向到 OIDC 供应商(如 Keycloak)来验证用户,以登录。身份验证后,OIDC 供应商将使用授权代码将用户重新重定向到应用程序,确认身份验证是否成功。然后,应用程序使用 ID 令牌的 OIDC 供应商(代表经过身份验证的用户)、访问令牌和刷新令牌交换此代码,以授权用户访问应用程序。
下图显示了 Quarkus 中的授权代码流机制。
图 3.1. Quarkus 中的授权代码流机制
![授权代码流](https://access.redhat.com/webassets/avalon/d/Red_Hat_build_of_Quarkus-3.15-OpenID_Connect_OIDC_authentication-zh-CN/images/5e603132987f9e26f19cb88914a57a30/authorization_code_flow.png)
-
Quarkus 用户请求访问 Quarkus
web-app
应用程序。 - Quarkus web-app 将用户重定向到授权端点,即用于身份验证的 OIDC 供应商。
- OIDC 供应商将用户重定向到登录和验证提示。
- 在提示符处,用户输入其用户凭据。
- OIDC 供应商验证输入的用户凭证,如果成功,请发出授权代码,并使用作为查询参数包括的代码重定向到 Quarkus web-app。
- Quarkus web-app 使用 ID、访问和刷新令牌的 OIDC 供应商交换此授权代码。
授权代码流已完成,Quarkus web-app 使用发布的令牌来访问用户的信息,并为该用户授予相关基于角色的访问控制。发布以下令牌:
-
ID 令牌 : Quarkus
web-app
应用使用 ID 令牌中的用户信息,使经过身份验证的用户能够安全地登录,并提供对 Web 应用程序的基于角色的访问控制。 - 访问令牌 : Quarkus web-app 可以使用访问令牌访问 UserInfo API 来获取有关经过身份验证的用户的附加信息,或将其传播到另一个端点。
- 刷新令牌:(可选)如果 ID 和访问令牌过期,则 Quarkus web-app 可以使用刷新令牌获取新的 ID 和访问令牌。
另请参阅 OIDC 配置属性 参考指南。
要了解如何使用 OIDC 授权代码流机制保护 Web 应用程序,请参阅使用 OIDC 授权代码流保护 Web 应用程序。
如果要使用 OIDC Bearer 令牌身份验证来保护服务应用程序,请参阅 OIDC Bearer 令牌身份验证。
有关如何支持多个租户的详情,请参考 使用 OpenID Connect Multi-Tenancy。