Class OidcTenantConfig.Token

java.lang.Object
io.quarkus.oidc.OidcTenantConfig.Token
Enclosing class:
OidcTenantConfig

public static class OidcTenantConfig.Token extends Object
  • Field Details

    • issuer

      @ConfigItem public Optional<String> issuer
      The expected issuer `iss` claim value. This property overrides the `issuer` property, which might be set in OpenId Connect provider's well-known configuration. If the `iss` claim value varies depending on the host, IP address, or tenant id of the provider, you can skip the issuer verification by setting this property to `any`, but it should be done only when other options (such as configuring the provider to use the fixed `iss` claim value) are not possible.
    • audience

      @ConfigItem public Optional<List<String>> audience
      The expected audience `aud` claim value, which can be a string or an array of strings. Note the audience claim is verified for ID tokens by default. ID token audience must be equal to the value of `quarkus.oidc.client-id` property. Use this property to override the expected value if your OpenID Connect provider sets a different audience claim value in ID tokens. Set it to `any` if your provider does not set ID token audience` claim. Audience verification for access tokens is only done if this property is configured.
    • subjectRequired

      @ConfigItem(defaultValue="false") public boolean subjectRequired
      Require that the token includes a `sub` (subject) claim which is a unique and never reassigned identifier for the current user. Note that if you enable this property and if UserInfo is also required, both the token and UserInfo `sub` claims must be present and match each other.
    • requiredClaims

      @ConfigItem @ConfigDocMapKey("claim-name") public Map<String,String> requiredClaims
      A map of required claims and their expected values. For example, `quarkus.oidc.token.required-claims.org_id = org_xyz` would require tokens to have the `org_id` claim to be present and set to `org_xyz`. Strings are the only supported types. Use SecurityIdentityAugmentor to verify claims of other types or complex claims.
    • tokenType

      @ConfigItem public Optional<String> tokenType
      Expected token type
    • lifespanGrace

      @ConfigItem public OptionalInt lifespanGrace
      Life span grace period in seconds. When checking token expiry, current time is allowed to be later than token expiration time by at most the configured number of seconds. When checking token issuance, current time is allowed to be sooner than token issue time by at most the configured number of seconds.
    • age

      Token age. It allows for the number of seconds to be specified that must not elapse since the `iat` (issued at) time. A small leeway to account for clock skew which can be configured with `quarkus.oidc.token.lifespan-grace` to verify the token expiry time can also be used to verify the token age property. Note that setting this property does not relax the requirement that Bearer and Code Flow JWT tokens must have a valid (`exp`) expiry claim value. The only exception where setting this property relaxes the requirement is when a logout token is sent with a back-channel logout request since the current OpenId Connect Back-Channel specification does not explicitly require the logout tokens to contain an `exp` claim. However, even if the current logout token is allowed to have no `exp` claim, the `exp` claim is still verified if the logout token contains it.
    • issuedAtRequired

      @ConfigItem(defaultValue="true") public boolean issuedAtRequired
      Require that the token includes a `iat` (issued at) claim Set this property to `false` if your JWT token does not contain an `iat` (issued at) claim. Note that ID token is always required to have an `iat` claim and therefore this property has no impact on the ID token verification process.
    • principalClaim

      @ConfigItem public Optional<String> principalClaim
      Name of the claim which contains a principal name. By default, the `upn`, `preferred_username` and `sub` claims are checked.
    • refreshExpired

      @ConfigItem public boolean refreshExpired
      Refresh expired authorization code flow ID or access tokens. If this property is enabled, a refresh token request is performed if the authorization code ID or access token has expired and, if successful, the local session is updated with the new set of tokens. Otherwise, the local session is invalidated and the user redirected to the OpenID Provider to re-authenticate. In this case, the user might not be challenged again if the OIDC provider session is still active. For this option be effective the `authentication.session-age-extension` property should also be set to a nonzero value since the refresh token is currently kept in the user session. This option is valid only when the application is of type OidcTenantConfig.ApplicationType.WEB_APP}. This property is enabled if `quarkus.oidc.token.refresh-token-time-skew` is configured, you do not need to enable this property manually in this case.
    • refreshTokenTimeSkew

      @ConfigItem public Optional<Duration> refreshTokenTimeSkew
      The refresh token time skew, in seconds. If this property is enabled, the configured number of seconds is added to the current time when checking if the authorization code ID or access token should be refreshed. If the sum is greater than the authorization code ID or access token's expiration time, a refresh is going to happen.
    • forcedJwkRefreshInterval

      @ConfigItem(defaultValue="10M") public Duration forcedJwkRefreshInterval
      The forced JWK set refresh interval in minutes.
    • authorizationScheme

      @ConfigItem(defaultValue="Bearer") public String authorizationScheme
      HTTP Authorization header scheme.
    • signatureAlgorithm

      Required signature algorithm. OIDC providers support many signature algorithms but if necessary you can restrict Quarkus application to accept tokens signed only using an algorithm configured with this property.
    • decryptionKeyLocation

      @ConfigItem public Optional<String> decryptionKeyLocation
      Decryption key location. JWT tokens can be inner-signed and encrypted by OpenId Connect providers. However, it is not always possible to remotely introspect such tokens because the providers might not control the private decryption keys. In such cases set this property to point to the file containing the decryption private key in PEM or JSON Web Key (JWK) format. If this property is not set and the `private_key_jwt` client authentication method is used, the private key used to sign the client authentication JWT tokens are also used to decrypt the encrypted ID tokens.
    • allowJwtIntrospection

      @ConfigItem(defaultValue="true") public boolean allowJwtIntrospection
      Allow the remote introspection of JWT tokens when no matching JWK key is available. This property is set to `true` by default for backward-compatibility reasons. It is planned that this default value will be changed to `false` in an upcoming release. Also note this property is ignored if JWK endpoint URI is not available and introspecting the tokens is the only verification option.
    • requireJwtIntrospectionOnly

      @ConfigItem(defaultValue="false") public boolean requireJwtIntrospectionOnly
      Require that JWT tokens are only introspected remotely.
    • allowOpaqueTokenIntrospection

      @ConfigItem(defaultValue="true") public boolean allowOpaqueTokenIntrospection
      Allow the remote introspection of the opaque tokens. Set this property to `false` if only JWT tokens are expected.
    • customizerName

      @ConfigItem public Optional<String> customizerName
      Token customizer name. Allows to select a tenant specific token customizer as a named bean. Prefer using TenantFeature qualifier when registering custom TokenCustomizer. Use this property only to refer to `TokenCustomizer` implementations provided by this extension.
    • verifyAccessTokenWithUserInfo

      @ConfigItem(defaultValueDocumentation="false") public Optional<Boolean> verifyAccessTokenWithUserInfo
      Indirectly verify that the opaque (binary) access token is valid by using it to request UserInfo. Opaque access token is considered valid if the provider accepted this token and returned a valid UserInfo. You should only enable this option if the opaque access tokens must be accepted but OpenId Connect provider does not have a token introspection endpoint. This property has no effect when JWT tokens must be verified.
  • Constructor Details

    • Token

      public Token()
  • Method Details

    • fromIssuer

      public static OidcTenantConfig.Token fromIssuer(String issuer)
    • fromAudience

      public static OidcTenantConfig.Token fromAudience(String... audience)
    • isVerifyAccessTokenWithUserInfo

      public Optional<Boolean> isVerifyAccessTokenWithUserInfo()
    • setVerifyAccessTokenWithUserInfo

      public void setVerifyAccessTokenWithUserInfo(boolean verify)
    • getIssuer

      public Optional<String> getIssuer()
    • setIssuer

      public void setIssuer(String issuer)
    • getHeader

      public Optional<String> getHeader()
    • setHeader

      public void setHeader(String header)
    • getAudience

      public Optional<List<String>> getAudience()
    • setAudience

      public void setAudience(List<String> audience)
    • getLifespanGrace

      public OptionalInt getLifespanGrace()
    • setLifespanGrace

      public void setLifespanGrace(int lifespanGrace)
    • getPrincipalClaim

      public Optional<String> getPrincipalClaim()
    • setPrincipalClaim

      public void setPrincipalClaim(String principalClaim)
    • isRefreshExpired

      public boolean isRefreshExpired()
    • setRefreshExpired

      public void setRefreshExpired(boolean refreshExpired)
    • getForcedJwkRefreshInterval

      public Duration getForcedJwkRefreshInterval()
    • setForcedJwkRefreshInterval

      public void setForcedJwkRefreshInterval(Duration forcedJwkRefreshInterval)
    • getTokenType

      public Optional<String> getTokenType()
    • setTokenType

      public void setTokenType(String tokenType)
    • getRefreshTokenTimeSkew

      public Optional<Duration> getRefreshTokenTimeSkew()
    • setRefreshTokenTimeSkew

      public void setRefreshTokenTimeSkew(Duration refreshTokenTimeSkew)
    • isAllowJwtIntrospection

      public boolean isAllowJwtIntrospection()
    • setAllowJwtIntrospection

      public void setAllowJwtIntrospection(boolean allowJwtIntrospection)
    • isAllowOpaqueTokenIntrospection

      public boolean isAllowOpaqueTokenIntrospection()
    • setAllowOpaqueTokenIntrospection

      public void setAllowOpaqueTokenIntrospection(boolean allowOpaqueTokenIntrospection)
    • getAge

      public Optional<Duration> getAge()
    • setAge

      public void setAge(Duration age)
    • isIssuedAtRequired

      public boolean isIssuedAtRequired()
    • setIssuedAtRequired

      public void setIssuedAtRequired(boolean issuedAtRequired)
    • getDecryptionKeyLocation

      public Optional<String> getDecryptionKeyLocation()
    • setDecryptionKeyLocation

      public void setDecryptionKeyLocation(String decryptionKeyLocation)
    • getRequiredClaims

      public Map<String,String> getRequiredClaims()
    • setRequiredClaims

      public void setRequiredClaims(Map<String,String> requiredClaims)
    • isRequireJwtIntrospectionOnly

      public boolean isRequireJwtIntrospectionOnly()
    • setRequireJwtIntrospectionOnly

      public void setRequireJwtIntrospectionOnly(boolean requireJwtIntrospectionOnly)
    • getSignatureAlgorithm

      public Optional<OidcTenantConfig.SignatureAlgorithm> getSignatureAlgorithm()
    • setSignatureAlgorithm

      public void setSignatureAlgorithm(OidcTenantConfig.SignatureAlgorithm signatureAlgorithm)
    • getCustomizerName

      public Optional<String> getCustomizerName()
    • setCustomizerName

      public void setCustomizerName(String customizerName)
    • isSubjectRequired

      public boolean isSubjectRequired()
    • setSubjectRequired

      public void setSubjectRequired(boolean subjectRequired)
    • getAuthorizationScheme

      public String getAuthorizationScheme()
    • setAuthorizationScheme

      public void setAuthorizationScheme(String authorizationScheme)