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

公開メンバ関数

 UserAttributeLDAPStorageMapper (ComponentModel mapperModel, LDAPStorageProvider ldapProvider)
 
void onImportUserFromLDAP (LDAPObject ldapUser, UserModel user, RealmModel realm, boolean isCreate)
 
void onRegisterUserToLDAP (LDAPObject ldapUser, UserModel localUser, RealmModel realm)
 
UserModel proxy (final LDAPObject ldapUser, UserModel delegate, RealmModel realm)
 
void beforeLDAPQuery (LDAPQuery query)
 
SynchronizationResult syncDataFromFederationProviderToKeycloak (RealmModel realm)
 
SynchronizationResult syncDataFromKeycloakToFederationProvider (RealmModel realm)
 
List< UserModelgetGroupMembers (RealmModel realm, GroupModel group, int firstResult, int maxResults)
 
boolean onAuthenticationFailure (LDAPObject ldapUser, UserModel user, AuthenticationException ldapException, RealmModel realm)
 
LDAPStorageProvider getLdapProvider ()
 
void close ()
 

静的公開メンバ関数

static boolean parseBooleanParameter (ComponentModel mapperModel, String paramName)
 

静的公開変数類

static final String USER_MODEL_ATTRIBUTE = "user.model.attribute"
 
static final String LDAP_ATTRIBUTE = "ldap.attribute"
 
static final String READ_ONLY = "read.only"
 
static final String ALWAYS_READ_VALUE_FROM_LDAP = "always.read.value.from.ldap"
 
static final String IS_MANDATORY_IN_LDAP = "is.mandatory.in.ldap"
 
static final String IS_BINARY_ATTRIBUTE = "is.binary.attribute"
 

限定公開メンバ関数

void checkDuplicateEmail (String userModelAttrName, String email, RealmModel realm, KeycloakSession session, UserModel user)
 
void setPropertyOnUserModel (Property< Object > userModelProperty, UserModel user, String ldapAttrValue)
 

限定公開変数類

final KeycloakSession session
 
final ComponentModel mapperModel
 
final LDAPStorageProvider ldapProvider
 

静的関数

 [static initializer]
 

非公開メンバ関数

boolean isReadOnly ()
 

静的非公開変数類

static final Logger logger = Logger.getLogger(UserAttributeLDAPStorageMapper.class)
 
static final Map< String, Property< Object > > userModelProperties
 

詳解

著者
Marek Posolda

構築子と解体子

◆ UserAttributeLDAPStorageMapper()

org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.UserAttributeLDAPStorageMapper ( ComponentModel  mapperModel,
LDAPStorageProvider  ldapProvider 
)
inline
85  {
86  super(mapperModel, ldapProvider);
87  }
final ComponentModel mapperModel
Definition: AbstractLDAPStorageMapper.java:43
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44

関数詳解

◆ [static initializer]()

org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.[static initializer] ( )
inlinestaticpackage

◆ beforeLDAPQuery()

void org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.beforeLDAPQuery ( LDAPQuery  query)
inline

org.keycloak.storage.ldap.mappers.LDAPStorageMapperを実装しています。

390  {
391  String userModelAttrName = mapperModel.getConfig().getFirst(USER_MODEL_ATTRIBUTE);
392  String ldapAttrName = mapperModel.getConfig().getFirst(LDAP_ATTRIBUTE);
393 
394  // Add mapped attribute to returning ldap attributes
395  query.addReturningLdapAttribute(ldapAttrName);
396  if (isReadOnly()) {
397  query.addReturningReadOnlyLdapAttribute(ldapAttrName);
398  }
399 
400  // Change conditions and use ldapAttribute instead of userModel
401  for (Condition condition : query.getConditions()) {
402  condition.updateParameterName(userModelAttrName, ldapAttrName);
403  }
404  }
final ComponentModel mapperModel
Definition: AbstractLDAPStorageMapper.java:43
static final String USER_MODEL_ATTRIBUTE
Definition: UserAttributeLDAPStorageMapper.java:78
V getFirst(K key)
Definition: MultivaluedHashMap.java:86
MultivaluedHashMap< String, String > getConfig()
Definition: ComponentModel.java:71
static final String LDAP_ATTRIBUTE
Definition: UserAttributeLDAPStorageMapper.java:79
boolean isReadOnly()
Definition: UserAttributeLDAPStorageMapper.java:406

