编辑此页面

OpenID Connect (OIDC) 配置属性

作为 Quarkus 开发者,您可以通过在 src/main/resources/application.properties 文件中设置以下属性来配置 Quarkus OpenID Connect (OIDC) 扩展。

OIDC 配置

构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖

配置属性

类型

默认

如果启用了 OIDC 扩展。

环境变量:QUARKUS_OIDC_ENABLED

显示更多

布尔值

true

启用 Default TokenIntrospection 和 UserInfo Cache 实现 bean 的注册。注意:这仅启用默认实现。它需要配置才能激活。请参阅 OidcConfig#tokenCache

环境变量:QUARKUS_OIDC_DEFAULT_TOKEN_CACHE_ENABLED

显示更多

布尔值

true

当存在健康检查功能时,OIDC 扩展是否应自动为 OIDC 租户注册健康检查。

环境变量:QUARKUS_OIDC_HEALTH_ENABLED

显示更多

布尔值

false

是否应使用持有者访问令牌的颁发者(iss)声明值来解析 OIDC 租户。

环境变量:QUARKUS_OIDC_RESOLVE_TENANTS_WITH_ISSUER

显示更多

布尔值

false

quarkus.oidc."tenant".auth-server-url

OpenID Connect (OIDC) 服务器的基本 URL,例如,https://host:port/auth。如果您使用 'quarkus-oidc' 并且只需要公钥验证(public-key)或证书链验证(certificate-chain),请勿设置此属性。默认情况下,OIDC 发现端点通过将 .well-known/openid-configuration 路径附加到此 URL 来调用。对于 Keycloak,请使用 https://host:port/realms/{realm},将 {realm} 替换为 Keycloak 域名称。

环境变量:QUARKUS_OIDC_AUTH_SERVER_URL

显示更多

字符串

quarkus.oidc."tenant".discovery-enabled

OIDC 端点的发现。如果未启用,您必须单独配置 OIDC 端点 URL。

环境变量:QUARKUS_OIDC_DISCOVERY_ENABLED

显示更多

布尔值

true

quarkus.oidc."tenant".registration-path

OIDC 动态客户端注册端点的相对路径或绝对 URL。如果 discovery-enabledfalse 或必须自定义发现的令牌端点路径,则进行设置。

环境变量:QUARKUS_OIDC_REGISTRATION_PATH

显示更多

字符串

quarkus.oidc."tenant".connection-delay

尝试与 OIDC 服务器建立初始连接的持续时间。例如,将持续时间设置为 20S 允许 10 次重试,每次间隔 2 秒。此属性仅在创建初始 OIDC 连接时有效。对于断开的连接,请改用 connection-retry-count 属性。

环境变量:QUARKUS_OIDC_CONNECTION_DELAY

显示更多

Duration 

quarkus.oidc."tenant".connection-retry-count

如果现有的 OIDC 连接暂时丢失,则重新建立该连接的重试次数。与 connection-delay 不同,后者仅适用于初始连接尝试。例如,如果由于连接问题导致对 OIDC 令牌端点的请求失败,将根据此设置进行重试。

环境变量:QUARKUS_OIDC_CONNECTION_RETRY_COUNT

显示更多

整数

3

quarkus.oidc."tenant".connection-timeout

当前 OIDC 连接请求超时的秒数。

环境变量:QUARKUS_OIDC_CONNECTION_TIMEOUT

显示更多

Duration 

10S

quarkus.oidc."tenant".use-blocking-dns-lookup

是否应在工作线程上执行 DNS 查找。当您看到有关 HTTP 请求阻塞 Vert.x 事件循环的已记录警告时,请使用此选项。

环境变量:QUARKUS_OIDC_USE_BLOCKING_DNS_LOOKUP

显示更多

布尔值

false

quarkus.oidc."tenant".max-pool-size

WebClient 使用的连接池的最大大小。

环境变量:QUARKUS_OIDC_MAX_POOL_SIZE

显示更多

整数

quarkus.oidc."tenant".follow-redirects

当 WebClient 收到 HTTP 302 时自动遵循重定向。禁用此属性后,只允许单个重定向到完全相同的原始 URI,但前提是在重定向请求期间设置了一个或多个 cookie。

环境变量:QUARKUS_OIDC_FOLLOW_REDIRECTS

显示更多

布尔值

true

quarkus.oidc."tenant".token-path

颁发访问令牌和刷新令牌的 OIDC 令牌端点;指定为相对路径或绝对 URL。如果 discovery-enabledfalse,或者必须自定义发现的令牌端点路径,请设置此属性。

环境变量:QUARKUS_OIDC_TOKEN_PATH

显示更多

字符串

quarkus.oidc."tenant".revoke-path

OIDC 令牌吊销端点的相对路径或绝对 URL。

环境变量:QUARKUS_OIDC_REVOKE_PATH

显示更多

字符串

quarkus.oidc."tenant".client-id

应用程序的客户端 ID。每个应用程序都有一个客户端 ID,用于标识该应用程序。如果 application-typeservice 并且不需要令牌内省,则不需要设置客户端 ID。

环境变量:QUARKUS_OIDC_CLIENT_ID

显示更多

字符串

quarkus.oidc."tenant".client-name

应用程序的客户端名称。它旨在表示应用程序的人类可读描述,当在 OpenId Connect 提供程序的仪表板中注册应用程序(客户端)时,您可以提供该描述。例如,您可以设置此属性以获得更丰富的信息性日志消息,这些消息记录给定客户端的活动。

环境变量:QUARKUS_OIDC_CLIENT_NAME

显示更多

字符串

quarkus.oidc."tenant".tenant-id

唯一的租户标识符。它可以由 TenantConfigResolver 提供程序设置,该提供程序动态解析租户配置。

环境变量:QUARKUS_OIDC_TENANT_ID

显示更多

字符串

quarkus.oidc."tenant".tenant-enabled

是否启用此租户配置。如果未配置默认租户,但注册了解析租户配置的 TenantConfigResolver 或配置了命名租户,则默认租户将被禁用。在这种情况下,您不需要禁用默认租户。

环境变量:QUARKUS_OIDC_TENANT_ENABLED

显示更多

布尔值

true

quarkus.oidc."tenant".application-type

应用程序类型,可以是以下 ApplicationType 值之一。

环境变量:QUARKUS_OIDC_APPLICATION_TYPE

显示更多

web-appWEB_APP 是一种服务页面的客户端,通常是前端应用程序。对于这种类型的客户端,授权码流程被定义为验证用户的首选方法。, serviceSERVICE 是一种具有一组受保护 HTTP 资源的客户端,通常是遵循 RESTful 架构设计的后端应用程序。对于这种类型的客户端,持有者授权方法被定义为验证和授权用户的首选方法。, hybrid组合的 SERVICEWEB_APP 客户端。对于这种类型的客户端,如果设置了 Authorization 标头,则使用持有者授权方法;如果未设置,则使用授权码流程。

service{@code SERVICE} 是一种具有一组受保护 HTTP 资源的客户端,通常是遵循 RESTful 架构设计的后端应用程序。对于这种类型的客户端,持有者授权方法被定义为验证和授权用户的首选方法。

quarkus.oidc."tenant".authorization-path

OpenID Connect (OIDC) 授权端点的相对路径或绝对 URL,该端点用于验证用户身份。如果禁用了 OIDC 发现,则必须为 web-app 应用程序设置此属性。如果启用了 OIDC 发现,则忽略此属性。

环境变量:QUARKUS_OIDC_AUTHORIZATION_PATH

显示更多

字符串

quarkus.oidc."tenant".user-info-path

OIDC UserInfo 端点的相对路径或绝对 URL。如果禁用了 OIDC 发现并且启用了 authentication.user-info-required 属性,则必须为 web-app 应用程序设置此属性。如果启用了 OIDC 发现,则忽略此属性。

环境变量:QUARKUS_OIDC_USER_INFO_PATH

显示更多

字符串

quarkus.oidc."tenant".introspection-path

OIDC RFC7662 内省端点的相对路径或绝对 URL,该端点可以内省不透明令牌和 JSON Web 令牌 (JWT) 令牌。如果禁用了 OIDC 发现并且 1) 必须验证不透明持有者访问令牌或 2) 必须验证 JWT 令牌,同时刷新缓存的 JWK 验证集且没有匹配的 JWK,则必须设置此属性。如果启用了发现,则忽略此属性。

环境变量:QUARKUS_OIDC_INTROSPECTION_PATH

显示更多

字符串

quarkus.oidc."tenant".jwks-path

OIDC JSON Web Key Set (JWKS) 端点的相对路径或绝对 URL,该端点返回 JSON Web Key 验证集。如果禁用了 OIDC 发现并且需要本地 JWT 验证,则应设置此属性。如果启用了发现,则忽略此属性。

