keycloak-federation
公開メンバ関数 | 限定公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore クラス
org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore の継承関係図
Inheritance graph
org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore 連携図
Collaboration graph

公開メンバ関数

 LDAPIdentityStore (LDAPConfig config)
 
LDAPConfig getConfig ()
 
void add (LDAPObject ldapObject)
 
void update (LDAPObject ldapObject)
 
void remove (LDAPObject ldapObject)
 
List< LDAPObjectfetchQueryResults (LDAPQuery identityQuery)
 
int countQueryResults (LDAPQuery identityQuery)
 
void validatePassword (LDAPObject user, String password) throws AuthenticationException
 
void updatePassword (LDAPObject user, String password, LDAPOperationDecorator passwordUpdateDecorator)
 

限定公開メンバ関数

void checkRename (LDAPObject ldapObject)
 
StringBuilder createIdentityTypeSearchFilter (final LDAPQuery identityQuery)
 
BasicAttributes extractAttributes (LDAPObject ldapObject, boolean isCreate)
 
String getEntryIdentifier (final LDAPObject ldapObject)
 

非公開メンバ関数

void updateADPassword (String userDN, String password, LDAPOperationDecorator passwordUpdateDecorator)
 
StringBuilder getObjectClassesFilter (Collection< String > objectClasses)
 
LDAPObject populateAttributedType (SearchResult searchResult, LDAPQuery ldapQuery)
 

非公開変数類

final LDAPConfig config
 
final LDAPOperationManager operationManager
 

静的非公開変数類

static final Logger logger = Logger.getLogger(LDAPIdentityStore.class)
 

詳解

An IdentityStore implementation backed by an LDAP directory

著者
Shane Bryzak
Anil Saldhana
Pedro Silva

構築子と解体子

◆ LDAPIdentityStore()

org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.LDAPIdentityStore ( LDAPConfig  config)
inline
72  {
73  this.config = config;
74 
75  try {
76  this.operationManager = new LDAPOperationManager(config);
77  } catch (NamingException e) {
78  throw new ModelException("Couldn't init operation manager", e);
79  }
80  }
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70
final LDAPConfig config
Definition: LDAPIdentityStore.java:69

関数詳解

◆ add()

void org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.add ( LDAPObject  ldapObject)
inline

org.keycloak.storage.ldap.idm.store.IdentityStoreを実装しています。

88  {
89  // id will be assigned by the ldap server
90  if (ldapObject.getUuid() != null) {
91  throw new ModelException("Can't add object with already assigned uuid");
92  }
93 
94  String entryDN = ldapObject.getDn().toString();
95  BasicAttributes ldapAttributes = extractAttributes(ldapObject, true);
96  this.operationManager.createSubContext(entryDN, ldapAttributes);
97  ldapObject.setUuid(getEntryIdentifier(ldapObject));
98 
99  if (logger.isDebugEnabled()) {
100  logger.debugf("Type with identifier [%s] and dn [%s] successfully added to LDAP store.", ldapObject.getUuid(), entryDN);
101  }
102  }
static final Logger logger
Definition: LDAPIdentityStore.java:67
String getEntryIdentifier(final LDAPObject ldapObject)
Definition: LDAPIdentityStore.java:465
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70
void createSubContext(final String name, final Attributes attributes)
Definition: LDAPOperationManager.java:573
BasicAttributes extractAttributes(LDAPObject ldapObject, boolean isCreate)
Definition: LDAPIdentityStore.java:399

◆ checkRename()

