Class OAuth2AuthenticationMetaData
java.lang.Object
com.kingsrook.qqq.backend.core.model.metadata.authentication.QAuthenticationMetaData
com.kingsrook.qqq.backend.core.model.metadata.authentication.OAuth2AuthenticationMetaData
- All Implemented Interfaces:
MetaDataProducerOutput,QMetaDataObject,TopLevelMetaDataInterface,Serializable
Meta-data to provide details of an OAuth2 Authentication module.
baseUrl is used by the backend server for OIDC discovery and token exchange
(server-to-server calls). In Kubernetes or environments behind a reverse proxy,
this may be an internal/cluster-local URL (e.g., http://auth-service.auth.svc/).
externalBaseUrl, if set, is the URL sent to the frontend/SPA for browser-based
OAuth2 redirects. This is needed when the backend cannot reach the OAuth2
provider via the same URL that browsers use (e.g., Calico NetworkPolicy
blocking pod-to-LoadBalancer traffic, or internal HTTP vs external HTTPS).
If not set, baseUrl is used for both purposes (backwards compatible).
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionGetter for allowPlaintextRefreshTokens - a local-development escape hatch: when true and no key is set, refresh tokens are stored unencrypted.Getter for baseUrlGetter for clientIdGetter for clientSecretGetter for externalBaseUrlGetter for maxSessionLifetimeSeconds - optional cap on how long (from the initial login) a session may be extended by refreshing.Getter for previousRefreshTokenEncryptionKeys - map of key id to key (or a variable reference to one) for retired keys, which are only used to decrypt.Getter for redirectStateTableNameGetter for refreshTokenEncryptionKey - the base64 32-byte AES key (or a ${env.X} / ${prop.X} reference to one) that encrypts stored refresh tokens.Getter for refreshTokenEncryptionKeyId - the id of the current key, stored with each encrypted value (default: RefreshTokenCipher.DEFAULT_KEY_ID).Getter for refreshTokensEnabled - whether refresh tokens returned by the provider are stored server-side and used to renew expiring access tokens.Getter for refreshTokenSkewSeconds - how many seconds before an access token's expiry it is proactively refreshed.Getter for refreshTokenTableName - the table where refresh tokens are kept (server-side only).Getter for scopesGetter for tokenUrlGetter for userSessionTableNamevoidsetAllowPlaintextRefreshTokens(Boolean allowPlaintextRefreshTokens) Setter for allowPlaintextRefreshTokensvoidsetBaseUrl(String baseUrl) Setter for baseUrlvoidsetClientId(String clientId) Setter for clientIdvoidsetClientSecret(String clientSecret) Setter for clientSecretvoidsetExternalBaseUrl(String externalBaseUrl) Setter for externalBaseUrlvoidsetMaxSessionLifetimeSeconds(Integer maxSessionLifetimeSeconds) Setter for maxSessionLifetimeSecondsvoidsetPreviousRefreshTokenEncryptionKeys(Map<String, String> previousRefreshTokenEncryptionKeys) Setter for previousRefreshTokenEncryptionKeysvoidsetRedirectStateTableName(String redirectStateTableName) Setter for redirectStateTableNamevoidsetRefreshTokenEncryptionKey(String refreshTokenEncryptionKey) Setter for refreshTokenEncryptionKeyvoidsetRefreshTokenEncryptionKeyId(String refreshTokenEncryptionKeyId) Setter for refreshTokenEncryptionKeyIdvoidsetRefreshTokensEnabled(Boolean refreshTokensEnabled) Setter for refreshTokensEnabledvoidsetRefreshTokenSkewSeconds(Integer refreshTokenSkewSeconds) Setter for refreshTokenSkewSecondsvoidsetRefreshTokenTableName(String refreshTokenTableName) Setter for refreshTokenTableNamevoidSetter for scopesvoidsetTokenUrl(String tokenUrl) Setter for tokenUrlvoidsetUserSessionTableName(String userSessionTableName) Setter for userSessionTableNamevoidvalidate(QInstance qInstance, QInstanceValidator qInstanceValidator) withAllowPlaintextRefreshTokens(Boolean allowPlaintextRefreshTokens) Fluent setter for allowPlaintextRefreshTokenswithBaseUrl(String baseUrl) Fluent setter, override to help fluent flowswithClientId(String clientId) Fluent setter, override to help fluent flowswithClientSecret(String clientSecret) Fluent setter, override to help fluent flowswithExternalBaseUrl(String externalBaseUrl) Fluent setter for externalBaseUrlwithMaxSessionLifetimeSeconds(Integer maxSessionLifetimeSeconds) Fluent setter for maxSessionLifetimeSecondswithPreviousRefreshTokenEncryptionKeys(Map<String, String> previousRefreshTokenEncryptionKeys) Fluent setter for previousRefreshTokenEncryptionKeyswithRedirectStateTableName(String redirectStateTableName) Fluent setter for redirectStateTableNamewithRefreshTokenEncryptionKey(String refreshTokenEncryptionKey) Fluent setter for refreshTokenEncryptionKeywithRefreshTokenEncryptionKeyId(String refreshTokenEncryptionKeyId) Fluent setter for refreshTokenEncryptionKeyIdwithRefreshTokensEnabled(Boolean refreshTokensEnabled) Fluent setter for refreshTokensEnabledwithRefreshTokenSkewSeconds(Integer refreshTokenSkewSeconds) Fluent setter for refreshTokenSkewSecondswithRefreshTokenTableName(String refreshTokenTableName) Fluent setter for refreshTokenTableNamewithScopes(String scopes) Fluent setter for scopeswithTokenUrl(String tokenUrl) Fluent setter for tokenUrlwithUserSessionTableName(String userSessionTableName) Fluent setter for userSessionTableNameMethods inherited from class com.kingsrook.qqq.backend.core.model.metadata.authentication.QAuthenticationMetaData
addSelfToInstance, getCustomizer, getModuleCodeReference, getName, getSessionStoreEnabled, getType, getValue, getValues, setCustomizer, setModuleCodeReference, setName, setSessionStoreEnabled, setType, setValue, setValues, withCustomizer, withModuleCodeReference, withName, withSessionStoreEnabled, withType, withValue, withValues
-
Field Details
-
DEFAULT_REFRESH_TOKEN_SKEW_SECONDS
public static final int DEFAULT_REFRESH_TOKEN_SKEW_SECONDS- See Also:
-
-
Constructor Details
-
OAuth2AuthenticationMetaData
public OAuth2AuthenticationMetaData()Default Constructor.
-
-
Method Details
-
validate
- Overrides:
validatein classQAuthenticationMetaData
-
withBaseUrl
Fluent setter, override to help fluent flows -
getBaseUrl
Getter for baseUrl -
setBaseUrl
Setter for baseUrl -
getExternalBaseUrl
Getter for externalBaseUrl -
setExternalBaseUrl
Setter for externalBaseUrl -
withExternalBaseUrl
Fluent setter for externalBaseUrl -
withClientId
Fluent setter, override to help fluent flows -
getClientId
Getter for clientId -
setClientId
Setter for clientId -
withClientSecret
Fluent setter, override to help fluent flows -
getClientSecret
Getter for clientSecret -
setClientSecret
Setter for clientSecret -
getTokenUrl
Getter for tokenUrl -
setTokenUrl
Setter for tokenUrl -
withTokenUrl
Fluent setter for tokenUrl -
getUserSessionTableName
Getter for userSessionTableName -
setUserSessionTableName
Setter for userSessionTableName -
withUserSessionTableName
Fluent setter for userSessionTableName -
getRedirectStateTableName
Getter for redirectStateTableName -
setRedirectStateTableName
Setter for redirectStateTableName -
withRedirectStateTableName
Fluent setter for redirectStateTableName -
getScopes
Getter for scopes -
setScopes
Setter for scopes -
withScopes
Fluent setter for scopes -
getRefreshTokensEnabled
Getter for refreshTokensEnabled - whether refresh tokens returned by the provider are stored server-side and used to renew expiring access tokens. -
setRefreshTokensEnabled
Setter for refreshTokensEnabled -
withRefreshTokensEnabled
Fluent setter for refreshTokensEnabled -
getRefreshTokenSkewSeconds
Getter for refreshTokenSkewSeconds - how many seconds before an access token's expiry it is proactively refreshed. -
setRefreshTokenSkewSeconds
Setter for refreshTokenSkewSeconds -
withRefreshTokenSkewSeconds
Fluent setter for refreshTokenSkewSeconds -
getMaxSessionLifetimeSeconds
Getter for maxSessionLifetimeSeconds - optional cap on how long (from the initial login) a session may be extended by refreshing. null = no cap. -
setMaxSessionLifetimeSeconds
Setter for maxSessionLifetimeSeconds -
withMaxSessionLifetimeSeconds
public OAuth2AuthenticationMetaData withMaxSessionLifetimeSeconds(Integer maxSessionLifetimeSeconds) Fluent setter for maxSessionLifetimeSeconds -
getRefreshTokenTableName
Getter for refreshTokenTableName - the table where refresh tokens are kept (server-side only). When null, UserSessionRefreshToken.TABLE_NAME is used. -
setRefreshTokenTableName
Setter for refreshTokenTableName -
withRefreshTokenTableName
Fluent setter for refreshTokenTableName -
getRefreshTokenEncryptionKey
Getter for refreshTokenEncryptionKey - the base64 32-byte AES key (or a ${env.X} / ${prop.X} reference to one) that encrypts stored refresh tokens. -
setRefreshTokenEncryptionKey
Setter for refreshTokenEncryptionKey -
withRefreshTokenEncryptionKey
Fluent setter for refreshTokenEncryptionKey -
getRefreshTokenEncryptionKeyId
Getter for refreshTokenEncryptionKeyId - the id of the current key, stored with each encrypted value (default: RefreshTokenCipher.DEFAULT_KEY_ID). -
setRefreshTokenEncryptionKeyId
Setter for refreshTokenEncryptionKeyId -
withRefreshTokenEncryptionKeyId
public OAuth2AuthenticationMetaData withRefreshTokenEncryptionKeyId(String refreshTokenEncryptionKeyId) Fluent setter for refreshTokenEncryptionKeyId -
getPreviousRefreshTokenEncryptionKeys
-
setPreviousRefreshTokenEncryptionKeys
-
withPreviousRefreshTokenEncryptionKeys
public OAuth2AuthenticationMetaData withPreviousRefreshTokenEncryptionKeys(Map<String, String> previousRefreshTokenEncryptionKeys) Fluent setter for previousRefreshTokenEncryptionKeys -
getAllowPlaintextRefreshTokens
Getter for allowPlaintextRefreshTokens - a local-development escape hatch: when true and no key is set, refresh tokens are stored unencrypted. -
setAllowPlaintextRefreshTokens
Setter for allowPlaintextRefreshTokens -
withAllowPlaintextRefreshTokens
public OAuth2AuthenticationMetaData withAllowPlaintextRefreshTokens(Boolean allowPlaintextRefreshTokens) Fluent setter for allowPlaintextRefreshTokens
-