环境变量:QUARKUS_OIDC_JWKS_PATH

显示更多

字符串

quarkus.oidc."tenant".end-session-path

OIDC end_session_endpoint 的相对路径或绝对 URL。如果禁用了 OIDC 发现并且需要 web-app 应用程序的 RP Initiated Logout 支持,则必须设置此属性。如果启用了发现,则忽略此属性。

环境变量:QUARKUS_OIDC_END_SESSION_PATH

显示更多

字符串

quarkus.oidc."tenant".tenant-paths

必须由此租户保护的路径。具有最特定路径的租户获胜。有关允许的路径模式的说明,请参阅 OIDC 多租户指南的 配置租户路径 部分。

环境变量:QUARKUS_OIDC_TENANT_PATHS

显示更多

字符串列表

quarkus.oidc."tenant".public-key

用于本地 JWT 令牌验证的公钥。设置此属性时不会创建 OIDC 服务器连接。

环境变量:QUARKUS_OIDC_PUBLIC_KEY

显示更多

字符串

quarkus.oidc."tenant".allow-token-introspection-cache

允许缓存令牌内省数据。请注意,启用此属性不会启用缓存本身,而只是允许缓存给定租户的令牌内省。如果可以使用默认令牌缓存,请参阅 OidcConfig.TokenCache 以启用它。

环境变量:QUARKUS_OIDC_ALLOW_TOKEN_INTROSPECTION_CACHE

显示更多

布尔值

true

quarkus.oidc."tenant".allow-user-info-cache

允许缓存用户信息数据。请注意,启用此属性不会启用缓存本身,而只是允许缓存给定租户的用户信息数据。如果可以使用默认令牌缓存,请参阅 OidcConfig.TokenCache 以启用它。

环境变量:QUARKUS_OIDC_ALLOW_USER_INFO_CACHE

显示更多

布尔值

true

quarkus.oidc."tenant".cache-user-info-in-idtoken

允许将 UserInfo 内联到 IdToken 中,而不是将其缓存在令牌缓存中。仅当 OAuth2 提供程序不返回 IdToken 时生成内部 IdToken 时,才会检查此属性。将 UserInfo 内联到生成的 IdToken 中允许将其存储在会话 Cookie 中,并避免引入缓存状态。

如果会话 Cookie 已加密并且 UserInfo 缓存未启用,或者使用 allow-user-info-cache 属性设置为 false 为当前租户禁用缓存 UserInfo,则启用将 UserInfo 内联到生成的 IdToken 中。

环境变量:QUARKUS_OIDC_CACHE_USER_INFO_IN_IDTOKEN

显示更多

布尔值

quarkus.oidc."tenant".provider

著名的 OpenId Connect 提供程序标识符

环境变量:QUARKUS_OIDC_PROVIDER

显示更多

applediscordfacebookgithubgooglelinkedinmastodonmicrosoftslackspotifystravatwitchtwitterx

OIDC Dev UI 配置(仅在开发模式下有效)

类型

默认

将用于获取令牌以测试 OIDC “服务”应用程序的授权类型

环境变量:QUARKUS_OIDC_DEVUI_GRANT_TYPE

显示更多

client'client_credentials' 授权, password'password' 授权, code'authorization_code' 授权, implicit'implicit' 授权

授权选项

环境变量:QUARKUS_OIDC_DEVUI_GRANT_OPTIONS__OPTION_NAME_

显示更多

Map<String,Map<String,String>>

WebClient 超时。使用此属性配置 Dev UI 处理程序使用的 HTTP 客户端在从 OpenId Connect 提供程序请求令牌并将其发送到服务端点时等待响应的时间。

环境变量:QUARKUS_OIDC_DEVUI_WEB_CLIENT_TIMEOUT

显示更多

Duration 

4S

HTTP 代理配置

类型

默认

quarkus.oidc."tenant".proxy.host

代理的主机名或 IP 地址。
注意:如果 OIDC 适配器需要代理才能与 OIDC 服务器(提供程序)通信,请设置此值以启用代理的使用。

环境变量:QUARKUS_OIDC_PROXY_HOST

显示更多

字符串

quarkus.oidc."tenant".proxy.port

代理的端口号。默认值为 80

环境变量:QUARKUS_OIDC_PROXY_PORT

显示更多

整数

80

quarkus.oidc."tenant".proxy.username

用户名(如果代理需要身份验证)。

环境变量:QUARKUS_OIDC_PROXY_USERNAME

显示更多

字符串

quarkus.oidc."tenant".proxy.password

密码(如果代理需要身份验证)。

环境变量:QUARKUS_OIDC_PROXY_PASSWORD

显示更多

字符串

TLS 配置

类型

默认

quarkus.oidc."tenant".tls.tls-configuration-name

要使用的 TLS 配置的名称。

如果配置了名称,它将使用来自 quarkus.tls.<name>.* 的配置。如果配置了名称,但找不到具有该名称的 TLS 配置,则将引发错误。

默认情况下,使用默认 TLS 配置。

环境变量:QUARKUS_OIDC_TLS_TLS_CONFIGURATION_NAME

显示更多

字符串

OIDC 客户端访问 OIDC 令牌和其他安全端点的不同身份验证选项

类型

默认

quarkus.oidc."tenant".credentials.secret

client_secret_basic 身份验证方法使用的客户端密钥。除非在 client-secret 中设置了密钥或需要 jwt 客户端身份验证,否则必须设置。您可以使用 client-secret.value 代替,但这两个属性是互斥的。

环境变量:QUARKUS_OIDC_CREDENTIALS_SECRET

显示更多

字符串

quarkus.oidc."tenant".credentials.client-secret.value

客户端密钥值。如果设置了 credentials.secret,则忽略此值。除非在 client-secret 中设置了密钥或需要 jwt 客户端身份验证,否则必须设置。

环境变量:QUARKUS_OIDC_CREDENTIALS_CLIENT_SECRET_VALUE

显示更多

字符串

quarkus.oidc."tenant".credentials.client-secret.provider.name

CredentialsProvider bean 名称,只有在注册了多个 CredentialsProvider 时才应设置

环境变量:QUARKUS_OIDC_CREDENTIALS_CLIENT_SECRET_PROVIDER_NAME

显示更多

字符串

quarkus.oidc."tenant".credentials.client-secret.provider.keyring-name

CredentialsProvider 密钥环名称。只有在使用中的 CredentialsProvider 需要密钥环名称来查找密钥时才需要密钥环名称,当多个扩展共享 CredentialsProvider 以从更动态的源(如 vault 实例或密钥管理器)检索凭据时,通常是这种情况

环境变量:QUARKUS_OIDC_CREDENTIALS_CLIENT_SECRET_PROVIDER_KEYRING_NAME

显示更多

字符串

quarkus.oidc."tenant".credentials.client-secret.provider.key

CredentialsProvider 客户端密钥

环境变量:QUARKUS_OIDC_CREDENTIALS_CLIENT_SECRET_PROVIDER_KEY

显示更多

字符串

quarkus.oidc."tenant".credentials.client-secret.method

身份验证方法。如果设置了 clientSecret.value 密钥,则此方法默认为 basic

环境变量:QUARKUS_OIDC_CREDENTIALS_CLIENT_SECRET_METHOD

显示更多

basicclient_secret_basic(默认):客户端 ID 和密钥使用 HTTP Authorization Basic 方案提交。, postclient_secret_post:客户端 ID 和密钥作为 client_idclient_secret 表单参数提交。, post-jwtclient_secret_jwt:客户端 ID 和生成的 JWT 密钥作为 client_idclient_secret 表单参数提交。, query客户端 ID 和密钥作为 HTTP 查询参数提交。此选项仅受 OIDC 扩展支持。

quarkus.oidc."tenant".credentials.jwt.source

JWT 令牌源:OIDC 提供程序客户端或现有 JWT 持有者令牌。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_SOURCE

显示更多

clientJWT 令牌由 OIDC 提供程序客户端生成,以支持 client_secret_jwtprivate_key_jwt 身份验证方法。, bearerJWT 持有者令牌用作客户端断言:https\://www.rfc-editor.org/rfc/rfc7523#section-2.2。

clientJWT 令牌由 OIDC 提供程序客户端生成,以支持 client_secret_jwtprivate_key_jwt 身份验证方法。

quarkus.oidc."tenant".credentials.jwt.token-path

包含 JWT 持有者令牌的文件的路径,该令牌应用作客户端断言。仅当 JWT 源 (source()) 设置为 Source#BEARER 时,才能设置此路径。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_TOKEN_PATH

显示更多

path

quarkus.oidc."tenant".credentials.jwt.secret

