Package org.keycloak.broker.oidc.mappers
Class AbstractJsonUserAttributeMapper
- java.lang.Object
- 
- org.keycloak.broker.provider.AbstractIdentityProviderMapper
- 
- org.keycloak.broker.oidc.mappers.AbstractJsonUserAttributeMapper
 
 
- 
- All Implemented Interfaces:
- IdentityProviderMapper,- ConfiguredProvider,- Provider,- ProviderFactory<IdentityProviderMapper>
 - Direct Known Subclasses:
- FacebookUserAttributeMapper,- GitHubUserAttributeMapper,- GoogleUserAttributeMapper,- InstagramUserAttributeMapper,- LinkedInUserAttributeMapper,- MicrosoftUserAttributeMapper,- OpenshiftV4AttributeMapper,- PayPalUserAttributeMapper,- StackoverflowUserAttributeMapper
 
 public abstract class AbstractJsonUserAttributeMapper extends AbstractIdentityProviderMapper Abstract class for Social Provider mappers which allow mapping of JSON user profile field into Keycloak user attribute. Concrete mapper classes with own ID and provider mapping must be implemented for each social provider who usesJsonNodeuser profile.- Author:
- Vlastimil Elias (velias at redhat dot com)
 
- 
- 
Field SummaryFields Modifier and Type Field Description static StringCONF_JSON_FIELDConfig param where name of mapping source JSON User Profile field is stored.static StringCONF_USER_ATTRIBUTEConfig param where name of mapping target USer attribute is stored.static StringCONTEXT_JSON_NODEKey inBrokeredIdentityContext.getContextData()whereJsonNodewith user profile is stored.protected static org.jboss.logging.Loggerloggerprotected static org.jboss.logging.LoggerLOGGER_DUMP_USER_PROFILE- 
Fields inherited from interface org.keycloak.broker.provider.IdentityProviderMapperANY_PROVIDER, DEFAULT_IDENTITY_PROVIDER_MAPPER_SYNC_MODES
 
- 
 - 
Constructor SummaryConstructors Constructor Description AbstractJsonUserAttributeMapper()
 - 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description List<ProviderConfigProperty>getConfigProperties()StringgetDisplayCategory()StringgetDisplayType()StringgetHelpText()static ObjectgetJsonValue(com.fasterxml.jackson.databind.JsonNode baseNode, String fieldPath)protected static ObjectgetJsonValue(IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context)voidpreprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context)Called to determine what keycloak username and email to use to process the login request from the external IDP.static voidstoreUserProfileForMapper(BrokeredIdentityContext user, com.fasterxml.jackson.databind.JsonNode profile, String provider)Store used profile JsonNode into user context for later use by this mapper.booleansupportsSyncMode(IdentityProviderSyncMode syncMode)voidupdateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context)Called when this user has logged in before and has already been imported.voidupdateBrokeredUserLegacy(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context)Called when this user has logged in before and has already been imported.- 
Methods inherited from class org.keycloak.broker.provider.AbstractIdentityProviderMapperclose, create, importNewUser, init, postInit
 - 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface org.keycloak.provider.ConfiguredProvidergetConfig
 - 
Methods inherited from interface org.keycloak.broker.provider.IdentityProviderMappergetCompatibleProviders
 - 
Methods inherited from interface org.keycloak.provider.ProviderFactorygetConfigMetadata, getId, order
 
- 
 
- 
- 
- 
Field Detail- 
loggerprotected static final org.jboss.logging.Logger logger 
 - 
LOGGER_DUMP_USER_PROFILEprotected static final org.jboss.logging.Logger LOGGER_DUMP_USER_PROFILE 
 - 
CONF_JSON_FIELDpublic static final String CONF_JSON_FIELD Config param where name of mapping source JSON User Profile field is stored.- See Also:
- Constant Field Values
 
 - 
CONF_USER_ATTRIBUTEpublic static final String CONF_USER_ATTRIBUTE Config param where name of mapping target USer attribute is stored.- See Also:
- Constant Field Values
 
 - 
CONTEXT_JSON_NODEpublic static final String CONTEXT_JSON_NODE Key inBrokeredIdentityContext.getContextData()whereJsonNodewith user profile is stored.- See Also:
- Constant Field Values
 
 
- 
 - 
Method Detail- 
storeUserProfileForMapperpublic static void storeUserProfileForMapper(BrokeredIdentityContext user, com.fasterxml.jackson.databind.JsonNode profile, String provider) Store used profile JsonNode into user context for later use by this mapper. Profile data are dumped into special logger if enabled also to allow investigation of the structure.- Parameters:
- user- context to store profile data into
- profile- to store into context
- provider- identification of social provider to be used in log dump
- See Also:
- preprocessFederatedIdentity(KeycloakSession, RealmModel, IdentityProviderMapperModel, BrokeredIdentityContext),- BrokeredIdentityContext.getContextData()
 
 - 
supportsSyncModepublic boolean supportsSyncMode(IdentityProviderSyncMode syncMode) 
 - 
getConfigPropertiespublic List<ProviderConfigProperty> getConfigProperties() 
 - 
getDisplayCategorypublic String getDisplayCategory() 
 - 
getDisplayTypepublic String getDisplayType() 
 - 
getHelpTextpublic String getHelpText() 
 - 
preprocessFederatedIdentitypublic void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) Description copied from interface:IdentityProviderMapperCalled to determine what keycloak username and email to use to process the login request from the external IDP. It's called before "FirstBrokerLogin" flow, so can be used to map attributes to BrokeredIdentityContext ( BrokeredIdentityContext.setUserAttribute ), which will be available on "Review Profile" page and in authenticators during FirstBrokerLogin flow- Specified by:
- preprocessFederatedIdentityin interface- IdentityProviderMapper
- Overrides:
- preprocessFederatedIdentityin class- AbstractIdentityProviderMapper
 
 - 
updateBrokeredUserLegacypublic void updateBrokeredUserLegacy(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) Description copied from interface:IdentityProviderMapperCalled when this user has logged in before and has already been imported. Legacy behaviour. When updating the mapper to correctly update brokered users in all sync modes, move the old behavior into this method.- Specified by:
- updateBrokeredUserLegacyin interface- IdentityProviderMapper
- Overrides:
- updateBrokeredUserLegacyin class- AbstractIdentityProviderMapper
 
 - 
updateBrokeredUserpublic void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) Description copied from interface:IdentityProviderMapperCalled when this user has logged in before and has already been imported.- Specified by:
- updateBrokeredUserin interface- IdentityProviderMapper
- Overrides:
- updateBrokeredUserin class- AbstractIdentityProviderMapper
 
 - 
getJsonValueprotected static Object getJsonValue(IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) 
 
- 
 
-