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

公開メンバ関数

 FullNameLDAPStorageMapper (ComponentModel mapperModel, LDAPStorageProvider ldapProvider)
 
void onImportUserFromLDAP (LDAPObject ldapUser, UserModel user, RealmModel realm, boolean isCreate)
 
void onRegisterUserToLDAP (LDAPObject ldapUser, UserModel localUser, RealmModel realm)
 
UserModel proxy (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 LDAP_FULL_NAME_ATTRIBUTE = "ldap.full.name.attribute"
 
static final String READ_ONLY = "read.only"
 
static final String WRITE_ONLY = "write.only"
 

限定公開メンバ関数

String getLdapFullNameAttrName ()
 
String getFullNameForWriteToLDAP (String firstName, String lastName, String username)
 

限定公開変数類

final KeycloakSession session
 
final ComponentModel mapperModel
 
final LDAPStorageProvider ldapProvider
 

非公開メンバ関数

boolean isBlank (String attr)
 
boolean isReadOnly ()
 
boolean isWriteOnly ()
 
boolean isFallbackToUsername ()
 

詳解

Mapper useful for the LDAP deployments when some attribute (usually CN) is mapped to full name of user

著者
Marek Posolda

構築子と解体子

◆ FullNameLDAPStorageMapper()

org.keycloak.storage.ldap.mappers.FullNameLDAPStorageMapper.FullNameLDAPStorageMapper ( ComponentModel  mapperModel,
LDAPStorageProvider  ldapProvider 
)
inline
47  {
48  super(mapperModel, ldapProvider);
49  }
final ComponentModel mapperModel
Definition: AbstractLDAPStorageMapper.java:43
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44

関数詳解

◆ beforeLDAPQuery()

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

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

126  {
127  if (isWriteOnly()) {
128  return;
129  }
130 
131  String ldapFullNameAttrName = getLdapFullNameAttrName();
132  query.addReturningLdapAttribute(ldapFullNameAttrName);
133 
134  // Change conditions and compute condition for fullName from the conditions for firstName and lastName. Right now just "equal" condition is supported
135  EqualCondition firstNameCondition = null;
136  EqualCondition lastNameCondition = null;
137  Set<Condition> conditionsCopy = new HashSet<Condition>(query.getConditions());
138  for (Condition condition : conditionsCopy) {
139  String paramName = condition.getParameterName();
140  if (paramName != null) {
141  if (paramName.equals(UserModel.FIRST_NAME)) {
142  firstNameCondition = (EqualCondition) condition;
143  query.getConditions().remove(condition);
144  } else if (paramName.equals(UserModel.LAST_NAME)) {
145  lastNameCondition = (EqualCondition) condition;
146  query.getConditions().remove(condition);
147  } else if (paramName.equals(LDAPConstants.GIVENNAME)) {
148  // Some previous mapper already converted it to LDAP name
149  firstNameCondition = (EqualCondition) condition;
150  } else if (paramName.equals(LDAPConstants.SN)) {
151  // Some previous mapper already converted it to LDAP name
152  lastNameCondition = (EqualCondition) condition;
153  }
154  }
155  }
156 
157 
158  String fullName = null;
159  if (firstNameCondition != null && lastNameCondition != null) {
160  fullName = firstNameCondition.getValue() + " " + lastNameCondition.getValue();
161  } else if (firstNameCondition != null) {
162  fullName = (String) firstNameCondition.getValue();
163  } else if (lastNameCondition != null) {
164  fullName = (String) lastNameCondition.getValue();
165  } else {
166  return;
167  }
168 
169  EscapeStrategy escapeStrategy = firstNameCondition!=null ? firstNameCondition.getEscapeStrategy() : lastNameCondition.getEscapeStrategy();
170 
171  EqualCondition fullNameCondition = new EqualCondition(ldapFullNameAttrName, fullName, escapeStrategy);
172  query.addWhereCondition(fullNameCondition);
173  }
boolean isWriteOnly()
Definition: FullNameLDAPStorageMapper.java:202
String getLdapFullNameAttrName()
Definition: FullNameLDAPStorageMapper.java:175

◆ close()

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

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

85  {
86 
87  }

◆ getFullNameForWriteToLDAP()

String org.keycloak.storage.ldap.mappers.FullNameLDAPStorageMapper.getFullNameForWriteToLDAP ( String  firstName,
String  lastName,
String  username 
)
inlineprotected
180  {
181  if (!isBlank(firstName) && !isBlank(lastName)) {
182  return firstName + " " + lastName;
183  } else if (!isBlank(firstName)) {
184  return firstName;
185  } else if (!isBlank(lastName)) {
186  return lastName;
187  } else if (isFallbackToUsername()) {
188  return username;
189  } else {
190  return LDAPConstants.EMPTY_ATTRIBUTE_VALUE;
191  }
192  }
boolean isBlank(String attr)
Definition: FullNameLDAPStorageMapper.java:194
boolean isFallbackToUsername()
Definition: FullNameLDAPStorageMapper.java:208

◆ 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  }