如果提供,则表示 JWT 使用密钥签名。它与 keykey-filekey-store 属性互斥。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_SECRET

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.secret-provider.name

CredentialsProvider bean 名称,只有在注册了多个 CredentialsProvider 时才应设置

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_SECRET_PROVIDER_NAME

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.secret-provider.keyring-name

CredentialsProvider 密钥环名称。只有在使用中的 CredentialsProvider 需要密钥环名称来查找密钥时才需要密钥环名称,当多个扩展共享 CredentialsProvider 以从更动态的源(如 vault 实例或密钥管理器)检索凭据时,通常是这种情况

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_SECRET_PROVIDER_KEYRING_NAME

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.secret-provider.key

CredentialsProvider 客户端密钥

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_SECRET_PROVIDER_KEY

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.key

私钥的字符串表示形式。如果提供,则表示 JWT 使用 PEM 或 JWK 格式的私钥签名。它与 secretkey-filekey-store 属性互斥。您可以使用 signature-algorithm 属性来覆盖默认密钥算法 RS256

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_KEY

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.key-file

如果提供,则表示 JWT 使用 PEM 或 JWK 格式的私钥签名。它与 secretkeykey-store 属性互斥。您可以使用 signature-algorithm 属性来覆盖默认密钥算法 RS256

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_KEY_FILE

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.key-store-file

如果提供,则表示 JWT 使用密钥库中的私钥签名。它与 secretkeykey-file 属性互斥。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_KEY_STORE_FILE

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.key-store-password

用于指定密钥库文件密码的参数。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_KEY_STORE_PASSWORD

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.key-id

私钥 ID 或别名。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_KEY_ID

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.key-password

私钥密码。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_KEY_PASSWORD

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.audience

JWT 受众 (aud) 声明值。默认情况下,受众设置为 OpenId Connect 提供程序的令牌端点的地址。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_AUDIENCE

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.token-key-id

作为 JWT kid 标头添加的签名密钥的密钥标识符。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_TOKEN_KEY_ID

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.issuer

作为 JWT iss 声明添加的签名密钥的颁发者。默认值为客户端 ID。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_ISSUER

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.subject

作为 JWT sub 声明添加的签名密钥的主题。默认值为客户端 ID。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_SUBJECT

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.claims."claim-name"

其他声明。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_CLAIMS__CLAIM_NAME_

显示更多

Map<String,String>

quarkus.oidc."tenant".credentials.jwt.signature-algorithm

用于 key-file 属性的签名算法。支持的值:RS256(默认)、RS384RS512PS256PS384PS512ES256ES384ES512HS256HS384HS512

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_SIGNATURE_ALGORITHM

显示更多

字符串

quarkus.oidc."tenant".credentials.jwt.lifespan

JWT 生存期(以秒为单位)。此值添加到 JWT 颁发的时间,以计算到期时间。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_LIFESPAN

显示更多

整数

10

quarkus.oidc."tenant".credentials.jwt.assertion

如果为 true,则客户端身份验证令牌是 JWT 持有者授权断言。将仅生成 'assertion',而不是生成 'client_assertion' 和 'client_assertion_type' 表单属性。此选项仅受 OIDC 客户端扩展支持。

环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_ASSERTION

显示更多

布尔值

false

可选的自省端点特定基本身份验证配置

类型

默认

quarkus.oidc."tenant".introspection-credentials.name

名称

环境变量:QUARKUS_OIDC_INTROSPECTION_CREDENTIALS_NAME

显示更多

字符串

quarkus.oidc."tenant".introspection-credentials.secret

密钥

环境变量:QUARKUS_OIDC_INTROSPECTION_CREDENTIALS_SECRET

显示更多

字符串

quarkus.oidc."tenant".introspection-credentials.include-client-id

包括使用 quarkus.oidc.client-id 配置的 OpenId Connect 客户端 ID。

环境变量:QUARKUS_OIDC_INTROSPECTION_CREDENTIALS_INCLUDE_CLIENT_ID

显示更多

布尔值

true

用于查找和解析包含角色的自定义声明的配置

类型

默认

quarkus.oidc."tenant".roles.role-claim-path

包含组数组的声明路径列表。每个路径都从顶级 JWT JSON 对象开始,并且可以包含多个段。每个段仅表示一个 JSON 对象名称;例如:"realm/groups"。将命名空间限定的声明名称用双引号引起来。如果令牌没有 groups 声明,但在一个或多个不同的声明中设置了组,则可以使用此属性。

环境变量:QUARKUS_OIDC_ROLES_ROLE_CLAIM_PATH

显示更多

字符串列表

quarkus.oidc."tenant".roles.role-claim-separator

用于拆分包含多个组值的字符串的分隔符。仅当 "role-claim-path" 属性指向一个或多个值为字符串的自定义声明时才使用它。默认情况下使用单个空格,因为标准 scope 声明可以包含空格分隔的序列。

环境变量:QUARKUS_OIDC_ROLES_ROLE_CLAIM_SEPARATOR

显示更多

字符串

quarkus.oidc."tenant".roles.source

主体角色的来源。

环境变量:QUARKUS_OIDC_ROLES_SOURCE

显示更多

idtokenID 令牌 - web-app 应用程序的默认值。, accesstoken访问令牌 - service 应用程序的默认值;也可以用作 web-app 应用程序的角色来源。, userinfo用户信息

用于自定义令牌声明验证的配置

类型

默认

quarkus.oidc."tenant".token.issuer

预期的颁发者 iss 声明值。此属性会覆盖 issuer 属性,该属性可能在 OpenId Connect 提供商的知名配置中设置。如果 iss 声明值根据提供商的主机、IP 地址或租户 ID 而变化,则可以通过将此属性设置为 any 来跳过颁发者验证,但只有在其他选项(例如,配置提供商以使用固定的 iss 声明值)不可能时才应这样做。

环境变量:QUARKUS_OIDC_TOKEN_ISSUER

显示更多

字符串

quarkus.oidc."tenant".token.audience

预期的受众 aud 声明值,可以是字符串或字符串数组。请注意,默认情况下会为 ID 令牌验证受众声明。ID 令牌受众必须等于 quarkus.oidc.client-id 属性的值。如果您的 OpenID Connect 提供商在 ID 令牌中设置了不同的受众声明值,请使用此属性覆盖预期值。如果您的提供商未设置 ID 令牌受众声明,则将其设置为 any。只有在此属性配置后,才会对访问令牌进行受众验证。

环境变量:QUARKUS_OIDC_TOKEN_AUDIENCE

显示更多

字符串列表

quarkus.oidc."tenant".token.subject-required

要求令牌包含 sub(主题)声明,该声明是当前用户的唯一且永不重新分配的标识符。请注意,如果您启用此属性并且还需要 UserInfo,则令牌和 UserInfo sub 声明都必须存在并且彼此匹配。

环境变量:QUARKUS_OIDC_TOKEN_SUBJECT_REQUIRED

显示更多

布尔值

false

quarkus.oidc."tenant".token.required-claims."claim-name"

所需声明及其预期值的映射。例如,quarkus.oidc.token.required-claims.org_id = org_xyz 将要求令牌具有 org_id 声明,并且设置为 org_xyz。另一方面,如果将其设置为 org_xyz,org_abc,则 org_id 声明需要同时具有 org_xyzorg_abc 值。字符串和字符串数组是当前唯一支持的类型。使用 SecurityIdentityAugmentor 验证其他类型的声明或复杂的声明。

环境变量:QUARKUS_OIDC_TOKEN_REQUIRED_CLAIMS__CLAIM_NAME_

显示更多

Map<String,Set<String>>

quarkus.oidc."tenant".token.token-type

预期令牌类型

环境变量:QUARKUS_OIDC_TOKEN_TOKEN_TYPE

显示更多

字符串

quarkus.oidc."tenant".token.lifespan-grace

生命周期宽限期(秒)。在检查令牌过期时,允许当前时间最多比令牌过期时间晚配置的秒数。在检查令牌颁发时,允许当前时间最多比令牌颁发时间早配置的秒数。

环境变量:QUARKUS_OIDC_TOKEN_LIFESPAN_GRACE

显示更多

整数

quarkus.oidc."tenant".token.age

令牌有效期。它允许指定自 iat(颁发于)时间以来不得经过的秒数。一个小小的余地用于解释时钟偏差,可以使用 quarkus.oidc.token.lifespan-grace 配置以验证令牌过期时间,也可以用于验证令牌有效期属性。请注意,设置此属性不会放宽 Bearer 和 Code Flow JWT 令牌必须具有有效 (exp) 过期声明值的要求。设置此属性放宽要求的唯一例外是,当注销令牌随后端通道注销请求一起发送时,因为当前的 OpenId Connect 后端通道规范未明确要求注销令牌包含 exp 声明。但是,即使允许当前的注销令牌没有 exp 声明,如果注销令牌包含 exp 声明,仍然会对其进行验证。

