类型
默认
环境变量: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-enabled
为 false
或必须自定义发现的令牌端点路径,则进行设置。
环境变量: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
环境变量: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
环境变量: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-enabled
为 false
,或者必须自定义发现的令牌端点路径,请设置此属性。
环境变量:QUARKUS_OIDC_TOKEN_PATH
字符串
quarkus.oidc."tenant".revoke-path
环境变量:QUARKUS_OIDC_REVOKE_PATH
字符串
quarkus.oidc."tenant".client-id
应用程序的客户端 ID。每个应用程序都有一个客户端 ID,用于标识该应用程序。如果 application-type
为 service
并且不需要令牌内省,则不需要设置客户端 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-app
WEB_APP
是一种服务页面的客户端,通常是前端应用程序。对于这种类型的客户端,授权码流程被定义为验证用户的首选方法。 , service
SERVICE
是一种具有一组受保护 HTTP 资源的客户端,通常是遵循 RESTful 架构设计的后端应用程序。对于这种类型的客户端,持有者授权方法被定义为验证和授权用户的首选方法。 , hybrid
组合的 SERVICE
和 WEB_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
apple
、discord
、facebook
、github
、google
、linkedin
、mastodon
、microsoft
、slack
、spotify
、strava
、twitch
、twitter
、x
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
环境变量: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
如果配置了名称,它将使用来自 quarkus.tls.<name>.*
的配置。如果配置了名称,但找不到具有该名称的 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
basic
client_secret_basic
(默认):客户端 ID 和密钥使用 HTTP Authorization Basic 方案提交。 , post
client_secret_post
:客户端 ID 和密钥作为 client_id
和 client_secret
表单参数提交。 , post-jwt
client_secret_jwt
:客户端 ID 和生成的 JWT 密钥作为 client_id
和 client_secret
表单参数提交。 , query
客户端 ID 和密钥作为 HTTP 查询参数提交。此选项仅受 OIDC 扩展支持。
quarkus.oidc."tenant".credentials.jwt.source
JWT 令牌源:OIDC 提供程序客户端或现有 JWT 持有者令牌。
环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_SOURCE
client
JWT 令牌由 OIDC 提供程序客户端生成,以支持 client_secret_jwt
和 private_key_jwt
身份验证方法。 , bearer
JWT 持有者令牌用作客户端断言:https\://www.rfc-editor.org/rfc/rfc7523#section-2.2。
client
JWT 令牌由 OIDC 提供程序客户端生成,以支持 client_secret_jwt
和 private_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 使用密钥签名。它与 key
、key-file
和 key-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 格式的私钥签名。它与 secret
、key-file
和 key-store
属性互斥。您可以使用 signature-algorithm
属性来覆盖默认密钥算法 RS256
。
环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_KEY
字符串
quarkus.oidc."tenant".credentials.jwt.key-file
如果提供,则表示 JWT 使用 PEM 或 JWK 格式的私钥签名。它与 secret
、key
和 key-store
属性互斥。您可以使用 signature-algorithm
属性来覆盖默认密钥算法 RS256
。
环境变量:QUARKUS_OIDC_CREDENTIALS_JWT_KEY_FILE
字符串
quarkus.oidc."tenant".credentials.jwt.key-store-file
如果提供,则表示 JWT 使用密钥库中的私钥签名。它与 secret
、key
和 key-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
环境变量: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
(默认)、RS384
、RS512
、PS256
、PS384
、PS512
、ES256
、ES384
、ES512
、HS256
、HS384
、HS512
。
环境变量: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
idtoken
ID 令牌 - 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_xyz
和 org_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
包含主体名称的声明名称。默认情况下,会检查 upn
、preferred_username
和 sub
声明。
环境变量: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
环境变量: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
环境变量: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
环境变量: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
环境变量: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
环境变量: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 上设置的查询参数,例如 code
和 state
。
环境变量:QUARKUS_OIDC_AUTHENTICATION_REMOVE_REDIRECT_PARAMETERS
布尔值
true
quarkus.oidc."tenant".authentication.error-path
环境变量: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
环境变量:QUARKUS_OIDC_AUTHENTICATION_COOKIE_SAME_SITE
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
设置为 userinfo
或 quarkus.oidc.token.verify-access-token-with-user-info
设置为 true
或 quarkus.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
请求标头,其值设置为 JavaScript
或 XMLHttpRequest
。您可以注册自定义 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
环境变量:QUARKUS_OIDC_AUTHENTICATION_PKCE_REQUIRED
布尔值
false
quarkus.oidc."tenant".authentication.state-secret
用于加密代码流状态中的代码交换证明密钥 (PKCE) 代码验证程序和/或 nonce 的密钥。此密钥的长度应至少为 32 个字符。
如果未设置此密钥,则检查使用 quarkus.oidc.credentials.secret
或 quarkus.oidc.credentials.client-secret.value
配置的客户端密钥。最后,检查可用于 client_jwt_secret
身份验证的 quarkus.oidc.credentials.jwt.secret
。如果客户端密钥的长度小于 32 个字符,则不能将其用作状态加密密钥。
如果在检查所有这些属性后密钥仍未初始化,则会自动生成该密钥。
环境变量:QUARKUS_OIDC_AUTHENTICATION_STATE_SECRET
字符串
完成授权代码流授予的配置
类型
默认
quarkus.oidc."tenant".code-grant.extra-params."parameter-name"
除了必需的 code
和 redirect-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
环境变量: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.secret
或 quarkus.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
环境变量: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