◆ checkDuplicateEmail()

void org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.checkDuplicateEmail ( String  userModelAttrName,
String  email,
RealmModel  realm,
KeycloakSession  session,
UserModel  user 
)
inlineprotected
166  {
167  if (email == null || realm.isDuplicateEmailsAllowed()) return;
168  if (UserModel.EMAIL.equalsIgnoreCase(userModelAttrName)) {
169  // lowercase before search
170  email = KeycloakModelUtils.toLowerCaseSafe(email);
171 
172  UserModel that = session.userLocalStorage().getUserByEmail(email, realm);
173  if (that != null && !that.getId().equals(user.getId())) {
175  String exceptionMessage = String.format("Can't import user '%s' from LDAP because email '%s' already exists in Keycloak. Existing user with this email is '%s'", user.getUsername(), email, that.getUsername());
176  throw new ModelDuplicateException(exceptionMessage, UserModel.EMAIL);
177  }
178  }
179  }
final KeycloakSession session
Definition: AbstractLDAPStorageMapper.java:42
KeycloakTransactionManager getTransactionManager()
UserModel getUserByEmail(String email, RealmModel realm)

◆ close()

void org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper.close ( )
inlineinherited

org.keycloak.provider.Providerを実装しています。

85  {
86 
87  }

◆ getGroupMembers()

List<UserModel> org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper.getGroupMembers ( RealmModel  realm,
GroupModel  group,
int  firstResult,
int  maxResults 
)
inlineinherited

org.keycloak.storage.ldap.mappers.LDAPStorageMapperを実装しています。

63  {
64  return Collections.emptyList();
65  }

◆ getLdapProvider()

LDAPStorageProvider org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper.getLdapProvider ( )
inlineinherited
79  {
80  return ldapProvider;
81  }
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44

◆ isReadOnly()

boolean org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.isReadOnly ( )
inlineprivate
406  {
408  }
static boolean parseBooleanParameter(ComponentModel mapperModel, String paramName)
Definition: AbstractLDAPStorageMapper.java:73
static final String READ_ONLY
Definition: UserAttributeLDAPStorageMapper.java:80
final ComponentModel mapperModel
Definition: AbstractLDAPStorageMapper.java:43

◆ onAuthenticationFailure()

boolean org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper.onAuthenticationFailure ( LDAPObject  ldapUser,
UserModel  user,
AuthenticationException  ldapException,
RealmModel  realm 
)
inlineinherited

org.keycloak.storage.ldap.mappers.LDAPStorageMapperを実装しています。

68  {
69  return false;
70  }

◆ onImportUserFromLDAP()

void org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.onImportUserFromLDAP ( LDAPObject  ldapUser,
UserModel  user,
RealmModel  realm,
boolean  isCreate 
)
inline

org.keycloak.storage.ldap.mappers.LDAPStorageMapperを実装しています。

90  {
91  String userModelAttrName = mapperModel.getConfig().getFirst(USER_MODEL_ATTRIBUTE);
92  String ldapAttrName = mapperModel.getConfig().getFirst(LDAP_ATTRIBUTE);
93 
94  // We won't update binary attributes to Keycloak DB. They might be too big
95  boolean isBinaryAttribute = mapperModel.get(IS_BINARY_ATTRIBUTE, false);
96  if (isBinaryAttribute) {
97  return;
98  }
99 
100  Property<Object> userModelProperty = userModelProperties.get(userModelAttrName.toLowerCase());
101 
102  if (userModelProperty != null) {
103 
104  // we have java property on UserModel
105  String ldapAttrValue = ldapUser.getAttributeAsString(ldapAttrName);
106 
107  checkDuplicateEmail(userModelAttrName, ldapAttrValue, realm, ldapProvider.getSession(), user);
108 
109  setPropertyOnUserModel(userModelProperty, user, ldapAttrValue);
110  } else {
111 
112  // we don't have java property. Let's set attribute
113  Set<String> ldapAttrValue = ldapUser.getAttributeAsSet(ldapAttrName);
114  if (ldapAttrValue != null) {
115  user.setAttribute(userModelAttrName, new ArrayList<>(ldapAttrValue));
116  } else {
117  user.removeAttribute(userModelAttrName);
118  }
119  }
120  }
void setPropertyOnUserModel(Property< Object > userModelProperty, UserModel user, String ldapAttrValue)
Definition: UserAttributeLDAPStorageMapper.java:411
final ComponentModel mapperModel
Definition: AbstractLDAPStorageMapper.java:43
static final String USER_MODEL_ATTRIBUTE
Definition: UserAttributeLDAPStorageMapper.java:78
V getFirst(K key)
Definition: MultivaluedHashMap.java:86
static final String IS_BINARY_ATTRIBUTE
Definition: UserAttributeLDAPStorageMapper.java:83
void checkDuplicateEmail(String userModelAttrName, String email, RealmModel realm, KeycloakSession session, UserModel user)
Definition: UserAttributeLDAPStorageMapper.java:166
KeycloakSession getSession()
Definition: LDAPStorageProvider.java:122
MultivaluedHashMap< String, String > getConfig()
Definition: ComponentModel.java:71
static final Map< String, Property< Object > > userModelProperties
Definition: UserAttributeLDAPStorageMapper.java:55
String get(String key)
Definition: ComponentModel.java:83
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44
static final String LDAP_ATTRIBUTE
Definition: UserAttributeLDAPStorageMapper.java:79

