Class AbstractIdentityProvider<C extends org.keycloak.models.IdentityProviderModel>

java.lang.Object
org.keycloak.broker.provider.AbstractIdentityProvider<C>
All Implemented Interfaces:
IdentityProvider<C>, UserAuthenticationIdentityProvider<C>, org.keycloak.provider.Provider

public abstract class AbstractIdentityProvider<C extends org.keycloak.models.IdentityProviderModel> extends Object implements UserAuthenticationIdentityProvider<C>
Author:
Pedro Igor
  • Field Details

    • logger

      protected static final org.jboss.logging.Logger logger
    • UPDATE_PROFILE_EMAIL_CHANGED

      public static final String UPDATE_PROFILE_EMAIL_CHANGED
      See Also:
    • UPDATE_PROFILE_USERNAME_CHANGED

      public static final String UPDATE_PROFILE_USERNAME_CHANGED
      See Also:
    • BROKER_REGISTERED_NEW_USER

      public static final String BROKER_REGISTERED_NEW_USER
      See Also:
    • session

      protected final org.keycloak.models.KeycloakSession session
  • Constructor Details

    • AbstractIdentityProvider

      public AbstractIdentityProvider(org.keycloak.models.KeycloakSession session, C config)
  • Method Details

    • getConfig

      public C getConfig()
      Specified by:
      getConfig in interface IdentityProvider<C extends org.keycloak.models.IdentityProviderModel>
    • close

      public void close()
      Specified by:
      close in interface org.keycloak.provider.Provider
    • callback

      public Object callback(org.keycloak.models.RealmModel realm, UserAuthenticationIdentityProvider.AuthenticationCallback callback, EventBuilder event)
      Description copied from interface: UserAuthenticationIdentityProvider
      JAXRS callback endpoint for when the remote IDP wants to callback to keycloak.
      Specified by:
      callback in interface UserAuthenticationIdentityProvider<C extends org.keycloak.models.IdentityProviderModel>
      Returns:
    • performLogin

      public jakarta.ws.rs.core.Response performLogin(AuthenticationRequest request)
      Description copied from interface: UserAuthenticationIdentityProvider

      Initiates the authentication process by sending an authentication request to an identity provider. This method is called only once during the authentication.

      Specified by:
      performLogin in interface UserAuthenticationIdentityProvider<C extends org.keycloak.models.IdentityProviderModel>
      Parameters:
      request - The initial authentication request. Contains all the contextual information in order to build an authentication request to the identity provider.
      Returns:
    • keycloakInitiatedBrowserLogout

      public jakarta.ws.rs.core.Response keycloakInitiatedBrowserLogout(org.keycloak.models.KeycloakSession session, org.keycloak.models.UserSessionModel userSession, jakarta.ws.rs.core.UriInfo uriInfo, org.keycloak.models.RealmModel realm)
      Description copied from interface: UserAuthenticationIdentityProvider
      Called when a Keycloak application initiates a logout through the browser. This is expected to do a logout with the IDP
      Specified by:
      keycloakInitiatedBrowserLogout in interface UserAuthenticationIdentityProvider<C extends org.keycloak.models.IdentityProviderModel>
      Returns:
      null if this is not supported by this provider
    • backchannelLogout

      public void backchannelLogout(org.keycloak.models.KeycloakSession session, org.keycloak.models.UserSessionModel userSession, jakarta.ws.rs.core.UriInfo uriInfo, org.keycloak.models.RealmModel realm)
      Specified by:
      backchannelLogout in interface UserAuthenticationIdentityProvider<C extends org.keycloak.models.IdentityProviderModel>
    • exchangeNotSupported

      public jakarta.ws.rs.core.Response exchangeNotSupported()
    • exchangeNotLinked

      public jakarta.ws.rs.core.Response exchangeNotLinked(jakarta.ws.rs.core.UriInfo uriInfo, org.keycloak.models.ClientModel authorizedClient, org.keycloak.models.UserSessionModel tokenUserSession, org.keycloak.models.UserModel tokenSubject)
    • exchangeNotLinkedNoStore

      public jakarta.ws.rs.core.Response exchangeNotLinkedNoStore(jakarta.ws.rs.core.UriInfo uriInfo, org.keycloak.models.ClientModel authorizedClient, org.keycloak.models.UserSessionModel tokenUserSession, org.keycloak.models.UserModel tokenSubject)
    • exchangeErrorResponse

      protected jakarta.ws.rs.core.Response exchangeErrorResponse(jakarta.ws.rs.core.UriInfo uriInfo, org.keycloak.models.ClientModel authorizedClient, org.keycloak.models.UserSessionModel tokenUserSession, String errorCode, String reason)
    • getLinkingUrl

      protected String getLinkingUrl(jakarta.ws.rs.core.UriInfo uriInfo, org.keycloak.models.ClientModel authorizedClient, org.keycloak.models.UserSessionModel tokenUserSession)
    • exchangeTokenExpired

      public jakarta.ws.rs.core.Response exchangeTokenExpired(jakarta.ws.rs.core.UriInfo uriInfo, org.keycloak.models.ClientModel authorizedClient, org.keycloak.models.UserSessionModel tokenUserSession, org.keycloak.models.UserModel tokenSubject)
    • exchangeUnsupportedRequiredType

      public jakarta.ws.rs.core.Response exchangeUnsupportedRequiredType()
    • authenticationFinished

      public void authenticationFinished(org.keycloak.sessions.AuthenticationSessionModel authSession, BrokeredIdentityContext context)
      Specified by:
      authenticationFinished in interface UserAuthenticationIdentityProvider<C extends org.keycloak.models.IdentityProviderModel>
    • preprocessFederatedIdentity

      public void preprocessFederatedIdentity(org.keycloak.models.KeycloakSession session, org.keycloak.models.RealmModel realm, BrokeredIdentityContext context)
      Specified by:
      preprocessFederatedIdentity in interface UserAuthenticationIdentityProvider<C extends org.keycloak.models.IdentityProviderModel>
    • importNewUser

      public void importNewUser(org.keycloak.models.KeycloakSession session, org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user, BrokeredIdentityContext context)
      Specified by:
      importNewUser in interface UserAuthenticationIdentityProvider<C extends org.keycloak.models.IdentityProviderModel>
    • updateBrokeredUser

      public void updateBrokeredUser(org.keycloak.models.KeycloakSession session, org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user, BrokeredIdentityContext context)
      Specified by:
      updateBrokeredUser in interface UserAuthenticationIdentityProvider<C extends org.keycloak.models.IdentityProviderModel>
    • updateEmail

      protected void updateEmail(org.keycloak.models.UserModel user, BrokeredIdentityContext context)
    • setEmailVerified

      protected void setEmailVerified(org.keycloak.models.UserModel user, BrokeredIdentityContext context)
    • getMarshaller

      public IdentityProviderDataMarshaller getMarshaller()
      Description copied from interface: UserAuthenticationIdentityProvider
      Implementation of marshaller to serialize/deserialize attached data to Strings, which can be saved in clientSession
      Specified by:
      getMarshaller in interface UserAuthenticationIdentityProvider<C extends org.keycloak.models.IdentityProviderModel>
      Returns:
    • getFederatedAccessToken

      protected String getFederatedAccessToken(org.keycloak.models.UserSessionModel userSession)
    • buildTokenResponse

      protected jakarta.ws.rs.core.Response buildTokenResponse(jakarta.ws.rs.core.UriInfo uriInfo, EventBuilder event, org.keycloak.models.ClientModel authorizedClient, org.keycloak.models.UserSessionModel tokenUserSession, org.keycloak.representations.AccessTokenResponse tokenResponse, String issuedTokenType)