环境变量:QUARKUS_OIDC_TOKEN_AGE

显示更多

Duration 

quarkus.oidc."tenant".token.issued-at-required

要求令牌包含 iat(颁发于)声明。如果您的 JWT 令牌不包含 iat(颁发于)声明,请将此属性设置为 false。请注意,ID 令牌始终需要具有 iat 声明,因此此属性对 ID 令牌验证过程没有影响。

环境变量:QUARKUS_OIDC_TOKEN_ISSUED_AT_REQUIRED

显示更多

布尔值

true

quarkus.oidc."tenant".token.principal-claim

包含主体名称的声明名称。默认情况下,会检查 upnpreferred_usernamesub 声明。

环境变量:QUARKUS_OIDC_TOKEN_PRINCIPAL_CLAIM

显示更多

字符串

quarkus.oidc."tenant".token.refresh-expired

刷新过期的授权代码流 ID 或访问令牌。如果启用此属性,则在授权代码 ID 或访问令牌已过期时执行刷新令牌请求,并且如果成功,则使用新的令牌集更新本地会话。否则,本地会话将失效,并且用户将被重定向到 OpenID 提供商以重新进行身份验证。在这种情况下,如果 OIDC 提供商会话仍然处于活动状态,则可能不会再次质询用户。要使此选项生效,还应将 authentication.session-age-extension 属性设置为非零值,因为刷新令牌当前保存在用户会话中。仅当应用程序类型为 ApplicationType#WEB_APP 时,此选项才有效。如果配置了 quarkus.oidc.token.refresh-token-time-skew,则启用此属性,在这种情况下,您无需手动启用此属性。

环境变量:QUARKUS_OIDC_TOKEN_REFRESH_EXPIRED

显示更多

布尔值

false

quarkus.oidc."tenant".token.refresh-token-time-skew

刷新令牌时间偏差,以秒为单位。如果启用此属性,则在检查是否应刷新授权代码 ID 或访问令牌时,会将配置的秒数添加到当前时间。如果总和大于授权代码 ID 或访问令牌的过期时间,则将进行刷新。

环境变量:QUARKUS_OIDC_TOKEN_REFRESH_TOKEN_TIME_SKEW

显示更多

Duration 

quarkus.oidc."tenant".token.forced-jwk-refresh-interval

强制 JWK 集刷新间隔,以分钟为单位。

环境变量:QUARKUS_OIDC_TOKEN_FORCED_JWK_REFRESH_INTERVAL

显示更多

Duration 

10M

quarkus.oidc."tenant".token.header

包含承载令牌的自定义 HTTP 标头。仅当应用程序类型为 ApplicationType#SERVICE 时,此选项才有效。

环境变量:QUARKUS_OIDC_TOKEN_HEADER

显示更多

字符串

quarkus.oidc."tenant".token.authorization-scheme

HTTP 授权标头方案。

环境变量:QUARKUS_OIDC_TOKEN_AUTHORIZATION_SCHEME

显示更多

字符串

承载

quarkus.oidc."tenant".token.signature-algorithm

所需的签名算法。OIDC 提供商支持许多签名算法,但如果需要,您可以限制 Quarkus 应用程序仅接受使用使用此属性配置的算法签名的令牌。

环境变量:QUARKUS_OIDC_TOKEN_SIGNATURE_ALGORITHM

显示更多

rs256, rs384, rs512, ps256, ps384, ps512, es256, es384, es512, eddsa

quarkus.oidc."tenant".token.decryption-key-location

加密的 ID 和访问令牌的解密密钥位置。

环境变量:QUARKUS_OIDC_TOKEN_DECRYPTION_KEY_LOCATION

显示更多

字符串

quarkus.oidc."tenant".token.decrypt-id-token

解密 ID 令牌。如果配置了 Token#decryptionKeyLocation() 属性,则将从此位置加载解密密钥。否则,如果 JWT 身份验证令牌密钥可用,则将使用它来解密令牌。最后,如果配置了客户端密钥,则将其用作解密令牌的密钥。

环境变量:QUARKUS_OIDC_TOKEN_DECRYPT_ID_TOKEN

显示更多

布尔值

quarkus.oidc."tenant".token.decrypt-access-token

解密访问令牌。如果配置了 Token#decryptionKeyLocation() 属性,则将从此位置加载解密密钥。否则,如果 JWT 身份验证令牌密钥可用,则将使用它来解密令牌。最后,如果配置了客户端密钥,则将其用作解密令牌的密钥。

环境变量:QUARKUS_OIDC_TOKEN_DECRYPT_ACCESS_TOKEN

显示更多

布尔值

false

quarkus.oidc."tenant".token.allow-jwt-introspection

当没有匹配的 JWK 密钥可用时,允许远程自省 JWT 令牌。出于向后兼容性的原因,默认情况下此属性设置为 true。计划在即将发布的版本中将此默认值更改为 false。另请注意,如果 JWK 端点 URI 不可用并且自省令牌是唯一的验证选项,则会忽略此属性。

环境变量:QUARKUS_OIDC_TOKEN_ALLOW_JWT_INTROSPECTION

显示更多

布尔值

true

quarkus.oidc."tenant".token.require-jwt-introspection-only

要求 JWT 令牌仅在远程自省。

环境变量:QUARKUS_OIDC_TOKEN_REQUIRE_JWT_INTROSPECTION_ONLY

显示更多

布尔值

false

quarkus.oidc."tenant".token.allow-opaque-token-introspection

允许远程自省不透明令牌。如果仅需要 JWT 令牌,请将此属性设置为 false

环境变量:QUARKUS_OIDC_TOKEN_ALLOW_OPAQUE_TOKEN_INTROSPECTION

显示更多

布尔值

true

quarkus.oidc."tenant".token.customizer-name

令牌定制器名称。允许选择租户特定的令牌定制器作为命名 bean。注册自定义 TokenCustomizer 时,首选使用 TenantFeature 限定符。仅使用此属性来引用此扩展提供的 TokenCustomizer 实现。

环境变量:QUARKUS_OIDC_TOKEN_CUSTOMIZER_NAME

显示更多

字符串

quarkus.oidc."tenant".token.verify-access-token-with-user-info

通过使用不透明(二进制)访问令牌请求 UserInfo 来间接验证该令牌是否有效。如果不透明访问令牌被提供商接受并且返回了有效的 UserInfo,则认为该令牌有效。仅当必须接受不透明访问令牌但 OpenId Connect 提供商没有令牌自省端点时,才应启用此选项。当必须验证 JWT 令牌时,此属性无效。

环境变量:QUARKUS_OIDC_TOKEN_VERIFY_ACCESS_TOKEN_WITH_USER_INFO

显示更多

布尔值

false

quarkus.oidc."tenant".token.binding.certificate

承载访问令牌是否必须绑定到客户端 mTLS 证书。它要求 JWT 令牌必须包含确认 cnf 声明,该声明具有与客户端 mTLS 证书的 SHA256 证书指纹匹配的 SHA256 证书指纹。

对于不透明令牌,SHA256 证书指纹必须在其自省响应中返回。

环境变量:QUARKUS_OIDC_TOKEN_BINDING_CERTIFICATE

显示更多

布尔值

false

RP 发起、后端通道和前端通道注销配置

类型

默认

quarkus.oidc."tenant".logout.path

应用程序中注销端点的相对路径。如果提供此路径,则应用程序可以按照 OpenID Connect RP 发起注销规范通过此端点启动注销。

环境变量:QUARKUS_OIDC_LOGOUT_PATH

显示更多

字符串

quarkus.oidc."tenant".logout.post-logout-path

从 OpenID Connect 提供商注销后,应将用户重定向到的应用程序端点的相对路径。此端点 URI 必须在 OpenID Connect 提供商处正确注册为有效的重定向 URI。

环境变量:QUARKUS_OIDC_LOGOUT_POST_LOGOUT_PATH

显示更多

字符串

quarkus.oidc."tenant".logout.post-logout-uri-param

作为查询参数添加到注销重定向 URI 的发布注销 URI 参数的名称。

环境变量:QUARKUS_OIDC_LOGOUT_POST_LOGOUT_URI_PARAM

显示更多

字符串

post_logout_redirect_uri

quarkus.oidc."tenant".logout.extra-params."query-parameter-name"

作为查询参数添加到注销重定向 URI 的其他属性。

环境变量:QUARKUS_OIDC_LOGOUT_EXTRA_PARAMS__QUERY_PARAMETER_NAME_