◆ onRegisterUserToLDAP()

void org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.onRegisterUserToLDAP ( LDAPObject  ldapUser,
UserModel  localUser,
RealmModel  realm 
)
inline

org.keycloak.storage.ldap.mappers.LDAPStorageMapperを実装しています。

123  {
124  String userModelAttrName = mapperModel.getConfig().getFirst(USER_MODEL_ATTRIBUTE);
125  String ldapAttrName = mapperModel.getConfig().getFirst(LDAP_ATTRIBUTE);
126  boolean isMandatoryInLdap = parseBooleanParameter(mapperModel, IS_MANDATORY_IN_LDAP);
127 
128  Property<Object> userModelProperty = userModelProperties.get(userModelAttrName.toLowerCase());
129 
130  if (userModelProperty != null) {
131 
132  // we have java property on UserModel. Assuming we support just properties of simple types
133  Object attrValue = userModelProperty.getValue(localUser);
134 
135  if (attrValue == null) {
136  if (isMandatoryInLdap) {
137  ldapUser.setSingleAttribute(ldapAttrName, LDAPConstants.EMPTY_ATTRIBUTE_VALUE);
138  } else {
139  ldapUser.setAttribute(ldapAttrName, new LinkedHashSet<String>());
140  }
141  } else {
142  ldapUser.setSingleAttribute(ldapAttrName, attrValue.toString());
143  }
144  } else {
145 
146  // we don't have java property. Let's set attribute
147  List<String> attrValues = localUser.getAttribute(userModelAttrName);
148 
149  if (attrValues.size() == 0) {
150  if (isMandatoryInLdap) {
151  ldapUser.setSingleAttribute(ldapAttrName, LDAPConstants.EMPTY_ATTRIBUTE_VALUE);
152  } else {
153  ldapUser.setAttribute(ldapAttrName, new LinkedHashSet<String>());
154  }
155  } else {
156  ldapUser.setAttribute(ldapAttrName, new LinkedHashSet<>(attrValues));
157  }
158  }
159 
160  if (isReadOnly()) {
161  ldapUser.addReadOnlyAttributeName(ldapAttrName);
162  }
163  }
static boolean parseBooleanParameter(ComponentModel mapperModel, String paramName)
Definition: AbstractLDAPStorageMapper.java:73
final ComponentModel mapperModel
Definition: AbstractLDAPStorageMapper.java:43
static final String USER_MODEL_ATTRIBUTE
Definition: UserAttributeLDAPStorageMapper.java:78
V getFirst(K key)
Definition: MultivaluedHashMap.java:86
MultivaluedHashMap< String, String > getConfig()
Definition: ComponentModel.java:71
static final Map< String, Property< Object > > userModelProperties
Definition: UserAttributeLDAPStorageMapper.java:55
static final String IS_MANDATORY_IN_LDAP
Definition: UserAttributeLDAPStorageMapper.java:82
static final String LDAP_ATTRIBUTE
Definition: UserAttributeLDAPStorageMapper.java:79
boolean isReadOnly()
Definition: UserAttributeLDAPStorageMapper.java:406

◆ parseBooleanParameter()