void org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.checkRename ( LDAPObject  ldapObject)
inlineprotected
119  {
120  String rdnAttrName = ldapObject.getRdnAttributeName();
121  if (ldapObject.getReadOnlyAttributeNames().contains(rdnAttrName.toLowerCase())) {
122  return;
123  }
124 
125  String rdnAttrVal = ldapObject.getAttributeAsString(rdnAttrName);
126 
127  // Could be the case when RDN attribute of the target object is not included in Keycloak mappers
128  if (rdnAttrVal == null) {
129  return;
130  }
131 
132  String oldRdnAttrVal = ldapObject.getDn().getFirstRdnAttrValue();
133  if (!oldRdnAttrVal.equals(rdnAttrVal)) {
134  LDAPDn newLdapDn = ldapObject.getDn().getParentDn();
135  newLdapDn.addFirst(rdnAttrName, rdnAttrVal);
136 
137  String oldDn = ldapObject.getDn().toString();
138  String newDn = newLdapDn.toString();
139 
140  if (logger.isDebugEnabled()) {
141  logger.debugf("Renaming LDAP Object. Old DN: [%s], New DN: [%s]", oldDn, newDn);
142  }
143 
144  // In case, that there is conflict (For example already existing "CN=John Anthony"), the different DN is returned
145  newDn = this.operationManager.renameEntry(oldDn, newDn, true);
146 
147  ldapObject.setDn(LDAPDn.fromString(newDn));
148  }
149  }
static final Logger logger
Definition: LDAPIdentityStore.java:67
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70
String renameEntry(String oldDn, String newDn, boolean fallback)
Definition: LDAPOperationManager.java:186

◆ countQueryResults()

int org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.countQueryResults ( LDAPQuery  identityQuery)
inline

org.keycloak.storage.ldap.idm.store.IdentityStoreを実装しています。

214  {
215  int limit = identityQuery.getLimit();
216  int offset = identityQuery.getOffset();
217 
218  identityQuery.setLimit(0);
219  identityQuery.setOffset(0);
220 
221  int resultCount = identityQuery.getResultList().size();
222 
223  identityQuery.setLimit(limit);
224  identityQuery.setOffset(offset);
225 
226  return resultCount;
227  }

◆ createIdentityTypeSearchFilter()

StringBuilder org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.createIdentityTypeSearchFilter ( final LDAPQuery  identityQuery)
inlineprotected
292  {
293  StringBuilder filter = new StringBuilder();
294 
295  for (Condition condition : identityQuery.getConditions()) {
296  condition.applyCondition(filter);
297  }
298 
299  filter.insert(0, "(&");
300  filter.append(getObjectClassesFilter(identityQuery.getObjectClasses()));
301  filter.append(")");
302 
303  if (logger.isTraceEnabled()) {
304  logger.tracef("Using filter for LDAP search: %s . Searching in DN: %s", filter, identityQuery.getSearchDn());
305  }
306  return filter;
307  }
static final Logger logger
Definition: LDAPIdentityStore.java:67
StringBuilder getObjectClassesFilter(Collection< String > objectClasses)
Definition: LDAPIdentityStore.java:310

◆ extractAttributes()

