Package org.keycloak.storage.ldap
Class LDAPStorageProvider
- java.lang.Object
-
- org.keycloak.storage.ldap.LDAPStorageProvider
-
- All Implemented Interfaces:
CredentialAuthentication,CredentialInputUpdater,CredentialInputUpdater.Streams,CredentialInputValidator,Provider,ImportedUserValidation,UserLookupProvider,UserLookupProvider.Streams,UserQueryProvider,UserQueryProvider.Streams,UserRegistrationProvider,UserStorageProvider
public class LDAPStorageProvider extends Object implements UserStorageProvider, CredentialInputValidator, CredentialInputUpdater.Streams, CredentialAuthentication, UserLookupProvider.Streams, UserRegistrationProvider, UserQueryProvider.Streams, 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.credential.CredentialInputUpdater.Streams
getDisableableCredentialTypes
-
Methods inherited from interface org.keycloak.storage.user.UserLookupProvider.Streams
getUserByEmail, getUserById, getUserByUsername
-
Methods inherited from interface org.keycloak.storage.user.UserQueryProvider
getRoleMembers, getRoleMembers, getRoleMembersStream, getUsersCount, getUsersCount
-
Methods inherited from interface org.keycloak.storage.user.UserQueryProvider.Streams
getGroupMembers, getGroupMembers, getGroupMembersStream, getUsers, getUsers, getUsersCount, getUsersCount, getUsersCount, getUsersCount, getUsersCount, getUsersCount, getUsersCount, getUsersCount, searchForUser, searchForUser, searchForUser, searchForUser, searchForUserByUserAttribute, 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- Specified by:
searchForUserByUserAttributeStreamin interfaceUserQueryProvider.Streams
-
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- Specified by:
getUserByIdin interfaceUserLookupProvider.Streams
-
getUsersCount
public int getUsersCount(RealmModel realm)
- Specified by:
getUsersCountin interfaceUserQueryProvider
-
getUsersStream
public Stream<UserModel> getUsersStream(RealmModel realm)
- Specified by:
getUsersStreamin interfaceUserQueryProvider- Specified by:
getUsersStreamin interfaceUserQueryProvider.Streams
-
getUsersStream
public Stream<UserModel> getUsersStream(RealmModel realm, Integer firstResult, Integer maxResults)
- Specified by:
getUsersStreamin interfaceUserQueryProvider- Specified by:
getUsersStreamin interfaceUserQueryProvider.Streams
-
searchForUserStream
public Stream<UserModel> searchForUserStream(RealmModel realm, String search, Integer firstResult, Integer maxResults)
- Specified by:
searchForUserStreamin interfaceUserQueryProvider- Specified by:
searchForUserStreamin interfaceUserQueryProvider.Streams
-
searchForUserStream
public Stream<UserModel> searchForUserStream(RealmModel realm, Map<String,String> params, Integer firstResult, Integer maxResults)
- Specified by:
searchForUserStreamin interfaceUserQueryProvider- Specified by:
searchForUserStreamin interfaceUserQueryProvider.Streams
-
getGroupMembersStream
public Stream<UserModel> getGroupMembersStream(RealmModel realm, GroupModel group, Integer firstResult, Integer maxResults)
- Specified by:
getGroupMembersStreamin interfaceUserQueryProvider- Specified by:
getGroupMembersStreamin interfaceUserQueryProvider.Streams
-
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- Specified by:
getUserByUsernamein interfaceUserLookupProvider.Streams
-
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- Specified by:
getUserByEmailin interfaceUserLookupProvider.Streams
-
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- Specified by:
getDisableableCredentialTypesStreamin interfaceCredentialInputUpdater.Streams
-
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)
-
-