Class AbstractOAuth2IdentityProvider<C extends OAuth2IdentityProviderConfig>

    • Constructor Detail

      • AbstractOAuth2IdentityProvider

        public AbstractOAuth2IdentityProvider​(org.keycloak.models.KeycloakSession session,
                                              C config)
    • Method Detail

      • callback

        public Object callback​(org.keycloak.models.RealmModel realm,
                               org.keycloak.broker.provider.IdentityProvider.AuthenticationCallback callback,
                               org.keycloak.events.EventBuilder event)
        Specified by:
        callback in interface org.keycloak.broker.provider.IdentityProvider<C extends OAuth2IdentityProviderConfig>
        Overrides:
        callback in class org.keycloak.broker.provider.AbstractIdentityProvider<C extends OAuth2IdentityProviderConfig>
      • performLogin

        public javax.ws.rs.core.Response performLogin​(org.keycloak.broker.provider.AuthenticationRequest request)
        Specified by:
        performLogin in interface org.keycloak.broker.provider.IdentityProvider<C extends OAuth2IdentityProviderConfig>
        Overrides:
        performLogin in class org.keycloak.broker.provider.AbstractIdentityProvider<C extends OAuth2IdentityProviderConfig>
      • retrieveToken

        public javax.ws.rs.core.Response retrieveToken​(org.keycloak.models.KeycloakSession session,
                                                       org.keycloak.models.FederatedIdentityModel identity)
        Specified by:
        retrieveToken in interface org.keycloak.broker.provider.IdentityProvider<C extends OAuth2IdentityProviderConfig>
      • getConfig

        public C getConfig()
        Overrides:
        getConfig in class org.keycloak.broker.provider.AbstractIdentityProvider<C extends OAuth2IdentityProviderConfig>
      • extractTokenFromResponse

        protected String extractTokenFromResponse​(String response,
                                                  String tokenName)
      • exchangeFromToken

        public javax.ws.rs.core.Response exchangeFromToken​(javax.ws.rs.core.UriInfo uriInfo,
                                                           org.keycloak.events.EventBuilder event,
                                                           org.keycloak.models.ClientModel authorizedClient,
                                                           org.keycloak.models.UserSessionModel tokenUserSession,
                                                           org.keycloak.models.UserModel tokenSubject,
                                                           javax.ws.rs.core.MultivaluedMap<String,​String> params)
        Specified by:
        exchangeFromToken in interface org.keycloak.broker.provider.ExchangeTokenToIdentityProviderToken
      • hasExternalExchangeToken

        protected javax.ws.rs.core.Response hasExternalExchangeToken​(org.keycloak.events.EventBuilder event,
                                                                     org.keycloak.models.UserSessionModel tokenUserSession,
                                                                     javax.ws.rs.core.MultivaluedMap<String,​String> params)
        check to see if we have a token exchange in session in other words check to see if this session was created by an external exchange
        Parameters:
        tokenUserSession -
        params -
        Returns:
      • exchangeStoredToken

        protected javax.ws.rs.core.Response exchangeStoredToken​(javax.ws.rs.core.UriInfo uriInfo,
                                                                org.keycloak.events.EventBuilder event,
                                                                org.keycloak.models.ClientModel authorizedClient,
                                                                org.keycloak.models.UserSessionModel tokenUserSession,
                                                                org.keycloak.models.UserModel tokenSubject)
      • exchangeSessionToken

        protected javax.ws.rs.core.Response exchangeSessionToken​(javax.ws.rs.core.UriInfo uriInfo,
                                                                 org.keycloak.events.EventBuilder event,
                                                                 org.keycloak.models.ClientModel authorizedClient,
                                                                 org.keycloak.models.UserSessionModel tokenUserSession,
                                                                 org.keycloak.models.UserModel tokenSubject)
      • getFederatedIdentity

        public org.keycloak.broker.provider.BrokeredIdentityContext getFederatedIdentity​(String response)
      • getAccessTokenResponseParameter

        protected String getAccessTokenResponseParameter()
      • doGetFederatedIdentity

        protected org.keycloak.broker.provider.BrokeredIdentityContext doGetFederatedIdentity​(String accessToken)
      • createAuthorizationUrl

        protected javax.ws.rs.core.UriBuilder createAuthorizationUrl​(org.keycloak.broker.provider.AuthenticationRequest request)
      • getJsonProperty

        public String getJsonProperty​(com.fasterxml.jackson.databind.JsonNode jsonNode,
                                      String name)
        Get JSON property as text. JSON numbers and booleans are converted to text. Empty string is converted to null.
        Parameters:
        jsonNode - to get property from
        name - of property to get
        Returns:
        string value of the property or null.
      • getDefaultScopes

        protected abstract String getDefaultScopes()
      • authenticationFinished

        public void authenticationFinished​(org.keycloak.sessions.AuthenticationSessionModel authSession,
                                           org.keycloak.broker.provider.BrokeredIdentityContext context)
        Specified by:
        authenticationFinished in interface org.keycloak.broker.provider.IdentityProvider<C extends OAuth2IdentityProviderConfig>
        Overrides:
        authenticationFinished in class org.keycloak.broker.provider.AbstractIdentityProvider<C extends OAuth2IdentityProviderConfig>
      • authenticateTokenRequest

        public org.keycloak.broker.provider.util.SimpleHttp authenticateTokenRequest​(org.keycloak.broker.provider.util.SimpleHttp tokenRequest)
      • generateToken

        protected org.keycloak.representations.JsonWebToken generateToken()
      • getSignatureContext

        protected org.keycloak.crypto.SignatureSignerContext getSignatureContext()
      • getProfileEndpointForValidation

        protected String getProfileEndpointForValidation​(org.keycloak.events.EventBuilder event)
      • extractIdentityFromProfile

        protected org.keycloak.broker.provider.BrokeredIdentityContext extractIdentityFromProfile​(org.keycloak.events.EventBuilder event,
                                                                                                  com.fasterxml.jackson.databind.JsonNode node)
      • validateExternalTokenThroughUserInfo

        protected org.keycloak.broker.provider.BrokeredIdentityContext validateExternalTokenThroughUserInfo​(org.keycloak.events.EventBuilder event,
                                                                                                            String subjectToken,
                                                                                                            String subjectTokenType)
      • buildUserInfoRequest

        protected org.keycloak.broker.provider.util.SimpleHttp buildUserInfoRequest​(String subjectToken,
                                                                                    String userInfoUrl)
      • supportsExternalExchange

        protected boolean supportsExternalExchange()
      • isIssuer

        public boolean isIssuer​(String issuer,
                                javax.ws.rs.core.MultivaluedMap<String,​String> params)
        Specified by:
        isIssuer in interface org.keycloak.broker.provider.ExchangeExternalToken
      • exchangeExternal

        public final org.keycloak.broker.provider.BrokeredIdentityContext exchangeExternal​(org.keycloak.events.EventBuilder event,
                                                                                           javax.ws.rs.core.MultivaluedMap<String,​String> params)
        Specified by:
        exchangeExternal in interface org.keycloak.broker.provider.ExchangeExternalToken
      • exchangeExternalImpl

        protected org.keycloak.broker.provider.BrokeredIdentityContext exchangeExternalImpl​(org.keycloak.events.EventBuilder event,
                                                                                            javax.ws.rs.core.MultivaluedMap<String,​String> params)
      • exchangeExternalUserInfoValidationOnly

        protected org.keycloak.broker.provider.BrokeredIdentityContext exchangeExternalUserInfoValidationOnly​(org.keycloak.events.EventBuilder event,
                                                                                                              javax.ws.rs.core.MultivaluedMap<String,​String> params)
      • exchangeExternalComplete

        public void exchangeExternalComplete​(org.keycloak.models.UserSessionModel userSession,
                                             org.keycloak.broker.provider.BrokeredIdentityContext context,
                                             javax.ws.rs.core.MultivaluedMap<String,​String> params)
        Specified by:
        exchangeExternalComplete in interface org.keycloak.broker.provider.ExchangeExternalToken