BasicAttributes org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.extractAttributes ( LDAPObject  ldapObject,
boolean  isCreate 
)
inlineprotected
399  {
400  BasicAttributes entryAttributes = new BasicAttributes();
401 
402  for (Map.Entry<String, Set<String>> attrEntry : ldapObject.getAttributes().entrySet()) {
403  String attrName = attrEntry.getKey();
404  Set<String> attrValue = attrEntry.getValue();
405 
406  // ldapObject.getReadOnlyAttributeNames() are lower-cased
407  if (!ldapObject.getReadOnlyAttributeNames().contains(attrName.toLowerCase()) && (isCreate || !ldapObject.getRdnAttributeName().equalsIgnoreCase(attrName))) {
408 
409  if (attrValue == null) {
410  // Shouldn't happen
411  logger.warnf("Attribute '%s' is null on LDAP object '%s' . Using empty value to be saved to LDAP", attrName, ldapObject.getDn().toString());
412  attrValue = Collections.emptySet();
413  }
414 
415  // Ignore empty attributes during create
416  if (isCreate && attrValue.isEmpty()) {
417  continue;
418  }
419 
420  BasicAttribute attr = new BasicAttribute(attrName);
421  for (String val : attrValue) {
422  if (val == null || val.toString().trim().length() == 0) {
423  val = LDAPConstants.EMPTY_ATTRIBUTE_VALUE;
424  }
425 
426  if (getConfig().getBinaryAttributeNames().contains(attrName)) {
427  // Binary attribute
428  try {
429  byte[] bytes = Base64.decode(val);
430  attr.add(bytes);
431  } catch (IOException ioe) {
432  logger.warnf("Wasn't able to Base64 decode the attribute value. Ignoring attribute update. LDAP DN: %s, Attribute: %s, Attribute value: %s" + ldapObject.getDn(), attrName, attrValue);
433  }
434  } else {
435  attr.add(val);
436  }
437  }
438 
439  entryAttributes.put(attr);
440  }
441  }
442 
443  // Don't extract object classes for update
444  if (isCreate) {
445  BasicAttribute objectClassAttribute = new BasicAttribute(LDAPConstants.OBJECT_CLASS);
446 
447  for (String objectClassValue : ldapObject.getObjectClasses()) {
448  objectClassAttribute.add(objectClassValue);
449 
450  if ((objectClassValue.equalsIgnoreCase(LDAPConstants.GROUP_OF_NAMES)
451  || objectClassValue.equalsIgnoreCase(LDAPConstants.GROUP_OF_ENTRIES)
452  || objectClassValue.equalsIgnoreCase(LDAPConstants.GROUP_OF_UNIQUE_NAMES)) &&
453  (entryAttributes.get(LDAPConstants.MEMBER) == null)) {
454  entryAttributes.put(LDAPConstants.MEMBER, LDAPConstants.EMPTY_MEMBER_ATTRIBUTE_VALUE);
455  }
456  }
457 
458  entryAttributes.put(objectClassAttribute);
459  }
460 
461  return entryAttributes;
462  }
static final Logger logger
Definition: LDAPIdentityStore.java:67
Set< String > getBinaryAttributeNames()
Definition: LDAPConfig.java:235
LDAPConfig getConfig()
Definition: LDAPIdentityStore.java:83

◆ fetchQueryResults()

List<LDAPObject> org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.fetchQueryResults ( LDAPQuery  identityQuery)
inline

org.keycloak.storage.ldap.idm.store.IdentityStoreを実装しています。

162  {
163  if (identityQuery.getSorting() != null && !identityQuery.getSorting().isEmpty()) {
164  throw new ModelException("LDAP Identity Store does not yet support sorted queries.");
165  }
166 
167  List<LDAPObject> results = new ArrayList<>();
168 
169  try {
170  String baseDN = identityQuery.getSearchDn();
171 
172  for (Condition condition : identityQuery.getConditions()) {
173 
174  // Check if we are searching by ID
175  String uuidAttrName = getConfig().getUuidLDAPAttributeName();
176  if (condition instanceof EqualCondition) {
177  EqualCondition equalCondition = (EqualCondition) condition;
178  if (equalCondition.getParameterName().equalsIgnoreCase(uuidAttrName)) {
179  SearchResult search = this.operationManager
180  .lookupById(baseDN, equalCondition.getValue().toString(), identityQuery.getReturningLdapAttributes());
181 
182  if (search != null) {
183  results.add(populateAttributedType(search, identityQuery));
184  }
185 
186  return results;
187  }
188  }
189  }
190 
191 
192  StringBuilder filter = createIdentityTypeSearchFilter(identityQuery);
193 
194  List<SearchResult> search;
195  if (getConfig().isPagination() && identityQuery.getLimit() > 0) {
196  search = this.operationManager.searchPaginated(baseDN, filter.toString(), identityQuery);
197  } else {
198  search = this.operationManager.search(baseDN, filter.toString(), identityQuery.getReturningLdapAttributes(), identityQuery.getSearchScope());
199  }
200 
201  for (SearchResult result : search) {
202  if (!result.getNameInNamespace().equalsIgnoreCase(baseDN)) {
203  results.add(populateAttributedType(result, identityQuery));
204  }
205  }
206  } catch (Exception e) {
207  throw new ModelException("Querying of LDAP failed " + identityQuery, e);
208  }
209 
210  return results;
211  }
List< SearchResult > search(final String baseDN, final String filter, Collection< String > returningAttributes, int searchScope)
Definition: LDAPOperationManager.java:245
StringBuilder createIdentityTypeSearchFilter(final LDAPQuery identityQuery)
Definition: LDAPIdentityStore.java:292
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70
String getUuidLDAPAttributeName()
Definition: LDAPConfig.java:163
List< SearchResult > searchPaginated(final String baseDN, final String filter, final LDAPQuery identityQuery)
Definition: LDAPOperationManager.java:284
SearchResult lookupById(final String baseDN, final String id, final Collection< String > returningAttributes)
Definition: LDAPOperationManager.java:400
LDAPObject populateAttributedType(SearchResult searchResult, LDAPQuery ldapQuery)
Definition: LDAPIdentityStore.java:325
LDAPConfig getConfig()
Definition: LDAPIdentityStore.java:83