显示更多

Map<String,String>

quarkus.oidc."tenant".logout.backchannel.path

应用程序中后端通道注销端点的相对路径。它必须以正斜杠 '/' 开头,例如 '/back-channel-logout'。此值始终相对于 'quarkus.http.root-path' 解析。

环境变量:QUARKUS_OIDC_LOGOUT_BACKCHANNEL_PATH

显示更多

字符串

quarkus.oidc."tenant".logout.backchannel.token-cache-size

注销令牌在与会话 Cookie 中存储的 ID 令牌匹配之前可以缓存的最大数量。

环境变量:QUARKUS_OIDC_LOGOUT_BACKCHANNEL_TOKEN_CACHE_SIZE

显示更多

整数

10

quarkus.oidc."tenant".logout.backchannel.token-cache-time-to-live

注销令牌可以缓存的分钟数。

环境变量:QUARKUS_OIDC_LOGOUT_BACKCHANNEL_TOKEN_CACHE_TIME_TO_LIVE

显示更多

Duration 

10M

quarkus.oidc."tenant".logout.backchannel.clean-up-timer-interval

令牌缓存计时器间隔。如果设置了此属性,则计时器会定期检查并删除过时的条目。

环境变量:QUARKUS_OIDC_LOGOUT_BACKCHANNEL_CLEAN_UP_TIMER_INTERVAL

显示更多

Duration 

quarkus.oidc."tenant".logout.backchannel.logout-token-key

注销令牌声明,其值用作缓存令牌的键。只有 sub(主题)和 sid(会话 ID)声明可以用作键。仅当 OIDC 提供商颁发的 ID 令牌没有 sub 但具有 sid 声明时,才将其设置为 sid

环境变量:QUARKUS_OIDC_LOGOUT_BACKCHANNEL_LOGOUT_TOKEN_KEY

显示更多

字符串

sub

quarkus.oidc."tenant".logout.frontchannel.path

应用程序中前端通道注销端点的相对路径。

环境变量:QUARKUS_OIDC_LOGOUT_FRONTCHANNEL_PATH

显示更多

字符串

quarkus.oidc."tenant".logout.clear-site-data

Clear-Site-Data 标头指令

环境变量:QUARKUS_OIDC_LOGOUT_CLEAR_SITE_DATA

显示更多

cache, client-hints, cookies, execution-contexts, storage, wildcard 列表

可用于验证令牌的证书链的配置

类型

默认

quarkus.oidc."tenant".certificate-chain.leaf-certificate-name

叶证书的通用名称。如果 trust-store-file 没有导入此证书,则必须设置它。

环境变量:QUARKUS_OIDC_CERTIFICATE_CHAIN_LEAF_CERTIFICATE_NAME

显示更多

字符串

quarkus.oidc."tenant".certificate-chain.trust-store-file

信任存储文件,用于保存受信任证书的指纹。

环境变量:QUARKUS_OIDC_CERTIFICATE_CHAIN_TRUST_STORE_FILE

显示更多

path

quarkus.oidc."tenant".certificate-chain.trust-store-password

用于指定信任存储文件密码的参数(如果使用 trust-store-file 配置)。

环境变量:QUARKUS_OIDC_CERTIFICATE_CHAIN_TRUST_STORE_PASSWORD

显示更多

字符串

quarkus.oidc."tenant".certificate-chain.trust-store-cert-alias

用于指定信任存储证书别名的参数。

环境变量:QUARKUS_OIDC_CERTIFICATE_CHAIN_TRUST_STORE_CERT_ALIAS

显示更多

字符串

quarkus.oidc."tenant".certificate-chain.trust-store-file-type

用于指定信任存储文件类型的可选参数。如果未给出,则根据文件名自动检测类型。

环境变量:QUARKUS_OIDC_CERTIFICATE_CHAIN_TRUST_STORE_FILE_TYPE

显示更多

字符串

用于管理授权代码流的配置

类型

默认

quarkus.oidc."tenant".authentication.response-mode

授权代码流响应模式。

环境变量:QUARKUS_OIDC_AUTHENTICATION_RESPONSE_MODE

显示更多

query授权响应参数在添加到 redirect_uri 的查询字符串中编码, form-post授权响应参数编码为 HTML 表单值,这些值在浏览器中自动提交,并通过使用 application/x-www-form-urlencoded 内容类型的 HTTP POST 方法传输

query授权响应参数在添加到 redirect_uri 的查询字符串中编码

quarkus.oidc."tenant".authentication.redirect-path

用于计算 redirect_uri 查询参数的相对路径。它必须从正斜杠开始,并附加到请求 URI 的主机和端口。例如,如果当前请求 URI 是 https://:8080/service,则如果此属性设置为 /redirect_uri 参数将设置为 https://:8080/,如果未配置此属性,则与请求 URI 相同。请注意,如果在 restorePathAfterRedirect 设置为 true,则在用户进行身份验证后,将恢复原始请求 URI。

环境变量:QUARKUS_OIDC_AUTHENTICATION_REDIRECT_PATH

显示更多

字符串

quarkus.oidc."tenant".authentication.restore-path-after-redirect

如果此属性设置为 true,则在用户重定向回应用程序后,将恢复身份验证之前使用的原始请求 URI。请注意,如果未设置 redirectPath 属性,即使禁用此属性,也会恢复原始请求 URI。

环境变量:QUARKUS_OIDC_AUTHENTICATION_RESTORE_PATH_AFTER_REDIRECT

显示更多

布尔值

false

quarkus.oidc."tenant".authentication.remove-redirect-parameters

在用户通过身份验证后,通过将用户重定向到相同的 URI 但不带查询参数,来删除 OIDC 服务器在重定向 URI 上设置的查询参数,例如 codestate

环境变量:QUARKUS_OIDC_AUTHENTICATION_REMOVE_REDIRECT_PARAMETERS

显示更多

布尔值

true

quarkus.oidc."tenant".authentication.error-path

处理来自 OIDC 授权端点的错误响应的公共端点的相对路径。如果用户身份验证失败,则 OIDC 提供商返回一个 error 和一个可选的 error_description 参数,而不是预期的授权 code。如果设置了此属性,则将用户重定向到可以返回用户友好的错误描述页面的端点。它必须从正斜杠开始,并附加到请求 URI 的主机和端口。例如,如果将其设置为 /error,并且当前请求 URI 为 https://:8080/callback?error=invalid_scope,则会重定向到 https://:8080/error?error=invalid_scope。如果未设置此属性,则在用户身份验证失败的情况下返回 HTTP 401 状态。

环境变量:QUARKUS_OIDC_AUTHENTICATION_ERROR_PATH

显示更多

字符串

quarkus.oidc."tenant".authentication.session-expired-path

身份验证用户的会话过期时重定向到的公共端点的相对路径。

当 OIDC 会话已过期且无法刷新会话时,会将用户重定向到 OIDC 提供商以重新进行身份验证。在这种情况下,用户体验可能并不理想,因为已通过身份验证的用户可能不清楚为什么返回身份验证质询。

如果您希望会话已过期的用户重定向到应用程序特定的公共页面,而不是重定向到 OIDC 提供商,请设置此属性,该页面可以告知会话已过期并建议用户通过点击链接重新进行身份验证到受保护的初始入口页面。

环境变量:QUARKUS_OIDC_AUTHENTICATION_SESSION_EXPIRED_PATH

显示更多

字符串

quarkus.oidc."tenant".authentication.verify-access-token

ID 令牌和访问令牌都是作为授权代码流的一部分从 OIDC 提供商获取的。

始终在每个用户请求上验证 ID 令牌,作为用于表示主体和提取角色的主要令牌。

授权代码流访问令牌旨在传播到下游服务,并且默认情况下不进行验证,除非 quarkus.oidc.roles.source 属性设置为 accesstoken,这意味着授权决策基于从访问令牌提取的角色。

如果此令牌作为 JsonWebToken 注入,也会启用授权代码流访问令牌验证。如果不需要,请将此属性设置为 false

始终验证承载访问令牌。

环境变量:QUARKUS_OIDC_AUTHENTICATION_VERIFY_ACCESS_TOKEN

显示更多

布尔值

当访问令牌作为 JsonWebToken bean 注入时为 true,否则为 false

quarkus.oidc."tenant".authentication.force-redirect-https-scheme

当在 SSL/TLS 终止反向代理后运行时,强制使用 https 作为 redirect_uri 参数方案。如果启用此属性,还会影响注销 post_logout_redirect_uri 和本地重定向请求。

环境变量:QUARKUS_OIDC_AUTHENTICATION_FORCE_REDIRECT_HTTPS_SCHEME

显示更多

布尔值

false

quarkus.oidc."tenant".authentication.scopes