static boolean org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper.parseBooleanParameter ( ComponentModel  mapperModel,
String  paramName 
)
inlinestaticinherited
73  {
74  String paramm = mapperModel.getConfig().getFirst(paramName);
75  return Boolean.parseBoolean(paramm);
76  }
final ComponentModel mapperModel
Definition: AbstractLDAPStorageMapper.java:43
V getFirst(K key)
Definition: MultivaluedHashMap.java:86
MultivaluedHashMap< String, String > getConfig()
Definition: ComponentModel.java:71

◆ proxy()

UserModel org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.proxy ( final LDAPObject  ldapUser,
UserModel  delegate,
RealmModel  realm 
)
inline

org.keycloak.storage.ldap.mappers.LDAPStorageMapperを実装しています。

182  {
183  final String userModelAttrName = mapperModel.getConfig().getFirst(USER_MODEL_ATTRIBUTE);
184  final String ldapAttrName = mapperModel.getConfig().getFirst(LDAP_ATTRIBUTE);
185  boolean isAlwaysReadValueFromLDAP = parseBooleanParameter(mapperModel, ALWAYS_READ_VALUE_FROM_LDAP);
186  final boolean isMandatoryInLdap = parseBooleanParameter(mapperModel, IS_MANDATORY_IN_LDAP);
187  final boolean isBinaryAttribute = parseBooleanParameter(mapperModel, IS_BINARY_ATTRIBUTE);
188 
189  // For writable mode, we want to propagate writing of attribute to LDAP as well
190  if (ldapProvider.getEditMode() == UserStorageProvider.EditMode.WRITABLE && !isReadOnly()) {
191 
192  delegate = new TxAwareLDAPUserModelDelegate(delegate, ldapProvider, ldapUser) {
193 
194  @Override
195  public void setSingleAttribute(String name, String value) {
196  if (setLDAPAttribute(name, value)) {
197  super.setSingleAttribute(name, value);
198  }
199  }
200 
201  @Override
202  public void setAttribute(String name, List<String> values) {
203  if (setLDAPAttribute(name, values)) {
204  super.setAttribute(name, values);
205  }
206  }
207 
208  @Override
209  public void removeAttribute(String name) {
210  if ( setLDAPAttribute(name, null)) {
211  super.removeAttribute(name);
212  }
213  }
214 
215  @Override
216  public void setEmail(String email) {
217  checkDuplicateEmail(userModelAttrName, email, realm, ldapProvider.getSession(), this);
218 
219  setLDAPAttribute(UserModel.EMAIL, email);
220  super.setEmail(email);
221  }
222 
223  @Override
224  public void setLastName(String lastName) {
225  setLDAPAttribute(UserModel.LAST_NAME, lastName);
226  super.setLastName(lastName);
227  }
228 
229  @Override
230  public void setFirstName(String firstName) {
231  setLDAPAttribute(UserModel.FIRST_NAME, firstName);
232  super.setFirstName(firstName);
233  }
234 
235  protected boolean setLDAPAttribute(String modelAttrName, Object value) {
236  if (modelAttrName.equalsIgnoreCase(userModelAttrName)) {
237  if (UserAttributeLDAPStorageMapper.logger.isTraceEnabled()) {
238  UserAttributeLDAPStorageMapper.logger.tracef("Pushing user attribute to LDAP. username: %s, Model attribute name: %s, LDAP attribute name: %s, Attribute value: %s", getUsername(), modelAttrName, ldapAttrName, value);
239  }
240 
241  ensureTransactionStarted();
242 
243  if (value == null) {
244  if (isMandatoryInLdap) {
245  ldapUser.setSingleAttribute(ldapAttrName, LDAPConstants.EMPTY_ATTRIBUTE_VALUE);
246  } else {
247  ldapUser.setAttribute(ldapAttrName, new LinkedHashSet<String>());
248  }
249  } else if (value instanceof String) {
250  ldapUser.setSingleAttribute(ldapAttrName, (String) value);
251  } else {
252  List<String> asList = (List<String>) value;
253  if (asList.isEmpty() && isMandatoryInLdap) {
254  ldapUser.setSingleAttribute(ldapAttrName, LDAPConstants.EMPTY_ATTRIBUTE_VALUE);
255  } else {
256  ldapUser.setAttribute(ldapAttrName, new LinkedHashSet<>(asList));
257  }
258  }
259 
260  if (isBinaryAttribute) {
261  UserAttributeLDAPStorageMapper.logger.debugf("Skip writing model attribute '%s' to DB for user '%s' as it is mapped to binary LDAP attribute.", userModelAttrName, getUsername());
262  return false;
263  } else {
264  return true;
265  }
266  }
267 
268  return true;
269  }
270 
271  };
272 
273  } else if (isBinaryAttribute) {
274 
275  delegate = new UserModelDelegate(delegate) {
276 
277  @Override
278  public void setSingleAttribute(String name, String value) {
279  if (name.equalsIgnoreCase(userModelAttrName)) {
280  logSkipDBWrite();
281  } else {
282  super.setSingleAttribute(name, value);
283  }
284  }
285 
286  @Override
287  public void setAttribute(String name, List<String> values) {
288  if (name.equalsIgnoreCase(userModelAttrName)) {
289  logSkipDBWrite();
290  } else {
291  super.setAttribute(name, values);
292  }
293  }
294 
295  @Override
296  public void removeAttribute(String name) {
297  if (name.equalsIgnoreCase(userModelAttrName)) {
298  logSkipDBWrite();
299  } else {
300  super.removeAttribute(name);
301  }
302  }
303 
304  private void logSkipDBWrite() {
305  logger.debugf("Skip writing model attribute '%s' to DB for user '%s' as it is mapped to binary LDAP attribute", userModelAttrName, getUsername());
306  }
307 
308  };
309 
310  }
311 
312  // We prefer to read attribute value from LDAP instead of from local Keycloak DB
313  if (isAlwaysReadValueFromLDAP) {
314 
315  delegate = new UserModelDelegate(delegate) {
316 
317  @Override
318  public String getFirstAttribute(String name) {
319  if (name.equalsIgnoreCase(userModelAttrName)) {
320  return ldapUser.getAttributeAsString(ldapAttrName);
321  } else {
322  return super.getFirstAttribute(name);
323  }
324  }
325 
326  @Override
327  public List<String> getAttribute(String name) {
328  if (name.equalsIgnoreCase(userModelAttrName)) {
329  Collection<String> ldapAttrValue = ldapUser.getAttributeAsSet(ldapAttrName);
330  if (ldapAttrValue == null) {
331  return Collections.emptyList();
332  } else {
333  return new ArrayList<>(ldapAttrValue);
334  }
335  } else {
336  return super.getAttribute(name);
337  }
338  }
339 
340  @Override
341  public Map<String, List<String>> getAttributes() {
342  Map<String, List<String>> attrs = new HashMap<>(super.getAttributes());
343 
344  // Ignore UserModel properties
345  if (userModelProperties.get(userModelAttrName.toLowerCase()) != null) {
346  return attrs;
347  }
348 
349  Set<String> allLdapAttrValues = ldapUser.getAttributeAsSet(ldapAttrName);
350  if (allLdapAttrValues != null) {
351  attrs.put(userModelAttrName, new ArrayList<>(allLdapAttrValues));
352  }
353  return attrs;
354  }
355 
356  @Override
357  public String getEmail() {
358  if (UserModel.EMAIL.equalsIgnoreCase(userModelAttrName)) {
359  return ldapUser.getAttributeAsString(ldapAttrName);
360  } else {
361  return super.getEmail();
362  }
363  }
364 
365  @Override
366  public String getLastName() {
367  if (UserModel.LAST_NAME.equalsIgnoreCase(userModelAttrName)) {
368  return ldapUser.getAttributeAsString(ldapAttrName);
369  } else {
370  return super.getLastName();
371  }
372  }
373 
374  @Override
375  public String getFirstName() {
376  if (UserModel.FIRST_NAME.equalsIgnoreCase(userModelAttrName)) {
377  return ldapUser.getAttributeAsString(ldapAttrName);
378  } else {
379  return super.getFirstName();
380  }
381  }
382 
383  };
384  }
385 
386  return delegate;
387  }
static boolean parseBooleanParameter(ComponentModel mapperModel, String paramName)
Definition: AbstractLDAPStorageMapper.java:73
UserAttributeLDAPStorageMapper(ComponentModel mapperModel, LDAPStorageProvider ldapProvider)
Definition: UserAttributeLDAPStorageMapper.java:85
final ComponentModel mapperModel
Definition: AbstractLDAPStorageMapper.java:43
static final String USER_MODEL_ATTRIBUTE
Definition: UserAttributeLDAPStorageMapper.java:78
V getFirst(K key)
Definition: MultivaluedHashMap.java:86
static final String IS_BINARY_ATTRIBUTE
Definition: UserAttributeLDAPStorageMapper.java:83
void checkDuplicateEmail(String userModelAttrName, String email, RealmModel realm, KeycloakSession session, UserModel user)
Definition: UserAttributeLDAPStorageMapper.java:166
KeycloakSession getSession()
Definition: LDAPStorageProvider.java:122
static final Logger logger
Definition: UserAttributeLDAPStorageMapper.java:53
static final String ALWAYS_READ_VALUE_FROM_LDAP
Definition: UserAttributeLDAPStorageMapper.java:81
MultivaluedHashMap< String, String > getConfig()
Definition: ComponentModel.java:71
EditMode getEditMode()
Definition: LDAPStorageProvider.java:130
static final Map< String, Property< Object > > userModelProperties
Definition: UserAttributeLDAPStorageMapper.java:55
static final String IS_MANDATORY_IN_LDAP
Definition: UserAttributeLDAPStorageMapper.java:82
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44
WRITABLE
Definition: UserStorageProvider.java:80
static final String LDAP_ATTRIBUTE
Definition: UserAttributeLDAPStorageMapper.java:79
boolean isReadOnly()
Definition: UserAttributeLDAPStorageMapper.java:406