◆ getConfig()

LDAPConfig org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.getConfig ( )
inline

org.keycloak.storage.ldap.idm.store.IdentityStoreを実装しています。

83  {
84  return this.config;
85  }
final LDAPConfig config
Definition: LDAPIdentityStore.java:69

◆ getEntryIdentifier()

String org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.getEntryIdentifier ( final LDAPObject  ldapObject)
inlineprotected
465  {
466  try {
467  // we need this to retrieve the entry's identifier from the ldap server
468  String uuidAttrName = getConfig().getUuidLDAPAttributeName();
469 
470  String rdn = ldapObject.getDn().getFirstRdn();
471  String filter = "(" + EscapeStrategy.DEFAULT.escape(rdn) + ")";
472  List<SearchResult> search = this.operationManager.search(ldapObject.getDn().toString(), filter, Arrays.asList(uuidAttrName), SearchControls.OBJECT_SCOPE);
473  Attribute id = search.get(0).getAttributes().get(getConfig().getUuidLDAPAttributeName());
474 
475  if (id == null) {
476  throw new ModelException("Could not retrieve identifier for entry [" + ldapObject.getDn().toString() + "].");
477  }
478 
479  return this.operationManager.decodeEntryUUID(id.get());
480  } catch (NamingException ne) {
481  throw new ModelException("Could not retrieve identifier for entry [" + ldapObject.getDn().toString() + "].");
482  }
483  }
String decodeEntryUUID(final Object entryUUID)
Definition: LDAPOperationManager.java:634
List< SearchResult > search(final String baseDN, final String filter, Collection< String > returningAttributes, int searchScope)
Definition: LDAPOperationManager.java:245
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70
String getUuidLDAPAttributeName()
Definition: LDAPConfig.java:163
LDAPConfig getConfig()
Definition: LDAPIdentityStore.java:83

◆ getObjectClassesFilter()

StringBuilder org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.getObjectClassesFilter ( Collection< String >  objectClasses)
inlineprivate
310  {
311  StringBuilder builder = new StringBuilder();
312 
313  if (!objectClasses.isEmpty()) {
314  for (String objectClass : objectClasses) {
315  builder.append("(").append(LDAPConstants.OBJECT_CLASS).append(LDAPConstants.EQUAL).append(objectClass).append(")");
316  }
317  } else {
318  builder.append("(").append(LDAPConstants.OBJECT_CLASS).append(LDAPConstants.EQUAL).append("*").append(")");
319  }
320 
321  return builder;
322  }

◆ populateAttributedType()