作用域列表

环境变量:QUARKUS_OIDC_AUTHENTICATION_SCOPES

显示更多

字符串列表

quarkus.oidc."tenant".authentication.scope-separator

配置多个作用域时使用的分隔符。默认情况下使用单个空格。

环境变量:QUARKUS_OIDC_AUTHENTICATION_SCOPE_SEPARATOR

显示更多

字符串

quarkus.oidc."tenant".authentication.nonce-required

要求 ID 令牌包含一个 nonce 声明,该声明必须与 nonce 身份验证请求查询参数匹配。启用此属性有助于缓解重放攻击。如果您的 OpenId Connect 提供程序不支持在 ID 令牌中设置 nonce,或者您使用 OAuth2 提供程序(例如不颁发 ID 令牌的 GitHub),请勿启用此属性。

环境变量:QUARKUS_OIDC_AUTHENTICATION_NONCE_REQUIRED

显示更多

布尔值

false

quarkus.oidc."tenant".authentication.add-openid-scope

自动将 openid 作用域添加到作用域列表中。这是 OpenId Connect 提供程序所必需的,但不适用于 OAuth2 提供程序(例如 Twitter OAuth2),这些提供程序不接受此作用域并抛出错误。

环境变量:QUARKUS_OIDC_AUTHENTICATION_ADD_OPENID_SCOPE

显示更多

布尔值

true

quarkus.oidc."tenant".authentication.extra-params."parameter-name"

作为查询参数添加到身份验证重定向 URI 的其他属性。

环境变量:QUARKUS_OIDC_AUTHENTICATION_EXTRA_PARAMS__PARAMETER_NAME_

显示更多

Map<String,String>

quarkus.oidc."tenant".authentication.forward-params

如果存在,则添加到身份验证重定向 URI 的请求 URL 查询参数。

环境变量:QUARKUS_OIDC_AUTHENTICATION_FORWARD_PARAMS

显示更多

字符串列表

quarkus.oidc."tenant".authentication.cookie-force-secure

如果启用,则在使用 HTTP 时,状态、会话和注销后 Cookie 的 secure 参数设置为 true。在 SSL/TLS 终止反向代理后运行时可能需要这样做。如果使用 HTTPS,则 Cookie 始终是安全的,即使此属性设置为 false。

环境变量:QUARKUS_OIDC_AUTHENTICATION_COOKIE_FORCE_SECURE

显示更多

布尔值

false

quarkus.oidc."tenant".authentication.cookie-suffix

Cookie 名称后缀。例如,默认 OIDC 租户的会话 Cookie 名称为 q_session,但如果此属性设置为 test,则可以更改为 q_session_test

环境变量:QUARKUS_OIDC_AUTHENTICATION_COOKIE_SUFFIX

显示更多

字符串

quarkus.oidc."tenant".authentication.cookie-path

Cookie 路径参数值,如果设置,则用于为会话、状态和注销后 Cookie 设置路径参数。如果设置了 cookie-path-header 属性,则首先检查该属性。

环境变量:QUARKUS_OIDC_AUTHENTICATION_COOKIE_PATH

显示更多

字符串

/

quarkus.oidc."tenant".authentication.cookie-path-header

Cookie 路径标头参数值,如果设置,则标识传入的 HTTP 标头,其值用于为会话、状态和注销后 Cookie 设置路径参数。如果缺少标头,则检查 cookie-path 属性。

环境变量:QUARKUS_OIDC_AUTHENTICATION_COOKIE_PATH_HEADER

显示更多

字符串

quarkus.oidc."tenant".authentication.cookie-domain

Cookie 域参数值,如果设置,则用于会话、状态和注销后 Cookie。

环境变量:QUARKUS_OIDC_AUTHENTICATION_COOKIE_DOMAIN

显示更多

字符串

quarkus.oidc."tenant".authentication.cookie-same-site

会话 Cookie 的 SameSite 属性。

环境变量:QUARKUS_OIDC_AUTHENTICATION_COOKIE_SAME_SITE

显示更多

strict, lax, none

lax

quarkus.oidc."tenant".authentication.allow-multiple-code-flows

如果存在状态 Cookie,则还必须存在 state 查询参数,并且当重定向路径与当前路径匹配时,状态 Cookie 名称后缀和状态 Cookie 值都必须与 state 查询参数的值匹配。但是,如果从同一浏览器尝试多个身份验证,例如,从不同的浏览器选项卡,则当前可用的状态 Cookie 可能表示从另一个选项卡发起的身份验证流程,与当前请求无关。禁用此属性以仅允许在同一浏览器中使用单个授权代码流。

环境变量:QUARKUS_OIDC_AUTHENTICATION_ALLOW_MULTIPLE_CODE_FLOWS

显示更多

布尔值

true

quarkus.oidc."tenant".authentication.fail-on-missing-state-param

如果存在状态 Cookie 但不存在状态查询参数,则返回 HTTP 401 错误。

当禁用多个身份验证或重定向 URL 与原始请求 URL 匹配时,陈旧的状态 Cookie 可能会保留在浏览器缓存中,从而导致较早的重定向到 OpenId Connect 提供程序失败,并在当前请求期间可见。例如,如果单页应用程序 (SPA) 使用 XHR 来处理到提供程序的重定向,而该提供程序不支持其授权端点的 CORS,则浏览器会阻止该请求,并且 Quarkus 创建的状态 Cookie 会保留在浏览器缓存中。当 Quarkus 检测到此类旧状态 Cookie 但找不到匹配的状态查询参数时,Quarkus 会报告身份验证失败。

在这些情况下,报告 HTTP 401 错误通常是正确的做法,它可以最大限度地降低浏览器重定向循环的风险,但也可以识别 SPA 或 Quarkus 应用程序管理重定向的方式中的问题。例如,可能需要启用 java-script-auto-redirect 或让提供程序重定向到使用 redirect-path 配置的 URL,以避免此类错误。

但是,如果以上选项不合适,则将此属性设置为 false 可能会有所帮助。这会导致新的身份验证重定向到 OpenId Connect 提供程序。这样做可能会增加浏览器重定向循环的风险。

环境变量:QUARKUS_OIDC_AUTHENTICATION_FAIL_ON_MISSING_STATE_PARAM

显示更多

布尔值

false

quarkus.oidc."tenant".authentication.fail-on-unresolved-kid

如果在重新身份验证期间仅由于无法解析的令牌密钥标识符 (kid) 而无法验证 ID 令牌签名,则返回 HTTP 401 错误。

当允许多个选项卡身份验证时,可能需要禁用此属性,其中一个选项卡保留一个过期的 ID 令牌,由于另一个选项卡启动了授权代码流而刷新了验证密钥集,因此其 kid 无法解析。在这种情况下,与其返回 HTTP 401 错误,不如将用户重定向以使用 HTTP 302 状态重新身份验证可能会提供更好的用户体验。

环境变量:QUARKUS_OIDC_AUTHENTICATION_FAIL_ON_UNRESOLVED_KID

显示更多

布尔值

true

quarkus.oidc."tenant".authentication.user-info-required

如果此属性设置为 true,则会调用 OIDC UserInfo 端点。

如果 quarkus.oidc.roles.source 设置为 userinfoquarkus.oidc.token.verify-access-token-with-user-info 设置为 truequarkus.oidc.authentication.id-token-required 设置为 false,则会自动启用此属性,在这种情况下,当前 OIDC 租户必须支持 UserInfo 端点。

如果检测到 io.quarkus.oidc.UserInfo 注入点,也会自动启用此属性,但前提是当前 OIDC 租户支持 UserInfo 端点。

环境变量:QUARKUS_OIDC_AUTHENTICATION_USER_INFO_REQUIRED

显示更多

布尔值

当注入 UserInfo bean 时为 true,否则为 false

quarkus.oidc."tenant".authentication.session-age-extension

会话年龄延长(分钟)。默认情况下,用户会话年龄属性设置为 ID 令牌生存期的值,并且用户将被重定向到 OIDC 提供程序以重新身份验证,一旦会话过期。如果此属性设置为非零值,则可以在会话过期之前刷新过期的 ID 令牌。如果未启用 token.refresh-expired 属性,则会忽略此属性。

环境变量:QUARKUS_OIDC_AUTHENTICATION_SESSION_AGE_EXTENSION

显示更多

Duration 

5M

quarkus.oidc."tenant".authentication.state-cookie-age

状态 Cookie 生存期(分钟)。每次新的授权代码流重定向开始时都会创建状态 Cookie,并在完成此流时删除状态 Cookie。默认情况下,状态 Cookie 名称是唯一的,请参阅 allow-multiple-code-flows。使其生存期保持合理的最小值,例如 5 分钟或更短。