◆ setPropertyOnUserModel()

void org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.setPropertyOnUserModel ( Property< Object >  userModelProperty,
UserModel  user,
String  ldapAttrValue 
)
inlineprotected
411  {
412  if (ldapAttrValue == null) {
413  userModelProperty.setValue(user, null);
414  } else {
415  Class<Object> clazz = userModelProperty.getJavaClass();
416 
417  if (String.class.equals(clazz)) {
418  userModelProperty.setValue(user, ldapAttrValue);
419  } else if (Boolean.class.equals(clazz) || boolean.class.equals(clazz)) {
420  Boolean boolVal = Boolean.valueOf(ldapAttrValue);
421  userModelProperty.setValue(user, boolVal);
422  } else {
423  logger.warnf("Don't know how to set the property '%s' on user '%s' . Value of LDAP attribute is '%s' ", userModelProperty.getName(), user.getUsername(), ldapAttrValue.toString());
424  }
425  }
426  }
static final Logger logger
Definition: UserAttributeLDAPStorageMapper.java:53

◆ syncDataFromFederationProviderToKeycloak()

SynchronizationResult org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper.syncDataFromFederationProviderToKeycloak ( RealmModel  realm)
inlineinherited

org.keycloak.storage.ldap.mappers.LDAPStorageMapperを実装しています。