LDAPObject org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.populateAttributedType ( SearchResult  searchResult,
LDAPQuery  ldapQuery 
)
inlineprivate
325  {
326  Set<String> readOnlyAttrNames = ldapQuery.getReturningReadOnlyLdapAttributes();
327  Set<String> lowerCasedAttrNames = new TreeSet<>();
328  for (String attrName : ldapQuery.getReturningLdapAttributes()) {
329  lowerCasedAttrNames.add(attrName.toLowerCase());
330  }
331 
332  try {
333  String entryDN = searchResult.getNameInNamespace();
334  Attributes attributes = searchResult.getAttributes();
335 
336  LDAPObject ldapObject = new LDAPObject();
337  LDAPDn dn = LDAPDn.fromString(entryDN);
338  ldapObject.setDn(dn);
339  ldapObject.setRdnAttributeName(dn.getFirstRdnAttrName());
340 
341  NamingEnumeration<? extends Attribute> ldapAttributes = attributes.getAll();
342 
343  while (ldapAttributes.hasMore()) {
344  Attribute ldapAttribute = ldapAttributes.next();
345 
346  try {
347  ldapAttribute.get();
348  } catch (NoSuchElementException nsee) {
349  continue;
350  }
351 
352  String ldapAttributeName = ldapAttribute.getID();
353 
354  if (ldapAttributeName.equalsIgnoreCase(getConfig().getUuidLDAPAttributeName())) {
355  Object uuidValue = ldapAttribute.get();
356  ldapObject.setUuid(this.operationManager.decodeEntryUUID(uuidValue));
357  }
358 
359  // Note: UUID is normally not populated here. It's populated just in case that it's used for name of other attribute as well
360  if (!ldapAttributeName.equalsIgnoreCase(getConfig().getUuidLDAPAttributeName()) || (lowerCasedAttrNames.contains(ldapAttributeName.toLowerCase()))) {
361  Set<String> attrValues = new LinkedHashSet<>();
362  NamingEnumeration<?> enumm = ldapAttribute.getAll();
363  while (enumm.hasMoreElements()) {
364  Object val = enumm.next();
365 
366  if (val instanceof byte[]) { // byte[]
367  String attrVal = Base64.encodeBytes((byte[]) val);
368  attrValues.add(attrVal);
369  } else { // String
370  String attrVal = val.toString().trim();
371  attrValues.add(attrVal);
372  }
373  }
374 
375  if (ldapAttributeName.equalsIgnoreCase(LDAPConstants.OBJECT_CLASS)) {
376  ldapObject.setObjectClasses(attrValues);
377  } else {
378  ldapObject.setAttribute(ldapAttributeName, attrValues);
379 
380  // readOnlyAttrNames are lower-cased
381  if (readOnlyAttrNames.contains(ldapAttributeName.toLowerCase())) {
382  ldapObject.addReadOnlyAttributeName(ldapAttributeName);
383  }
384  }
385  }
386  }
387 
388  if (logger.isTraceEnabled()) {
389  logger.tracef("Found ldap object and populated with the attributes. LDAP Object: %s", ldapObject.toString());
390  }
391  return ldapObject;
392 
393  } catch (Exception e) {
394  throw new ModelException("Could not populate attribute type " + searchResult.getNameInNamespace() + ".", e);
395  }
396  }
String decodeEntryUUID(final Object entryUUID)
Definition: LDAPOperationManager.java:634
static final Logger logger
Definition: LDAPIdentityStore.java:67
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70
LDAPConfig getConfig()
Definition: LDAPIdentityStore.java:83

◆ remove()

void org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.remove ( LDAPObject  ldapObject)
inline

org.keycloak.storage.ldap.idm.store.IdentityStoreを実装しています。

152  {
153  this.operationManager.removeEntry(ldapObject.getDn().toString());
154 
155  if (logger.isDebugEnabled()) {
156  logger.debugf("Type with identifier [%s] and DN [%s] successfully removed from LDAP store.", ldapObject.getUuid(), ldapObject.getDn().toString());
157  }
158  }
static final Logger logger
Definition: LDAPIdentityStore.java:67
void removeEntry(final String entryDn)
Definition: LDAPOperationManager.java:149
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70

◆ update()

void org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.update ( LDAPObject  ldapObject)
inline

org.keycloak.storage.ldap.idm.store.IdentityStoreを実装しています。

105  {
106  checkRename(ldapObject);
107 
108  BasicAttributes updatedAttributes = extractAttributes(ldapObject, false);
109  NamingEnumeration<Attribute> attributes = updatedAttributes.getAll();
110 
111  String entryDn = ldapObject.getDn().toString();
112  this.operationManager.modifyAttributes(entryDn, attributes);
113 
114  if (logger.isDebugEnabled()) {
115  logger.debugf("Type with identifier [%s] and DN [%s] successfully updated to LDAP store.", ldapObject.getUuid(), entryDn);
116  }
117  }
void checkRename(LDAPObject ldapObject)
Definition: LDAPIdentityStore.java:119
static final Logger logger
Definition: LDAPIdentityStore.java:67
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70
void modifyAttributes(String dn, NamingEnumeration< Attribute > attributes)
Definition: LDAPOperationManager.java:102
BasicAttributes extractAttributes(LDAPObject ldapObject, boolean isCreate)
Definition: LDAPIdentityStore.java:399