环境变量:QUARKUS_OIDC_AUTHENTICATION_STATE_COOKIE_AGE

显示更多

Duration 

5M

quarkus.oidc."tenant".authentication.java-script-auto-redirect

如果此属性设置为 true,则如果请求是由 JavaScript API(例如 XMLHttpRequest 或 Fetch)发起的,并且当前用户需要(重新)身份验证,则会返回正常的 302 重定向响应,这对于单页应用程序 (SPA) 来说可能不是理想的,因为鉴于 OIDC 授权端点通常不支持 CORS,因此自动遵循重定向可能不起作用。

如果此属性设置为 false,则会返回状态代码 499,以允许 SPA 在找到将当前请求标识为 JavaScript 请求的请求标头时手动处理重定向。如果启用此属性,则默认情况下应使用 X-Requested-With 请求标头,其值设置为 JavaScriptXMLHttpRequest。您可以注册自定义 JavaScriptRequestChecker 以执行自定义 JavaScript 请求检查。

环境变量:QUARKUS_OIDC_AUTHENTICATION_JAVA_SCRIPT_AUTO_REDIRECT

显示更多

布尔值

true

quarkus.oidc."tenant".authentication.id-token-required

要求在授权代码流完成时 ID 令牌可用。仅当您需要将授权代码流与不返回 ID 令牌的 OAuth2 提供程序一起使用时才禁用此属性 - 在这种情况下会生成内部 IdToken。

环境变量:QUARKUS_OIDC_AUTHENTICATION_ID_TOKEN_REQUIRED

显示更多

布尔值

true

quarkus.oidc."tenant".authentication.internal-id-token-lifespan

内部 ID 令牌生存期。仅当 OAuth2 提供程序不返回 IdToken 时生成内部 IdToken 时才检查此属性。如果未配置此属性,则使用 OAuth2 授权代码流响应中的访问令牌 expires_in 属性来设置内部 IdToken 生存期。

环境变量:QUARKUS_OIDC_AUTHENTICATION_INTERNAL_ID_TOKEN_LIFESPAN

显示更多

Duration 

quarkus.oidc."tenant".authentication.pkce-required

要求使用代码交换的证明密钥 (PKCE)。

环境变量:QUARKUS_OIDC_AUTHENTICATION_PKCE_REQUIRED

显示更多

布尔值

false

quarkus.oidc."tenant".authentication.state-secret

用于加密代码流状态中的代码交换证明密钥 (PKCE) 代码验证程序和/或 nonce 的密钥。此密钥的长度应至少为 32 个字符。

如果未设置此密钥,则检查使用 quarkus.oidc.credentials.secretquarkus.oidc.credentials.client-secret.value 配置的客户端密钥。最后,检查可用于 client_jwt_secret 身份验证的 quarkus.oidc.credentials.jwt.secret。如果客户端密钥的长度小于 32 个字符,则不能将其用作状态加密密钥。

如果在检查所有这些属性后密钥仍未初始化,则会自动生成该密钥。

如果密钥长度小于 16 个字符,则会报告错误。

环境变量:QUARKUS_OIDC_AUTHENTICATION_STATE_SECRET

显示更多

字符串

完成授权代码流授予的配置

类型

默认

quarkus.oidc."tenant".code-grant.extra-params."parameter-name"

除了必需的 coderedirect-uri 参数之外,还必须包含其他参数才能完成授权代码授予请求。

环境变量:QUARKUS_OIDC_CODE_GRANT_EXTRA_PARAMS__PARAMETER_NAME_

显示更多

Map<String,String>

quarkus.oidc."tenant".code-grant.headers."header-name"

必须发送的自定义 HTTP 标头才能完成授权代码授予请求。

环境变量:QUARKUS_OIDC_CODE_GRANT_HEADERS__HEADER_NAME_

显示更多

Map<String,String>

默认令牌状态管理器配置

类型

默认

quarkus.oidc."tenant".token-state-manager.strategy

默认 TokenStateManager 策略。

环境变量:QUARKUS_OIDC_TOKEN_STATE_MANAGER_STRATEGY

显示更多

keep-all-tokens保留 ID、访问和刷新令牌。, id-token仅保留 ID 令牌, id-refresh-tokens仅保留 ID 和刷新令牌

keep-all-tokens保留 ID、访问和刷新令牌。

quarkus.oidc."tenant".token-state-manager.split-tokens

默认情况下,Default TokenStateManager 将授权代码授予响应中返回的所有令牌(ID、访问和刷新)保存在单个会话 Cookie 中。启用此属性以最大限度地减少会话 Cookie 大小

环境变量:QUARKUS_OIDC_TOKEN_STATE_MANAGER_SPLIT_TOKENS

显示更多

布尔值

false

quarkus.oidc."tenant".token-state-manager.encryption-required

强制 Default TokenStateManager 加密存储令牌的会话 Cookie。

环境变量:QUARKUS_OIDC_TOKEN_STATE_MANAGER_ENCRYPTION_REQUIRED

显示更多

布尔值

true

quarkus.oidc."tenant".token-state-manager.encryption-secret

当启用 encryption-required 属性时,Default TokenStateManager 用于加密存储令牌的会话 Cookie 的密钥。

如果未设置此密钥,则检查使用 quarkus.oidc.credentials.secretquarkus.oidc.credentials.client-secret.value 配置的客户端密钥。最后,检查可用于 client_jwt_secret 身份验证的 quarkus.oidc.credentials.jwt.secret。如果在检查所有这些属性后密钥仍未初始化,则每次应用程序启动时都会自动生成该密钥。生成的密钥无法解密重启之前加密的会话 Cookie,因此需要用户重新身份验证。

用于加密令牌的密钥长度应至少为 32 个字符。如果密钥长度小于 16 个字符,则会记录警告。

环境变量:QUARKUS_OIDC_TOKEN_STATE_MANAGER_ENCRYPTION_SECRET

显示更多

字符串

quarkus.oidc."tenant".token-state-manager.encryption-algorithm

会话 Cookie 密钥加密算法

环境变量:QUARKUS_OIDC_TOKEN_STATE_MANAGER_ENCRYPTION_ALGORITHM

显示更多

a256-gcmkw将生成内容加密密钥,并使用 A256GCMKW 算法和配置的加密密钥对其进行加密。生成的内容加密密钥将用于加密会话 Cookie 内容。, dir配置的密钥加密密钥将用作内容加密密钥以加密会话 Cookie 内容。使用直接加密可避免内容加密密钥生成步骤,并使加密的会话 Cookie 序列稍微短一些。如果加密密钥的长度小于 32 个字符,请避免使用直接加密。

a256-gcmkw将生成内容加密密钥,并使用 A256GCMKW 算法和配置的加密密钥对其进行加密。生成的内容加密密钥将用于加密会话 Cookie 内容。

应如何获取和管理 JsonWebKey 验证密钥集

类型

默认

quarkus.oidc."tenant".jwks.resolve-early

JWK 验证密钥是否应在初始化与 OIDC 提供程序的连接时获取。

禁用此属性会将密钥获取延迟到必须验证当前令牌的那一刻。通常,仅当令牌或其他 telated 请求属性提供其他上下文时,才需要正确解析密钥。

环境变量:QUARKUS_OIDC_JWKS_RESOLVE_EARLY

显示更多

布尔值

true

quarkus.oidc."tenant".jwks.cache-size

可以缓存的 JWK 密钥的最大数量。如果将 resolve-early 属性设置为 true,则忽略此属性。

环境变量:QUARKUS_OIDC_JWKS_CACHE_SIZE

显示更多

整数

10

quarkus.oidc."tenant".jwks.cache-time-to-live

JWK 密钥可以缓存的分钟数。如果将 resolve-early 属性设置为 true,则忽略此属性。

环境变量:QUARKUS_OIDC_JWKS_CACHE_TIME_TO_LIVE

显示更多

Duration 

10M

quarkus.oidc."tenant".jwks.clean-up-timer-interval

缓存计时器间隔。如果设置了此属性,则计时器会定期检查并删除过时的条目。如果将 resolve-early 属性设置为 true,则忽略此属性。

环境变量:QUARKUS_OIDC_JWKS_CLEAN_UP_TIMER_INTERVAL

显示更多

Duration 

quarkus.oidc."tenant".jwks.try-all

如果 JOSE 标头中未指定密钥标识符 ('kid') 或证书指纹 ('x5t', 'x5t#S256') 并且无法确定密钥,请检查与令牌算法 ('alg') 标头值匹配的所有可用密钥。

环境变量:QUARKUS_OIDC_JWKS_TRY_ALL

显示更多

布尔值

false

默认 TokenIntrospection 和 UserInfo 缓存配置

类型

默认