◆ getLdapFullNameAttrName()

String org.keycloak.storage.ldap.mappers.FullNameLDAPStorageMapper.getLdapFullNameAttrName ( )
inlineprotected
175  {
176  String ldapFullNameAttrName = mapperModel.getConfig().getFirst(LDAP_FULL_NAME_ATTRIBUTE);
177  return ldapFullNameAttrName == null ? LDAPConstants.CN : ldapFullNameAttrName;
178  }
final ComponentModel mapperModel
Definition: AbstractLDAPStorageMapper.java:43
V getFirst(K key)
Definition: MultivaluedHashMap.java:86
MultivaluedHashMap< String, String > getConfig()
Definition: ComponentModel.java:71
static final String LDAP_FULL_NAME_ATTRIBUTE
Definition: FullNameLDAPStorageMapper.java:42

◆ getLdapProvider()

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

◆ isBlank()

boolean org.keycloak.storage.ldap.mappers.FullNameLDAPStorageMapper.isBlank ( String  attr)
inlineprivate
194  {
195  return attr == null || attr.trim().isEmpty();
196  }

◆ isFallbackToUsername()

boolean org.keycloak.storage.ldap.mappers.FullNameLDAPStorageMapper.isFallbackToUsername ( )
inlineprivate
208  {
209  String rdnLdapAttrConfig = getLdapProvider().getLdapIdentityStore().getConfig().getRdnLdapAttribute();
210  return !isReadOnly() && getLdapFullNameAttrName().equalsIgnoreCase(rdnLdapAttrConfig);
211  }
String getRdnLdapAttribute()
Definition: LDAPConfig.java:196
LDAPIdentityStore getLdapIdentityStore()
Definition: LDAPStorageProvider.java:126
LDAPStorageProvider getLdapProvider()
Definition: AbstractLDAPStorageMapper.java:79
LDAPConfig getConfig()
Definition: LDAPIdentityStore.java:83
String getLdapFullNameAttrName()
Definition: FullNameLDAPStorageMapper.java:175
boolean isReadOnly()
Definition: FullNameLDAPStorageMapper.java:198

◆ isReadOnly()

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

◆ isWriteOnly()

boolean org.keycloak.storage.ldap.mappers.FullNameLDAPStorageMapper.isWriteOnly ( )
inlineprivate
202  {
204  }
static boolean parseBooleanParameter(ComponentModel mapperModel, String paramName)
Definition: AbstractLDAPStorageMapper.java:73
final ComponentModel mapperModel
Definition: AbstractLDAPStorageMapper.java:43
static final String WRITE_ONLY
Definition: FullNameLDAPStorageMapper.java:44

◆ 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.FullNameLDAPStorageMapper.onImportUserFromLDAP ( LDAPObject  ldapUser,
UserModel  user,
RealmModel  realm,
boolean  isCreate 
)
inline

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

52  {
53  if (isWriteOnly()) {
54  return;
55  }
56 
57  String ldapFullNameAttrName = getLdapFullNameAttrName();
58  String fullName = ldapUser.getAttributeAsString(ldapFullNameAttrName);
59  if (fullName == null) {
60  return;
61  }
62 
63  fullName = fullName.trim();
64  if (!fullName.isEmpty()) {
65  int lastSpaceIndex = fullName.lastIndexOf(" ");
66  if (lastSpaceIndex == -1) {
67  user.setLastName(fullName);
68  } else {
69  user.setFirstName(fullName.substring(0, lastSpaceIndex));
70  user.setLastName(fullName.substring(lastSpaceIndex + 1));
71  }
72  }
73  }
boolean isWriteOnly()
Definition: FullNameLDAPStorageMapper.java:202
String getLdapFullNameAttrName()
Definition: FullNameLDAPStorageMapper.java:175

◆ onRegisterUserToLDAP()

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

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

76  {
77  String ldapFullNameAttrName = getLdapFullNameAttrName();
78  String fullName = getFullNameForWriteToLDAP(localUser.getFirstName(), localUser.getLastName(), localUser.getUsername());
79  ldapUser.setSingleAttribute(ldapFullNameAttrName, fullName);
80 
81  if (isReadOnly()) {
82  ldapUser.addReadOnlyAttributeName(ldapFullNameAttrName);
83  }
84  }
String getFullNameForWriteToLDAP(String firstName, String lastName, String username)
Definition: FullNameLDAPStorageMapper.java:180
String getLdapFullNameAttrName()
Definition: FullNameLDAPStorageMapper.java:175
boolean isReadOnly()
Definition: FullNameLDAPStorageMapper.java:198

◆ 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.FullNameLDAPStorageMapper.proxy ( LDAPObject  ldapUser,
UserModel  delegate,
RealmModel  realm 
)
inline

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

87  {
88  if (ldapProvider.getEditMode() == UserStorageProvider.EditMode.WRITABLE && !isReadOnly()) {
89 
90 
91  TxAwareLDAPUserModelDelegate txDelegate = new TxAwareLDAPUserModelDelegate(delegate, ldapProvider, ldapUser) {
92 
93  @Override
94  public void setFirstName(String firstName) {
95  super.setFirstName(firstName);
96  setFullNameToLDAPObject();
97  }
98 
99  @Override
100  public void setLastName(String lastName) {
101  super.setLastName(lastName);
102  setFullNameToLDAPObject();
103  }
104 
105  private void setFullNameToLDAPObject() {
106  String fullName = getFullNameForWriteToLDAP(getFirstName(), getLastName(), getUsername());
107  if (logger.isTraceEnabled()) {
108  logger.tracef("Pushing full name attribute to LDAP. Full name: %s", fullName);
109  }
110 
111  ensureTransactionStarted();
112 
113  String ldapFullNameAttrName = getLdapFullNameAttrName();
114  ldapUser.setSingleAttribute(ldapFullNameAttrName, fullName);
115  }
116 
117  };
118 
119  return txDelegate;
120  } else {
121  return delegate;
122  }
123  }
String getFullNameForWriteToLDAP(String firstName, String lastName, String username)
Definition: FullNameLDAPStorageMapper.java:180
EditMode getEditMode()
Definition: LDAPStorageProvider.java:130
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44
WRITABLE
Definition: UserStorageProvider.java:80
String getLdapFullNameAttrName()
Definition: FullNameLDAPStorageMapper.java:175
boolean isReadOnly()
Definition: FullNameLDAPStorageMapper.java:198

◆ 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  }

メンバ詳解

◆ LDAP_FULL_NAME_ATTRIBUTE

final String org.keycloak.storage.ldap.mappers.FullNameLDAPStorageMapper.LDAP_FULL_NAME_ATTRIBUTE = "ldap.full.name.attribute"
static

◆ ldapProvider

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

◆ mapperModel

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

◆ READ_ONLY

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

◆ session

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

◆ WRITE_ONLY

final String org.keycloak.storage.ldap.mappers.FullNameLDAPStorageMapper.WRITE_ONLY = "write.only"
static

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