|
static LDAPObject | addUserToLDAP (LDAPStorageProvider ldapProvider, RealmModel realm, UserModel user) |
|
static LDAPQuery | createQueryForUserSearch (LDAPStorageProvider ldapProvider, RealmModel realm) |
|
static void | computeAndSetDn (LDAPConfig config, LDAPObject ldapUser) |
|
static String | getUsername (LDAPObject ldapUser, LDAPConfig config) |
|
static void | checkUuid (LDAPObject ldapUser, LDAPConfig config) |
|
static LDAPObject | createLDAPGroup (LDAPStorageProvider ldapProvider, String groupName, String groupNameAttribute, Collection< String > objectClasses, String parentDn, Map< String, Set< String >> additionalAttributes) |
|
static void | addMember (LDAPStorageProvider ldapProvider, MembershipType membershipType, String memberAttrName, String memberChildAttrName, LDAPObject ldapParent, LDAPObject ldapChild, boolean sendLDAPUpdateRequest) |
|
static void | deleteMember (LDAPStorageProvider ldapProvider, MembershipType membershipType, String memberAttrName, String memberChildAttrName, LDAPObject ldapParent, LDAPObject ldapChild) |
|
static Set< String > | getExistingMemberships (String memberAttrName, LDAPObject ldapRole) |
|
static String | getMemberValueOfChildObject (LDAPObject ldapUser, MembershipType membershipType, String memberChildAttrName) |
|
static List< LDAPObject > | loadAllLDAPObjects (LDAPQuery ldapQuery, LDAPStorageProvider ldapProvider) |
|
static void | validateCustomLdapFilter (String customFilter) throws ComponentValidationException |
|
Allow to directly call some operations against LDAPIdentityStore.
- 著者
- Marek Posolda
◆ addMember()
Add ldapChild as member of ldapParent and save ldapParent to LDAP.
- 引数
-
ldapProvider | |
membershipType | how is 'member' attribute saved (full DN or just uid) |
memberAttrName | usually 'member' |
memberChildAttrName | used just if membershipType is UID. Usually 'uid' |
ldapParent | role or group |
ldapChild | usually user (or child group or child role) |
sendLDAPUpdateRequest | if true, the method will send LDAP update request too. Otherwise it will skip it |
166 if (membershipType == MembershipType.DN) {
167 for (String membership : memberships) {
168 if (LDAPConstants.EMPTY_MEMBER_ATTRIBUTE_VALUE.equals(membership)) {
169 memberships.remove(membership);
177 memberships.add(membership);
178 ldapParent.setAttribute(memberAttrName, memberships);
180 if (sendLDAPUpdateRequest) {
181 ldapProvider.getLdapIdentityStore().update(ldapParent);
static String getMemberValueOfChildObject(LDAPObject ldapUser, MembershipType membershipType, String memberChildAttrName)
Definition: LDAPUtils.java:229
static Set< String > getExistingMemberships(String memberAttrName, LDAPObject ldapRole)
Definition: LDAPUtils.java:218
◆ addUserToLDAP()
- 引数
-
- 戻り値
- newly created LDAPObject with all the attributes, uuid and DN properly set
56 LDAPObject ldapUser =
new LDAPObject();
58 LDAPIdentityStore ldapStore = ldapProvider.getLdapIdentityStore();
59 LDAPConfig ldapConfig = ldapStore.getConfig();
60 ldapUser.setRdnAttributeName(ldapConfig.getRdnLdapAttribute());
61 ldapUser.setObjectClasses(ldapConfig.getUserObjectClasses());
63 List<ComponentModel> federationMappers = realm.getComponents(ldapProvider.getModel().getId(), LDAPStorageMapper.class.getName());
64 List<ComponentModel> sortedMappers = ldapProvider.getMapperManager().sortMappersAsc(federationMappers);
65 for (ComponentModel mapperModel : sortedMappers) {
66 LDAPStorageMapper ldapMapper = ldapProvider.getMapperManager().getMapper(mapperModel);
67 ldapMapper.onRegisterUserToLDAP(ldapUser, user, realm);
70 LDAPUtils.computeAndSetDn(ldapConfig, ldapUser);
71 ldapStore.add(ldapUser);
◆ checkUuid()
static void org.keycloak.storage.ldap.LDAPUtils.checkUuid |
( |
LDAPObject |
ldapUser, |
|
|
LDAPConfig |
config |
|
) |
| |
|
inlinestatic |
120 if (ldapUser.getUuid() == null) {
121 throw new ModelException(
"User returned from LDAP has null uuid! Check configuration of your LDAP settings. UUID Attribute must be unique among your LDAP records and available on all the LDAP user records. " +
122 "If your LDAP server really doesn't support the notion of UUID, you can use any other attribute, which is supposed to be unique among LDAP users in tree. For example 'uid' or 'entryDN' . " +
123 "Mapped UUID LDAP attribute: " + config.getUuidLDAPAttributeName() +
", user DN: " + ldapUser.getDn());
◆ computeAndSetDn()
static void org.keycloak.storage.ldap.LDAPUtils.computeAndSetDn |
( |
LDAPConfig |
config, |
|
|
LDAPObject |
ldapUser |
|
) |
| |
|
inlinestatic |
96 String rdnLdapAttrName = config.getRdnLdapAttribute();
97 String rdnLdapAttrValue = ldapUser.getAttributeAsString(rdnLdapAttrName);
98 if (rdnLdapAttrValue == null) {
99 throw new ModelException(
"RDN Attribute [" + rdnLdapAttrName +
"] is not filled. Filled attributes: " + ldapUser.getAttributes());
102 LDAPDn dn = LDAPDn.fromString(config.getUsersDn());
103 dn.addFirst(rdnLdapAttrName, rdnLdapAttrValue);
◆ createLDAPGroup()
static LDAPObject org.keycloak.storage.ldap.LDAPUtils.createLDAPGroup |
( |
LDAPStorageProvider |
ldapProvider, |
|
|
String |
groupName, |
|
|
String |
groupNameAttribute, |
|
|
Collection< String > |
objectClasses, |
|
|
String |
parentDn, |
|
|
Map< String, Set< String >> |
additionalAttributes |
|
) |
| |
|
inlinestatic |
132 LDAPObject ldapObject =
new LDAPObject();
134 ldapObject.setRdnAttributeName(groupNameAttribute);
135 ldapObject.setObjectClasses(objectClasses);
136 ldapObject.setSingleAttribute(groupNameAttribute, groupName);
138 LDAPDn roleDn = LDAPDn.fromString(parentDn);
139 roleDn.addFirst(groupNameAttribute, groupName);
140 ldapObject.setDn(roleDn);
142 for (Map.Entry<String, Set<String>> attrEntry : additionalAttributes.entrySet()) {
143 ldapObject.setAttribute(attrEntry.getKey(), attrEntry.getValue());
146 ldapProvider.getLdapIdentityStore().add(ldapObject);
◆ createQueryForUserSearch()
76 LDAPQuery ldapQuery =
new LDAPQuery(ldapProvider);
77 LDAPConfig config = ldapProvider.getLdapIdentityStore().getConfig();
78 ldapQuery.setSearchScope(config.getSearchScope());
79 ldapQuery.setSearchDn(config.getUsersDn());
80 ldapQuery.addObjectClasses(config.getUserObjectClasses());
82 String customFilter = config.getCustomUserSearchFilter();
83 if (customFilter != null) {
84 Condition customFilterCondition =
new LDAPQueryConditionsBuilder().addCustomLDAPFilter(customFilter);
85 ldapQuery.addWhereCondition(customFilterCondition);
88 List<ComponentModel> mapperModels = realm.getComponents(ldapProvider.getModel().getId(), LDAPStorageMapper.class.getName());
89 ldapQuery.addMappers(mapperModels);
◆ deleteMember()
Remove ldapChild as member of ldapParent and save ldapParent to LDAP.
- 引数
-
ldapProvider | |
membershipType | how is 'member' attribute saved (full DN or just uid) |
memberAttrName | usually 'member' |
memberChildAttrName | used just if membershipType is UID. Usually 'uid' |
ldapParent | role or group |
ldapChild | usually user (or child group or child role) |
200 memberships.remove(userMembership);
203 if (memberships.size() == 0 && membershipType== MembershipType.DN && !ldapProvider.getLdapIdentityStore().getConfig().isActiveDirectory()) {
204 memberships.add(LDAPConstants.EMPTY_MEMBER_ATTRIBUTE_VALUE);
207 ldapParent.setAttribute(memberAttrName, memberships);
208 ldapProvider.getLdapIdentityStore().update(ldapParent);
static String getMemberValueOfChildObject(LDAPObject ldapUser, MembershipType membershipType, String memberChildAttrName)
Definition: LDAPUtils.java:229
static Set< String > getExistingMemberships(String memberAttrName, LDAPObject ldapRole)
Definition: LDAPUtils.java:218
◆ getExistingMemberships()
static Set<String> org.keycloak.storage.ldap.LDAPUtils.getExistingMemberships |
( |
String |
memberAttrName, |
|
|
LDAPObject |
ldapRole |
|
) |
| |
|
inlinestatic |
Return all existing memberships (values of attribute 'member' ) from the given ldapRole or ldapGroup
- 引数
-
memberAttrName | usually 'member' |
ldapRole | |
- 戻り値
219 Set<String> memberships = ldapRole.getAttributeAsSet(memberAttrName);
220 if (memberships == null) {
221 memberships =
new HashSet<>();
◆ getMemberValueOfChildObject()
static String org.keycloak.storage.ldap.LDAPUtils.getMemberValueOfChildObject |
( |
LDAPObject |
ldapUser, |
|
|
MembershipType |
membershipType, |
|
|
String |
memberChildAttrName |
|
) |
| |
|
inlinestatic |
Get value to be used as attribute 'member' or 'memberUid' in some parent ldapObject
230 if (membershipType == MembershipType.DN) {
231 return ldapUser.getDn().toString();
233 return ldapUser.getAttributeAsString(memberChildAttrName);
◆ getUsername()
static String org.keycloak.storage.ldap.LDAPUtils.getUsername |
( |
LDAPObject |
ldapUser, |
|
|
LDAPConfig |
config |
|
) |
| |
|
inlinestatic |
108 String usernameAttr = config.getUsernameLdapAttribute();
109 String ldapUsername = ldapUser.getAttributeAsString(usernameAttr);
111 if (ldapUsername == null) {
112 throw new ModelException(
"User returned from LDAP has null username! Check configuration of your LDAP mappings. Mapped username LDAP attribute: " +
113 config.getUsernameLdapAttribute() +
", user DN: " + ldapUser.getDn() +
", attributes from LDAP: " + ldapUser.getAttributes());
◆ loadAllLDAPObjects()
Load all LDAP objects corresponding to given query. We will load them paginated, so we allow to bypass the limitation of 1000 maximum loaded objects in single query in MSAD
- 引数
-
- 戻り値
247 LDAPConfig ldapConfig = ldapProvider.getLdapIdentityStore().getConfig();
248 boolean pagination = ldapConfig.isPagination();
251 int pageSize = ldapConfig.getBatchSizeForSync();
253 List<LDAPObject> result =
new LinkedList<>();
254 boolean nextPage =
true;
257 ldapQuery.setLimit(pageSize);
258 final List<LDAPObject> currentPageGroups = ldapQuery.getResultList();
259 result.addAll(currentPageGroups);
260 nextPage = ldapQuery.getPaginationContext() != null;
266 return ldapQuery.getResultList();
◆ validateCustomLdapFilter()
Validate configured customFilter matches the requested format
- 引数
-
- 例外
-
ComponentValidationException | |
278 if (customFilter != null) {
280 customFilter = customFilter.trim();
281 if (customFilter.isEmpty()) {
285 if (!customFilter.startsWith(
"(") || !customFilter.endsWith(
")")) {
286 throw new ComponentValidationException(
"ldapErrorInvalidCustomFilter");
このクラス詳解は次のファイルから抽出されました:
- D:/AppData/doxygen/keycloak/src/keycloak/src/main/java/org/keycloak/storage/ldap/LDAPUtils.java