最大缓存条目数。如果必须启用缓存,请将其设置为正值。

环境变量:QUARKUS_OIDC_TOKEN_CACHE_MAX_SIZE

显示更多

整数

0

给定缓存条目的最长有效时间。

环境变量:QUARKUS_OIDC_TOKEN_CACHE_TIME_TO_LIVE

显示更多

Duration 

3M

清理计时器间隔。如果设置了此属性,则计时器将定期检查并删除过时的条目。

环境变量:QUARKUS_OIDC_TOKEN_CACHE_CLEAN_UP_TIMER_INTERVAL

显示更多

Duration 

关于 Duration 格式

要编写持续时间值,请使用标准 java.time.Duration 格式。有关更多信息,请参阅 Duration#parse() Java API 文档

您还可以使用简化的格式,以数字开头

  • 如果该值仅为一个数字,则表示以秒为单位的时间。

  • 如果该值是一个数字后跟 ms,则表示以毫秒为单位的时间。

在其他情况下,简化格式将被转换为 java.time.Duration 格式以进行解析

  • 如果该值是一个数字后跟 hms,则在其前面加上 PT

  • 如果该值是一个数字后跟 d,则在其前面加上 P

另请参阅展开的 OIDC 配置参考,以获取有关 OIDC 配置属性及其典型、推荐组合的展开、详细说明。

Keycloak Dev Services 配置

构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖

配置属性

类型

默认

用于启用(默认)或禁用开发服务的标志。启用后,Keycloak 的开发服务会在开发或测试模式下自动配置并启动 Keycloak,并且在 Docker 运行时。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_ENABLED

显示更多

布尔值

true

Dev Services 提供程序的容器镜像名称。默认为基于 Quarkus 的 Keycloak 镜像。对于基于 WildFly 的发行版,请使用类似于 quay.io/keycloak/keycloak:19.0.3-legacy 的镜像。Keycloak Quarkus 和 WildFly 镜像的初始化方式不同。除非镜像版本以 -legacy 结尾,否则 Keycloak 的 Dev Services 将假定它是 Keycloak Quarkus 镜像。使用 quarkus.keycloak.devservices.keycloak-x-image 覆盖。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_IMAGE_NAME

显示更多

字符串

quay.io/keycloak/keycloak:26.2.4

指示是否使用了 Keycloak-X 镜像。默认情况下,该镜像由镜像名称中的 keycloak-x 标识。对于自定义镜像,请使用 quarkus.keycloak.devservices.keycloak-x-image 覆盖。如果默认检查有效,则无需设置此属性。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_KEYCLOAK_X_IMAGE

显示更多

布尔值

确定是否共享 Keycloak 容器。共享时,Quarkus 使用基于标签的服务发现来查找和重用正在运行的 Keycloak 容器,因此不会启动第二个容器。否则,如果未找到匹配的容器,则会启动一个新容器。服务发现使用 quarkus-dev-service-label 标签,其值由 service-name 属性设置。容器共享仅在开发模式下可用。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_SHARED

显示更多

布尔值

true

用于标识 Keycloak 容器的 quarkus-dev-service-keycloak 标签的值。在共享模式下使用以查找具有此标签的现有容器。如果未找到,则使用此标签初始化一个新容器。仅在开发模式下适用。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_SERVICE_NAME

显示更多

字符串

keycloak

Keycloak 域文件的类或文件系统路径的逗号分隔列表。此列表用于初始化 Keycloak。此列表中的第一个值用于初始化默认租户连接属性。

要了解有关 Keycloak 域文件的更多信息,请参阅 导入和导出 Keycloak 域文档

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_REALM_PATH

显示更多

字符串列表

用于初始化 Keycloak 的其他类或文件系统资源的别名。每个映射条目表示别名与类或文件系统资源路径之间的映射。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_RESOURCE_ALIASES__ALIAS_NAME_

显示更多

Map<String,String>

用于初始化 Keycloak 的其他类或文件系统资源。每个映射条目表示类或文件系统资源路径别名与 Keycloak 容器位置之间的映射。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_RESOURCE_MAPPINGS__RESOURCE_NAME_

显示更多

Map<String,String>

传递给 keycloak JVM 的 JAVA_OPTS

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_JAVA_OPTS

显示更多

字符串

显示带有 "Keycloak:" 前缀的 Keycloak 日志消息。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_SHOW_LOGS

显示更多

布尔值

false

Keycloak 启动命令。使用此属性来尝试 Keycloak 启动选项,请参阅 https://keycloak.com.cn/server/all-config。请注意,加载旧版 Keycloak WildFly 镜像时会忽略它。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_START_COMMAND

显示更多

字符串

Keycloak 功能。使用此属性可以启用一个或多个实验性 Keycloak 功能。请注意,如果您还必须自定义 Keycloak start-command(),则可以使用 --features 选项作为启动命令序列的一部分,而不是配置此属性。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_FEATURES

显示更多

字符串列表

Keycloak 域的名称。如果 realm-path 属性指向的域文件不存在,则此属性用于创建域。在这种情况下,默认值为 quarkus。建议始终设置此属性,以便 Keycloak 的 Dev Services 可以识别域名,而无需解析域文件。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_REALM_NAME

显示更多

字符串

指定在 realm-path 中未找到域文件时是否创建 Keycloak 域。如果域要使用 Keycloak 管理控制台或 io.quarkus.test.common.QuarkusTestResourceLifecycleManager 提供的 Keycloak Admin API 创建,则设置为 false

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_CREATE_REALM

显示更多

布尔值

true

指定是否创建具有密钥 secret 的默认客户端 ID quarkus-app,并在 create-realm 属性设置为 true 时注册它们。对于 OIDC 扩展配置属性,将配置 quarkus.oidc.client.idquarkus.oidc.credentials.secret。对于 OIDC Client 扩展配置属性,将配置 quarkus.oidc-client.client.idquarkus.oidc-client.credentials.secret。如果客户端必须使用 Keycloak 管理控制台或 io.quarkus.test.common.QuarkusTestResourceLifecycleManager 提供的 Keycloak Admin API 创建,或以动态方式注册,则设置为 false

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_CREATE_CLIENT

显示更多

布尔值

true

指定即使默认 OIDC 租户已禁用也是否启动容器。在多租户 OIDC 设置中,尤其是动态创建 OIDC 租户时,可能需要将此属性设置为 true。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_START_WITH_DISABLED_TENANT

显示更多

布尔值

false

一个 Keycloak 用户名到密码的映射。如果为空,将创建默认用户 alicebob,密码与用户名相同。当在 realm-path 未找到 realm 文件时,将使用此映射创建用户。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_USERS__USERS_

显示更多

Map<String,String>

Keycloak 用户的角色映射。如果为空,则分配默认角色:alice 接收 adminuser 角色,而其他用户接收 user 角色。当在 realm-path 中未找到域文件时,此映射用于角色创建。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_ROLES__ROLE_NAME_

显示更多

Map<String,List<String>>

dev service 监听的特定端口。

如果未指定,将选择一个随机端口。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_PORT

显示更多

整数

要传递给容器的环境变量。

环境变量:QUARKUS_KEYCLOAK_DEVSERVICES_CONTAINER_ENV__ENVIRONMENT_VARIABLE_NAME_

显示更多

Map<String,String>

Keycloak 容器的内存限制,最大可达 Long.MAX_VALUE 字节。

如果未指定,默认内存限制为 1250MiB。

环境变量: QUARKUS_KEYCLOAK_DEVSERVICES_CONTAINER_MEMORY_LIMIT

显示更多

MemorySize 

1250M

WebClient 超时。使用此属性来配置 OIDC dev service admin client 使用的 HTTP 客户端在获取管理令牌和创建 realm 时等待来自 OpenId Connect Provider 响应的时间。

环境变量: QUARKUS_KEYCLOAK_DEVSERVICES_WEB_CLIENT_TIMEOUT

显示更多

Duration 

4S

关于 Duration 格式

要编写持续时间值,请使用标准 java.time.Duration 格式。有关更多信息,请参阅 Duration#parse() Java API 文档

您还可以使用简化的格式,以数字开头

  • 如果该值仅为一个数字,则表示以秒为单位的时间。

  • 如果该值是一个数字后跟 ms,则表示以毫秒为单位的时间。

在其他情况下,简化格式将被转换为 java.time.Duration 格式以进行解析

  • 如果该值是一个数字后跟 hms,则在其前面加上 PT

  • 如果该值是一个数字后跟 d,则在其前面加上 P

关于 MemorySize 格式

大小配置选项识别以下格式的字符串(显示为正则表达式):[0-9]+[KkMmGgTtPpEeZzYy]?

如果未给出后缀,则假定为字节。

相关内容