| 
| 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()
  
  
      
        
          | static void org.keycloak.storage.ldap.LDAPUtils.validateCustomLdapFilter  | 
          ( | 
          String  | 
          customFilter | ) | 
           throws ComponentValidationException | 
         
       
   | 
  
inlinestatic   | 
  
 
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/federation/src/federation/ldap/src/main/java/org/keycloak/storage/ldap/LDAPUtils.java