◆ updateADPassword()

void org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.updateADPassword ( String  userDN,
String  password,
LDAPOperationDecorator  passwordUpdateDecorator 
)
inlineprivate
270  {
271  try {
272  // Replace the "unicdodePwd" attribute with a new value
273  // Password must be both Unicode and a quoted string
274  String newQuotedPassword = "\"" + password + "\"";
275  byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");
276 
277  BasicAttribute unicodePwd = new BasicAttribute("unicodePwd", newUnicodePassword);
278 
279  List<ModificationItem> modItems = new ArrayList<ModificationItem>();
280  modItems.add(new ModificationItem(DirContext.REPLACE_ATTRIBUTE, unicodePwd));
281 
282  operationManager.modifyAttributes(userDN, modItems.toArray(new ModificationItem[] {}), passwordUpdateDecorator);
283  } catch (ModelException me) {
284  throw me;
285  } catch (Exception e) {
286  throw new ModelException(e);
287  }
288  }
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70
void modifyAttributes(String dn, NamingEnumeration< Attribute > attributes)
Definition: LDAPOperationManager.java:102

◆ updatePassword()

void org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.updatePassword ( LDAPObject  user,
String  password,
LDAPOperationDecorator  passwordUpdateDecorator 
)
inline

org.keycloak.storage.ldap.idm.store.IdentityStoreを実装しています。

243  {
244  String userDN = user.getDn().toString();
245 
246  if (logger.isDebugEnabled()) {
247  logger.debugf("Using DN [%s] for updating LDAP password of user", userDN);
248  }
249 
250  if (getConfig().isActiveDirectory()) {
251  updateADPassword(userDN, password, passwordUpdateDecorator);
252  } else {
253  ModificationItem[] mods = new ModificationItem[1];
254 
255  try {
256  BasicAttribute mod0 = new BasicAttribute(LDAPConstants.USER_PASSWORD_ATTRIBUTE, password);
257 
258  mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);
259 
260  operationManager.modifyAttributes(userDN, mods, passwordUpdateDecorator);
261  } catch (ModelException me) {
262  throw me;
263  } catch (Exception e) {
264  throw new ModelException("Error updating password.", e);
265  }
266  }
267  }
static final Logger logger
Definition: LDAPIdentityStore.java:67
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70
void modifyAttributes(String dn, NamingEnumeration< Attribute > attributes)
Definition: LDAPOperationManager.java:102
LDAPConfig getConfig()
Definition: LDAPIdentityStore.java:83
void updateADPassword(String userDN, String password, LDAPOperationDecorator passwordUpdateDecorator)
Definition: LDAPIdentityStore.java:270

◆ validatePassword()

void org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.validatePassword ( LDAPObject  user,
String  password 
) throws AuthenticationException
inline

org.keycloak.storage.ldap.idm.store.IdentityStoreを実装しています。

232  {
233  String userDN = user.getDn().toString();
234 
235  if (logger.isTraceEnabled()) {
236  logger.tracef("Using DN [%s] for authentication of user", userDN);
237  }
238 
239  operationManager.authenticate(userDN, password);
240  }
void authenticate(String dn, String password)
Definition: LDAPOperationManager.java:485
static final Logger logger
Definition: LDAPIdentityStore.java:67
final LDAPOperationManager operationManager
Definition: LDAPIdentityStore.java:70

メンバ詳解

◆ config

final LDAPConfig org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.config
private

◆ logger

final Logger org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.logger = Logger.getLogger(LDAPIdentityStore.class)
staticprivate

◆ operationManager

final LDAPOperationManager org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.operationManager
private

このクラス詳解は次のファイルから抽出されました: