Package org.keycloak.storage.ldap
Class LDAPStorageProvider
- java.lang.Object
-
- org.keycloak.storage.ldap.LDAPStorageProvider
-
- All Implemented Interfaces:
CredentialAuthentication,CredentialInputUpdater,CredentialInputValidator,Provider,ImportedUserValidation,UserLookupProvider,UserQueryProvider,UserRegistrationProvider,UserStorageProvider
public class LDAPStorageProvider extends Object implements UserStorageProvider, CredentialInputValidator, CredentialInputUpdater, CredentialAuthentication, UserLookupProvider, UserRegistrationProvider, UserQueryProvider, ImportedUserValidation
- Version:
- $Revision: 1 $
- Author:
- Marek Posolda, Bill Burke
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.keycloak.credential.CredentialInputUpdater
CredentialInputUpdater.Streams
-
Nested classes/interfaces inherited from interface org.keycloak.storage.user.UserLookupProvider
UserLookupProvider.Streams
-
Nested classes/interfaces inherited from interface org.keycloak.storage.user.UserQueryProvider
UserQueryProvider.Streams
-
Nested classes/interfaces inherited from interface org.keycloak.storage.UserStorageProvider
UserStorageProvider.EditMode
-
-
Field Summary
Fields Modifier and Type Field Description protected UserStorageProvider.EditModeeditModeprotected LDAPStorageProviderFactoryfactoryprotected LDAPProviderKerberosConfigkerberosConfigprotected LDAPIdentityStoreldapIdentityStoreprotected LDAPStorageMapperManagermapperManagerprotected UserStorageProviderModelmodelprotected KeycloakSessionsessionprotected Set<String>supportedCredentialTypesprotected PasswordUpdateCallbackupdaterprotected LDAPStorageUserManageruserManager
-
Constructor Summary
Constructors Constructor Description LDAPStorageProvider(LDAPStorageProviderFactory factory, KeycloakSession session, ComponentModel model, LDAPIdentityStore ldapIdentityStore)
-
Method Summary
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.keycloak.storage.user.UserLookupProvider
getUserByCredential
-
Methods inherited from interface org.keycloak.storage.user.UserQueryProvider
getGroupMembersStream, getRoleMembersStream, getUsersCount, getUsersCount, getUsersCount, getUsersCount, getUsersCount, getUsersCount, searchForUserStream, searchForUserStream
-
-
-
-
Field Detail
-
factory
protected LDAPStorageProviderFactory factory
-
session
protected KeycloakSession session
-
model
protected UserStorageProviderModel model
-
ldapIdentityStore
protected LDAPIdentityStore ldapIdentityStore
-
editMode
protected UserStorageProvider.EditMode editMode
-
kerberosConfig
protected LDAPProviderKerberosConfig kerberosConfig
-
updater
protected PasswordUpdateCallback updater
-
mapperManager
protected LDAPStorageMapperManager mapperManager
-
userManager
protected LDAPStorageUserManager userManager
-
-
Constructor Detail
-
LDAPStorageProvider
public LDAPStorageProvider(LDAPStorageProviderFactory factory, KeycloakSession session, ComponentModel model, LDAPIdentityStore ldapIdentityStore)
-
-
Method Detail
-
setUpdater
public void setUpdater(PasswordUpdateCallback updater)
-
getSession
public KeycloakSession getSession()
-
getLdapIdentityStore
public LDAPIdentityStore getLdapIdentityStore()
-
getEditMode
public UserStorageProvider.EditMode getEditMode()
-
getModel
public UserStorageProviderModel getModel()
-
getMapperManager
public LDAPStorageMapperManager getMapperManager()
-
getUserManager
public LDAPStorageUserManager getUserManager()
-
validate
public UserModel validate(RealmModel realm, UserModel local)
- Specified by:
validatein interfaceImportedUserValidation
-
proxy
protected UserModel proxy(RealmModel realm, UserModel local, LDAPObject ldapObject, boolean newUser)
-
supportsCredentialAuthenticationFor
public boolean supportsCredentialAuthenticationFor(String type)
- Specified by:
supportsCredentialAuthenticationForin interfaceCredentialAuthentication
-
searchForUserByUserAttributeStream
public Stream<UserModel> searchForUserByUserAttributeStream(RealmModel realm, String attrName, String attrValue)
- Specified by:
searchForUserByUserAttributeStreamin interfaceUserQueryProvider
-
synchronizeRegistrations
public boolean synchronizeRegistrations()
-
addUser
public UserModel addUser(RealmModel realm, String username)
- Specified by:
addUserin interfaceUserRegistrationProvider
-
removeUser
public boolean removeUser(RealmModel realm, UserModel user)
- Specified by:
removeUserin interfaceUserRegistrationProvider
-
getUserById
public UserModel getUserById(RealmModel realm, String id)
- Specified by:
getUserByIdin interfaceUserLookupProvider
-
getUsersCount
public int getUsersCount(RealmModel realm)
- Specified by:
getUsersCountin interfaceUserQueryProvider
-
getUsersStream
public Stream<UserModel> getUsersStream(RealmModel realm)
- Specified by:
getUsersStreamin interfaceUserQueryProvider
-
getUsersStream
public Stream<UserModel> getUsersStream(RealmModel realm, Integer firstResult, Integer maxResults)
- Specified by:
getUsersStreamin interfaceUserQueryProvider
-
searchForUserStream
public Stream<UserModel> searchForUserStream(RealmModel realm, String search, Integer firstResult, Integer maxResults)
- Specified by:
searchForUserStreamin interfaceUserQueryProvider
-
searchForUserStream
public Stream<UserModel> searchForUserStream(RealmModel realm, Map<String,String> params, Integer firstResult, Integer maxResults)
- Specified by:
searchForUserStreamin interfaceUserQueryProvider
-
getGroupMembersStream
public Stream<UserModel> getGroupMembersStream(RealmModel realm, GroupModel group, Integer firstResult, Integer maxResults)
- Specified by:
getGroupMembersStreamin interfaceUserQueryProvider
-
getRoleMembersStream
public Stream<UserModel> getRoleMembersStream(RealmModel realm, RoleModel role, Integer firstResult, Integer maxResults)
- Specified by:
getRoleMembersStreamin interfaceUserQueryProvider
-
loadUsersByUsernames
public List<UserModel> loadUsersByUsernames(List<String> usernames, RealmModel realm)
-
searchLDAP
protected List<LDAPObject> searchLDAP(RealmModel realm, Map<String,String> attributes)
-
loadAndValidateUser
protected LDAPObject loadAndValidateUser(RealmModel realm, UserModel local)
- Parameters:
local-- Returns:
- ldapUser corresponding to local user or null if user is no longer in LDAP
-
getUserByUsername
public UserModel getUserByUsername(RealmModel realm, String username)
- Specified by:
getUserByUsernamein interfaceUserLookupProvider
-
importUserFromLDAP
protected UserModel importUserFromLDAP(KeycloakSession session, RealmModel realm, LDAPObject ldapUser)
-
queryByEmail
protected LDAPObject queryByEmail(RealmModel realm, String email)
-
getUserByEmail
public UserModel getUserByEmail(RealmModel realm, String email)
- Specified by:
getUserByEmailin interfaceUserLookupProvider
-
preRemove
public void preRemove(RealmModel realm)
- Specified by:
preRemovein interfaceUserStorageProvider
-
preRemove
public void preRemove(RealmModel realm, RoleModel role)
- Specified by:
preRemovein interfaceUserStorageProvider
-
preRemove
public void preRemove(RealmModel realm, GroupModel group)
- Specified by:
preRemovein interfaceUserStorageProvider
-
validPassword
public boolean validPassword(RealmModel realm, UserModel user, String password)
-
updateCredential
public boolean updateCredential(RealmModel realm, UserModel user, CredentialInput input)
- Specified by:
updateCredentialin interfaceCredentialInputUpdater
-
disableCredentialType
public void disableCredentialType(RealmModel realm, UserModel user, String credentialType)
- Specified by:
disableCredentialTypein interfaceCredentialInputUpdater
-
getDisableableCredentialTypesStream
public Stream<String> getDisableableCredentialTypesStream(RealmModel realm, UserModel user)
- Specified by:
getDisableableCredentialTypesStreamin interfaceCredentialInputUpdater
-
supportsCredentialType
public boolean supportsCredentialType(String credentialType)
- Specified by:
supportsCredentialTypein interfaceCredentialInputUpdater- Specified by:
supportsCredentialTypein interfaceCredentialInputValidator
-
isConfiguredFor
public boolean isConfiguredFor(RealmModel realm, UserModel user, String credentialType)
- Specified by:
isConfiguredForin interfaceCredentialInputValidator
-
isValid
public boolean isValid(RealmModel realm, UserModel user, CredentialInput input)
- Specified by:
isValidin interfaceCredentialInputValidator
-
authenticate
public CredentialValidationOutput authenticate(RealmModel realm, CredentialInput cred)
- Specified by:
authenticatein interfaceCredentialAuthentication
-
findOrCreateAuthenticatedUser
protected UserModel findOrCreateAuthenticatedUser(RealmModel realm, String username)
Called after successful kerberos authentication- Parameters:
realm- realmusername- username without realm prefix- Returns:
- finded or newly created user
-
loadLDAPUserByUsername
public LDAPObject loadLDAPUserByUsername(RealmModel realm, String username)
-
loadLDAPUserByUuid
public LDAPObject loadLDAPUserByUuid(RealmModel realm, String uuid)
-
-