Package org.keycloak.broker.oidc
Class OIDCIdentityProvider
- java.lang.Object
- 
- org.keycloak.broker.provider.AbstractIdentityProvider<C>
- 
- org.keycloak.broker.oidc.AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
- 
- org.keycloak.broker.oidc.OIDCIdentityProvider
 
 
 
- 
- All Implemented Interfaces:
- ExchangeExternalToken,- ExchangeTokenToIdentityProviderToken,- IdentityProvider<OIDCIdentityProviderConfig>,- Provider
 - Direct Known Subclasses:
- GitLabIdentityProvider,- GoogleIdentityProvider,- KeycloakOIDCIdentityProvider
 
 public class OIDCIdentityProvider extends AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig> implements ExchangeExternalToken - Author:
- Pedro Igor
 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description protected static classOIDCIdentityProvider.OIDCEndpoint- 
Nested classes/interfaces inherited from class org.keycloak.broker.oidc.AbstractOAuth2IdentityProviderAbstractOAuth2IdentityProvider.Endpoint
 - 
Nested classes/interfaces inherited from interface org.keycloak.broker.provider.IdentityProviderIdentityProvider.AuthenticationCallback
 
- 
 - 
Field SummaryFields Modifier and Type Field Description static StringACCESS_TOKEN_EXPIRATIONstatic StringEXCHANGE_PROVIDERstatic StringFEDERATED_ACCESS_TOKEN_RESPONSEstatic StringFEDERATED_ID_TOKENprotected static org.jboss.logging.Loggerloggerstatic StringSCOPE_OPENIDstatic StringUSER_INFOstatic StringVALIDATED_ID_TOKEN- 
Fields inherited from class org.keycloak.broker.oidc.AbstractOAuth2IdentityProviderACCESS_DENIED, FEDERATED_REFRESH_TOKEN, FEDERATED_TOKEN_EXPIRATION, mapper, OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE, OAUTH2_GRANT_TYPE_REFRESH_TOKEN, OAUTH2_PARAMETER_ACCESS_TOKEN, OAUTH2_PARAMETER_CLIENT_ID, OAUTH2_PARAMETER_CLIENT_SECRET, OAUTH2_PARAMETER_CODE, OAUTH2_PARAMETER_GRANT_TYPE, OAUTH2_PARAMETER_REDIRECT_URI, OAUTH2_PARAMETER_RESPONSE_TYPE, OAUTH2_PARAMETER_SCOPE, OAUTH2_PARAMETER_STATE
 - 
Fields inherited from class org.keycloak.broker.provider.AbstractIdentityProviderACCOUNT_LINK_URL, session
 - 
Fields inherited from interface org.keycloak.broker.provider.IdentityProviderEXTERNAL_IDENTITY_PROVIDER, FEDERATED_ACCESS_TOKEN
 
- 
 - 
Constructor SummaryConstructors Constructor Description OIDCIdentityProvider(KeycloakSession session, OIDCIdentityProviderConfig config)
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description voidauthenticationFinished(AuthenticationSessionModel authSession, BrokeredIdentityContext context)voidbackchannelLogout(KeycloakSession session, UserSessionModel userSession, javax.ws.rs.core.UriInfo uriInfo, RealmModel realm)protected voidbackchannelLogout(UserSessionModel userSession, String idToken)Objectcallback(RealmModel realm, IdentityProvider.AuthenticationCallback callback, EventBuilder event)JAXRS callback endpoint for when the remote IDP wants to callback to keycloak.protected javax.ws.rs.core.UriBuildercreateAuthorizationUrl(AuthenticationRequest request)protected BrokeredIdentityContextexchangeExternalImpl(EventBuilder event, javax.ws.rs.core.MultivaluedMap<String,String> params)protected javax.ws.rs.core.ResponseexchangeSessionToken(javax.ws.rs.core.UriInfo uriInfo, EventBuilder event, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)protected javax.ws.rs.core.ResponseexchangeStoredToken(javax.ws.rs.core.UriInfo uriInfo, EventBuilder event, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)protected BrokeredIdentityContextextractIdentity(AccessTokenResponse tokenResponse, String accessToken, JsonWebToken idToken)protected BrokeredIdentityContextextractIdentityFromProfile(EventBuilder event, com.fasterxml.jackson.databind.JsonNode userInfo)protected StringgetDefaultScopes()BrokeredIdentityContextgetFederatedIdentity(String response)protected StringgetProfileEndpointForValidation(EventBuilder event)protected SimpleHttpgetRefreshTokenRequest(KeycloakSession session, String refreshToken, String clientId, String clientSecret)protected StringgetUserInfoUrl()protected StringgetusernameClaimNameForIdToken()protected StringgetUsernameFromUserInfo(com.fasterxml.jackson.databind.JsonNode userInfo)protected booleanisAuthTimeExpired(JsonWebToken idToken, AuthenticationSessionModel authSession)booleanisIssuer(String issuer, javax.ws.rs.core.MultivaluedMap<String,String> params)javax.ws.rs.core.ResponsekeycloakInitiatedBrowserLogout(KeycloakSession session, UserSessionModel userSession, javax.ws.rs.core.UriInfo uriInfo, RealmModel realm)Called when a Keycloak application initiates a logout through the browser.voidpreprocessFederatedIdentity(KeycloakSession session, RealmModel realm, BrokeredIdentityContext context)protected voidprocessAccessTokenResponse(BrokeredIdentityContext context, AccessTokenResponse response)StringrefreshTokenForLogout(KeycloakSession session, UserSessionModel userSession)Returns access token response as a string from a refresh token invocation on the remote OIDC brokerprotected booleansupportsExternalExchange()protected BrokeredIdentityContextvalidateJwt(EventBuilder event, String subjectToken, String subjectTokenType)JsonWebTokenvalidateToken(String encodedToken)protected JsonWebTokenvalidateToken(String encodedToken, boolean ignoreAudience)protected booleanverify(JWSInput jws)- 
Methods inherited from class org.keycloak.broker.oidc.AbstractOAuth2IdentityProviderasJsonNode, authenticateTokenRequest, buildUserInfoRequest, doGetFederatedIdentity, exchangeExternal, exchangeExternalComplete, exchangeExternalUserInfoValidationOnly, exchangeFromToken, extractTokenFromResponse, generateToken, getAccessTokenResponseParameter, getConfig, getJsonProperty, getSignatureContext, hasExternalExchangeToken, performLogin, retrieveToken, validateExternalTokenThroughUserInfo
 - 
Methods inherited from class org.keycloak.broker.provider.AbstractIdentityProviderclose, exchangeErrorResponse, exchangeNotLinked, exchangeNotLinkedNoStore, exchangeNotSupported, exchangeTokenExpired, exchangeUnsupportedRequiredType, export, getLinkingUrl, getMarshaller, importNewUser, updateBrokeredUser
 - 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface org.keycloak.broker.provider.ExchangeExternalTokenexchangeExternal, exchangeExternalComplete
 
- 
 
- 
- 
- 
Field Detail- 
loggerprotected static final org.jboss.logging.Logger logger 
 - 
SCOPE_OPENIDpublic static final String SCOPE_OPENID - See Also:
- Constant Field Values
 
 - 
FEDERATED_ID_TOKENpublic static final String FEDERATED_ID_TOKEN - See Also:
- Constant Field Values
 
 - 
USER_INFOpublic static final String USER_INFO - See Also:
- Constant Field Values
 
 - 
FEDERATED_ACCESS_TOKEN_RESPONSEpublic static final String FEDERATED_ACCESS_TOKEN_RESPONSE - See Also:
- Constant Field Values
 
 - 
VALIDATED_ID_TOKENpublic static final String VALIDATED_ID_TOKEN - See Also:
- Constant Field Values
 
 - 
ACCESS_TOKEN_EXPIRATIONpublic static final String ACCESS_TOKEN_EXPIRATION - See Also:
- Constant Field Values
 
 - 
EXCHANGE_PROVIDERpublic static final String EXCHANGE_PROVIDER - See Also:
- Constant Field Values
 
 
- 
 - 
Constructor Detail- 
OIDCIdentityProviderpublic OIDCIdentityProvider(KeycloakSession session, OIDCIdentityProviderConfig config) 
 
- 
 - 
Method Detail- 
callbackpublic Object callback(RealmModel realm, IdentityProvider.AuthenticationCallback callback, EventBuilder event) Description copied from interface:IdentityProviderJAXRS callback endpoint for when the remote IDP wants to callback to keycloak.- Specified by:
- callbackin interface- IdentityProvider<OIDCIdentityProviderConfig>
- Overrides:
- callbackin class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
- Returns:
 
 - 
refreshTokenForLogoutpublic String refreshTokenForLogout(KeycloakSession session, UserSessionModel userSession) Returns access token response as a string from a refresh token invocation on the remote OIDC broker- Parameters:
- session-
- userSession-
- Returns:
 
 - 
backchannelLogoutpublic void backchannelLogout(KeycloakSession session, UserSessionModel userSession, javax.ws.rs.core.UriInfo uriInfo, RealmModel realm) - Specified by:
- backchannelLogoutin interface- IdentityProvider<OIDCIdentityProviderConfig>
- Overrides:
- backchannelLogoutin class- AbstractIdentityProvider<OIDCIdentityProviderConfig>
 
 - 
backchannelLogoutprotected void backchannelLogout(UserSessionModel userSession, String idToken) 
 - 
keycloakInitiatedBrowserLogoutpublic javax.ws.rs.core.Response keycloakInitiatedBrowserLogout(KeycloakSession session, UserSessionModel userSession, javax.ws.rs.core.UriInfo uriInfo, RealmModel realm) Description copied from interface:IdentityProviderCalled when a Keycloak application initiates a logout through the browser. This is expected to do a logout with the IDP- Specified by:
- keycloakInitiatedBrowserLogoutin interface- IdentityProvider<OIDCIdentityProviderConfig>
- Overrides:
- keycloakInitiatedBrowserLogoutin class- AbstractIdentityProvider<OIDCIdentityProviderConfig>
- Returns:
- null if this is not supported by this provider
 
 - 
exchangeStoredTokenprotected javax.ws.rs.core.Response exchangeStoredToken(javax.ws.rs.core.UriInfo uriInfo, EventBuilder event, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)- Overrides:
- exchangeStoredTokenin class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
processAccessTokenResponseprotected void processAccessTokenResponse(BrokeredIdentityContext context, AccessTokenResponse response) 
 - 
getRefreshTokenRequestprotected SimpleHttp getRefreshTokenRequest(KeycloakSession session, String refreshToken, String clientId, String clientSecret) 
 - 
exchangeSessionTokenprotected javax.ws.rs.core.Response exchangeSessionToken(javax.ws.rs.core.UriInfo uriInfo, EventBuilder event, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)- Overrides:
- exchangeSessionTokenin class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
getFederatedIdentitypublic BrokeredIdentityContext getFederatedIdentity(String response) - Overrides:
- getFederatedIdentityin class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
isAuthTimeExpiredprotected boolean isAuthTimeExpired(JsonWebToken idToken, AuthenticationSessionModel authSession) 
 - 
extractIdentityprotected BrokeredIdentityContext extractIdentity(AccessTokenResponse tokenResponse, String accessToken, JsonWebToken idToken) throws IOException - Throws:
- IOException
 
 - 
getusernameClaimNameForIdTokenprotected String getusernameClaimNameForIdToken() 
 - 
getUserInfoUrlprotected String getUserInfoUrl() 
 - 
verifyprotected boolean verify(JWSInput jws) 
 - 
validateTokenpublic JsonWebToken validateToken(String encodedToken) 
 - 
validateTokenprotected JsonWebToken validateToken(String encodedToken, boolean ignoreAudience) 
 - 
authenticationFinishedpublic void authenticationFinished(AuthenticationSessionModel authSession, BrokeredIdentityContext context) - Specified by:
- authenticationFinishedin interface- IdentityProvider<OIDCIdentityProviderConfig>
- Overrides:
- authenticationFinishedin class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
getDefaultScopesprotected String getDefaultScopes() - Specified by:
- getDefaultScopesin class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
isIssuerpublic boolean isIssuer(String issuer, javax.ws.rs.core.MultivaluedMap<String,String> params) - Specified by:
- isIssuerin interface- ExchangeExternalToken
- Overrides:
- isIssuerin class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
supportsExternalExchangeprotected boolean supportsExternalExchange() - Overrides:
- supportsExternalExchangein class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
getProfileEndpointForValidationprotected String getProfileEndpointForValidation(EventBuilder event) - Overrides:
- getProfileEndpointForValidationin class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
extractIdentityFromProfileprotected BrokeredIdentityContext extractIdentityFromProfile(EventBuilder event, com.fasterxml.jackson.databind.JsonNode userInfo) - Overrides:
- extractIdentityFromProfilein class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
getUsernameFromUserInfoprotected String getUsernameFromUserInfo(com.fasterxml.jackson.databind.JsonNode userInfo) 
 - 
validateJwtprotected final BrokeredIdentityContext validateJwt(EventBuilder event, String subjectToken, String subjectTokenType) 
 - 
exchangeExternalImplprotected BrokeredIdentityContext exchangeExternalImpl(EventBuilder event, javax.ws.rs.core.MultivaluedMap<String,String> params) - Overrides:
- exchangeExternalImplin class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
createAuthorizationUrlprotected javax.ws.rs.core.UriBuilder createAuthorizationUrl(AuthenticationRequest request) - Overrides:
- createAuthorizationUrlin class- AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig>
 
 - 
preprocessFederatedIdentitypublic void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, BrokeredIdentityContext context) - Specified by:
- preprocessFederatedIdentityin interface- IdentityProvider<OIDCIdentityProviderConfig>
- Overrides:
- preprocessFederatedIdentityin class- AbstractIdentityProvider<OIDCIdentityProviderConfig>
 
 
- 
 
-