53  {
54  return new SynchronizationResult();
55  }

◆ syncDataFromKeycloakToFederationProvider()

SynchronizationResult org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper.syncDataFromKeycloakToFederationProvider ( RealmModel  realm)
inlineinherited

org.keycloak.storage.ldap.mappers.LDAPStorageMapperを実装しています。

58  {
59  return new SynchronizationResult();
60  }

メンバ詳解

◆ ALWAYS_READ_VALUE_FROM_LDAP

final String org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.ALWAYS_READ_VALUE_FROM_LDAP = "always.read.value.from.ldap"
static

◆ IS_BINARY_ATTRIBUTE

final String org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.IS_BINARY_ATTRIBUTE = "is.binary.attribute"
static

◆ IS_MANDATORY_IN_LDAP

final String org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.IS_MANDATORY_IN_LDAP = "is.mandatory.in.ldap"
static

◆ LDAP_ATTRIBUTE

final String org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.LDAP_ATTRIBUTE = "ldap.attribute"
static

◆ ldapProvider

final LDAPStorageProvider org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper.ldapProvider
protectedinherited

◆ logger

final Logger org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.logger = Logger.getLogger(UserAttributeLDAPStorageMapper.class)
staticprivate

◆ mapperModel

final ComponentModel org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper.mapperModel
protectedinherited

◆ READ_ONLY

final String org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.READ_ONLY = "read.only"
static

◆ session

final KeycloakSession org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper.session
protectedinherited

◆ USER_MODEL_ATTRIBUTE

final String org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.USER_MODEL_ATTRIBUTE = "user.model.attribute"
static

◆ userModelProperties

final Map<String, Property<Object> > org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper.userModelProperties
staticprivate

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