public class StandardOidcIdentityProvider extends Object implements OidcIdentityProvider
| Modifier and Type | Field and Description |
|---|---|
private com.nimbusds.oauth2.sdk.id.ClientID |
clientId |
private com.nimbusds.oauth2.sdk.auth.Secret |
clientSecret |
private String |
EMAIL_CLAIM |
private static org.slf4j.Logger |
logger |
private int |
oidcConnectTimeout |
private com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata |
oidcProviderMetadata |
private int |
oidcReadTimeout |
private NiFiProperties |
properties |
private SSLContext |
sslContext |
private com.nimbusds.openid.connect.sdk.validators.IDTokenValidator |
tokenValidator |
OPEN_ID_CONNECT_SUPPORT_IS_NOT_CONFIGURED| Constructor and Description |
|---|
StandardOidcIdentityProvider(NiFiProperties properties)
Creates a new StandardOidcIdentityProvider.
|
| Modifier and Type | Method and Description |
|---|---|
private com.nimbusds.oauth2.sdk.TokenResponse |
authorizeClient(com.nimbusds.oauth2.sdk.AuthorizationGrant authorizationGrant) |
private com.nimbusds.oauth2.sdk.TokenResponse |
authorizeClientRequest(com.nimbusds.oauth2.sdk.http.HTTPRequest tokenHttpRequest) |
private LoginAuthenticationToken |
convertOIDCTokenToLoginAuthenticationToken(com.nimbusds.openid.connect.sdk.OIDCTokenResponse response) |
private com.nimbusds.oauth2.sdk.auth.ClientAuthentication |
createClientAuthentication() |
private com.nimbusds.oauth2.sdk.http.HTTPRequest |
createTokenHTTPRequest(com.nimbusds.oauth2.sdk.AuthorizationGrant authorizationGrant,
com.nimbusds.oauth2.sdk.auth.ClientAuthentication clientAuthentication) |
private com.nimbusds.oauth2.sdk.http.HTTPRequest |
createUserInfoRequest(com.nimbusds.oauth2.sdk.token.BearerAccessToken bearerAccessToken) |
String |
exchangeAuthorizationCodeForAccessToken(com.nimbusds.oauth2.sdk.AuthorizationGrant authorizationGrant)
Exchanges the supplied authorization grant for an Access Token.
|
String |
exchangeAuthorizationCodeForIdToken(com.nimbusds.oauth2.sdk.AuthorizationGrant authorizationGrant)
Exchanges the supplied authorization grant for an ID Token.
|
LoginAuthenticationToken |
exchangeAuthorizationCodeforLoginAuthenticationToken(com.nimbusds.oauth2.sdk.AuthorizationGrant authorizationGrant)
Exchanges the supplied authorization grant for a Login ID Token.
|
private com.nimbusds.jose.JWSAlgorithm |
extractJwsAlgorithm() |
private com.nimbusds.oauth2.sdk.http.HTTPRequest |
formHTTPRequest(com.nimbusds.oauth2.sdk.Request request) |
private String |
getAccessTokenString(com.nimbusds.openid.connect.sdk.OIDCTokenResponse response) |
URI |
getAuthorizationEndpoint()
Returns the URI for the authorization endpoint.
|
private static List<String> |
getAvailableClaims(com.nimbusds.jwt.JWTClaimsSet claimSet) |
com.nimbusds.oauth2.sdk.id.ClientID |
getClientId()
Returns the configured client id.
|
URI |
getEndSessionEndpoint()
Returns the URI for the end session endpoint.
|
private String |
getIdTokenString(com.nimbusds.openid.connect.sdk.OIDCTokenResponse response) |
private com.nimbusds.openid.connect.sdk.token.OIDCTokens |
getOidcTokens(com.nimbusds.openid.connect.sdk.OIDCTokenResponse response) |
private com.nimbusds.jose.util.ResourceRetriever |
getResourceRetriever() |
URI |
getRevocationEndpoint()
Returns the URI for the revocation endpoint.
|
com.nimbusds.oauth2.sdk.Scope |
getScope()
Returns the scopes supported by the OIDC provider.
|
void |
initializeProvider()
Loads OIDC configuration values from
NiFiProperties, connects to external OIDC provider, and retrieves
and validates provider metadata. |
boolean |
isOidcEnabled()
Returns whether OIDC support is enabled.
|
private String |
lookupIdentityInUserInfo(com.nimbusds.oauth2.sdk.http.HTTPRequest userInfoHttpRequest) |
private String |
retrieveIdentityFromUserInfoEndpoint(com.nimbusds.openid.connect.sdk.token.OIDCTokens oidcTokens) |
private com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata |
retrieveOidcProviderMetadata(String discoveryUri)
Returns the retrieved OIDC provider metadata from the external provider.
|
private com.nimbusds.oauth2.sdk.http.HTTPRequest |
setHttpRequestProperties(com.nimbusds.oauth2.sdk.http.HTTPRequest httpRequest) |
private void |
setSslContext() |
private void |
validateAccessToken(com.nimbusds.openid.connect.sdk.token.OIDCTokens oidcTokens) |
private com.nimbusds.openid.connect.sdk.claims.IDTokenClaimsSet |
validateIdToken(com.nimbusds.jwt.JWT oidcJwt) |
private void |
validateOIDCConfiguration()
Loads the initial configuration values relating to the OIDC provider from the class
NiFiProperties and populates the individual fields. |
private void |
validateOIDCProviderMetadata()
Validates the retrieved OIDC provider metadata.
|
private static final org.slf4j.Logger logger
private final String EMAIL_CLAIM
private final NiFiProperties properties
private com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata oidcProviderMetadata
private int oidcConnectTimeout
private int oidcReadTimeout
private com.nimbusds.openid.connect.sdk.validators.IDTokenValidator tokenValidator
private com.nimbusds.oauth2.sdk.id.ClientID clientId
private com.nimbusds.oauth2.sdk.auth.Secret clientSecret
private SSLContext sslContext
public StandardOidcIdentityProvider(NiFiProperties properties)
properties - propertiespublic void initializeProvider()
NiFiProperties, connects to external OIDC provider, and retrieves
and validates provider metadata.initializeProvider in interface OidcIdentityProviderprivate void setSslContext()
private void validateOIDCProviderMetadata()
private com.nimbusds.jose.JWSAlgorithm extractJwsAlgorithm()
private void validateOIDCConfiguration()
NiFiProperties and populates the individual fields.private com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata retrieveOidcProviderMetadata(String discoveryUri) throws IOException, com.nimbusds.oauth2.sdk.ParseException
discoveryUri - the remote OIDC provider endpoint for service discoveryIOException - if there is a problem connecting to the remote endpointcom.nimbusds.oauth2.sdk.ParseException - if there is a problem parsing the responsepublic boolean isOidcEnabled()
OidcIdentityProviderisOidcEnabled in interface OidcIdentityProviderpublic URI getAuthorizationEndpoint()
OidcIdentityProvidergetAuthorizationEndpoint in interface OidcIdentityProviderpublic URI getEndSessionEndpoint()
OidcIdentityProvidergetEndSessionEndpoint in interface OidcIdentityProviderpublic URI getRevocationEndpoint()
OidcIdentityProvidergetRevocationEndpoint in interface OidcIdentityProviderpublic com.nimbusds.oauth2.sdk.Scope getScope()
OidcIdentityProvidergetScope in interface OidcIdentityProviderpublic com.nimbusds.oauth2.sdk.id.ClientID getClientId()
OidcIdentityProvidergetClientId in interface OidcIdentityProviderpublic LoginAuthenticationToken exchangeAuthorizationCodeforLoginAuthenticationToken(com.nimbusds.oauth2.sdk.AuthorizationGrant authorizationGrant) throws IOException
OidcIdentityProviderexchangeAuthorizationCodeforLoginAuthenticationToken in interface OidcIdentityProviderauthorizationGrant - authorization grant for invoking the Token EndpointIOException - if there was an exceptional error while communicating with the OIDC providerpublic String exchangeAuthorizationCodeForAccessToken(com.nimbusds.oauth2.sdk.AuthorizationGrant authorizationGrant) throws Exception
OidcIdentityProviderexchangeAuthorizationCodeForAccessToken in interface OidcIdentityProviderauthorizationGrant - authorization grant for invoking the Token EndpointException - if there was an exceptional error while communicating with the OIDC providerpublic String exchangeAuthorizationCodeForIdToken(com.nimbusds.oauth2.sdk.AuthorizationGrant authorizationGrant)
OidcIdentityProviderexchangeAuthorizationCodeForIdToken in interface OidcIdentityProviderauthorizationGrant - authorization grant for invoking the Token Endpointprivate String getAccessTokenString(com.nimbusds.openid.connect.sdk.OIDCTokenResponse response) throws Exception
Exceptionprivate String getIdTokenString(com.nimbusds.openid.connect.sdk.OIDCTokenResponse response) throws com.nimbusds.jose.proc.BadJOSEException, com.nimbusds.jose.JOSEException
com.nimbusds.jose.proc.BadJOSEExceptioncom.nimbusds.jose.JOSEExceptionprivate com.nimbusds.oauth2.sdk.TokenResponse authorizeClient(com.nimbusds.oauth2.sdk.AuthorizationGrant authorizationGrant)
throws com.nimbusds.oauth2.sdk.ParseException,
IOException
com.nimbusds.oauth2.sdk.ParseExceptionIOExceptionprivate com.nimbusds.oauth2.sdk.TokenResponse authorizeClientRequest(com.nimbusds.oauth2.sdk.http.HTTPRequest tokenHttpRequest)
throws com.nimbusds.oauth2.sdk.ParseException,
IOException
com.nimbusds.oauth2.sdk.ParseExceptionIOExceptionprivate LoginAuthenticationToken convertOIDCTokenToLoginAuthenticationToken(com.nimbusds.openid.connect.sdk.OIDCTokenResponse response) throws com.nimbusds.jose.proc.BadJOSEException, com.nimbusds.jose.JOSEException, ParseException, IOException
com.nimbusds.jose.proc.BadJOSEExceptioncom.nimbusds.jose.JOSEExceptionParseExceptionIOExceptionprivate com.nimbusds.openid.connect.sdk.token.OIDCTokens getOidcTokens(com.nimbusds.openid.connect.sdk.OIDCTokenResponse response)
private String retrieveIdentityFromUserInfoEndpoint(com.nimbusds.openid.connect.sdk.token.OIDCTokens oidcTokens) throws IOException
IOExceptionprivate com.nimbusds.oauth2.sdk.http.HTTPRequest createTokenHTTPRequest(com.nimbusds.oauth2.sdk.AuthorizationGrant authorizationGrant,
com.nimbusds.oauth2.sdk.auth.ClientAuthentication clientAuthentication)
private com.nimbusds.oauth2.sdk.http.HTTPRequest createUserInfoRequest(com.nimbusds.oauth2.sdk.token.BearerAccessToken bearerAccessToken)
private com.nimbusds.oauth2.sdk.http.HTTPRequest formHTTPRequest(com.nimbusds.oauth2.sdk.Request request)
private com.nimbusds.oauth2.sdk.http.HTTPRequest setHttpRequestProperties(com.nimbusds.oauth2.sdk.http.HTTPRequest httpRequest)
private com.nimbusds.jose.util.ResourceRetriever getResourceRetriever()
private com.nimbusds.oauth2.sdk.auth.ClientAuthentication createClientAuthentication()
private static List<String> getAvailableClaims(com.nimbusds.jwt.JWTClaimsSet claimSet)
private void validateAccessToken(com.nimbusds.openid.connect.sdk.token.OIDCTokens oidcTokens)
throws Exception
Exceptionprivate com.nimbusds.openid.connect.sdk.claims.IDTokenClaimsSet validateIdToken(com.nimbusds.jwt.JWT oidcJwt)
throws com.nimbusds.jose.proc.BadJOSEException,
com.nimbusds.jose.JOSEException
com.nimbusds.jose.proc.BadJOSEExceptioncom.nimbusds.jose.JOSEExceptionprivate String lookupIdentityInUserInfo(com.nimbusds.oauth2.sdk.http.HTTPRequest userInfoHttpRequest) throws IOException
IOExceptionCopyright © 2023 Apache NiFi Project. All rights reserved.