Package com.atlassian.crowd.directory
Class RFC2307Directory
java.lang.Object
com.atlassian.crowd.directory.SpringLDAPConnector
com.atlassian.crowd.directory.RFC2307Directory
- All Implemented Interfaces:
LDAPDirectory
,RemoteDirectory
,Attributes
- Direct Known Subclasses:
Rfc2307
Read-only, non-nesting implementation of RFC2307 user-group membership
interactions.
A user is a member of a group if either:
- the gidNumber of the user matches the gidNumber of the group
- the username of user is present in the collection of member attribute values of the group
- See Also:
-
Field Summary
Fields inherited from class com.atlassian.crowd.directory.SpringLDAPConnector
attributes, contextSource, contextSourceTransactionManager, DEFAULT_PAGE_SIZE, eventPublisher, ldapPropertiesMapper, ldapQueryTranslater, ldapTemplate, nameConverter, searchDN
-
Constructor Summary
ConstructorsConstructorDescriptionRFC2307Directory
(LDAPQueryTranslater ldapQueryTranslater, com.atlassian.event.api.EventPublisher eventPublisher, InstanceFactory instanceFactory, LdapContextSourceProvider ldapContextSourceProvider) -
Method Summary
Modifier and TypeMethodDescriptionprotected List<AttributeMapper>
As a minimum, this SHOULD provide an attribute mapper that maps the group members attribute (if available).protected List<AttributeMapper>
protected List<AttributeMapper>
As a minimum, this SHOULD provide an attribute mapper that maps the group members attribute (if available).Get an iterable view of the available group memberships.boolean
isGroupDirectGroupMember
(String childGroup, String parentGroup) Determines if a group is a direct member of another group.boolean
isUserDirectGroupMember
(String username, String groupName) Determines if a user is a direct member of a group.protected <T> Iterable<T>
Execute the search for group relationships given that a group of type GROUP or LEGACY_ROLE has been specified in the EntityDescriptor for the group(s).boolean
As best I can determine, the RFC2307 schema does not support nested groups.boolean
Does not support expiring passwordsMethods inherited from class com.atlassian.crowd.directory.SpringLDAPConnector
addDefaultSnToUserAttributes, addDefaultValueToUserAttributesForAttribute, addGroup, addUser, addUser, authenticate, avatarMapper, countDirectMembersOfGroup, createModificationItem, expireAllPasswords, findEntityByDN, findEntityByDN, findEntityByDN, findGroupByName, findGroupByNameAndType, findGroupWithAttributesByName, findUserByExternalId, findUserByName, findUserWithAttributesByName, getAttributeAsBoolean, getAttributeAsLong, getAuthoritativeDirectory, getBaseEnvironmentProperties, getContextSource, getCredentialEncoder, getDirectoryId, getGroupContextMapper, getGroupContextMapper, getInitialGroupMemberDN, getKeys, getLdapPropertiesMapper, getNewGroupAttributes, getNewGroupDirectorySpecificAttributes, getNewUserAttributes, getNewUserDirectorySpecificAttributes, getRequiredCustomGroupAttributeMappers, getSearchControls, getSearchDN, getUserAvatarByName, getUserModificationItems, getValue, getValues, isEmpty, isRolesDisabled, pageSearchResults, postprocessGroup, postprocessGroups, removeGroup, removeGroupAttributes, removeUser, removeUserAttributes, renameGroup, renameUser, searchEntities, searchEntitiesWithRequestControls, searchGroupObjects, searchGroupObjectsOfSpecifiedGroupType, searchGroupRelationships, searchGroups, searchUserObjects, searchUsers, searchUsers, setAttributes, setDirectoryId, setLdapPropertiesMapperAttributes, storeGroupAttributes, storeUserAttributes, supportsInactiveAccounts, supportsSettingEncryptedCredential, testConnection, typedEntityNotFoundException, updateGroup, updateUser, updateUserCredential
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.atlassian.crowd.directory.RemoteDirectory
addGroupToGroup, addUserToGroup, getDescriptiveName, getLocallyFilteredGroupNames, removeGroupFromGroup, removeUserFromGroup, updateUserFromRemoteDirectory, userAuthenticated
-
Constructor Details
-
RFC2307Directory
public RFC2307Directory(LDAPQueryTranslater ldapQueryTranslater, com.atlassian.event.api.EventPublisher eventPublisher, InstanceFactory instanceFactory, LdapContextSourceProvider ldapContextSourceProvider)
-
-
Method Details
-
getCustomGroupAttributeMappers
Description copied from class:SpringLDAPConnector
As a minimum, this SHOULD provide an attribute mapper that maps the group members attribute (if available).- Overrides:
getCustomGroupAttributeMappers
in classSpringLDAPConnector
- Returns:
- collection of custom attribute mappers (cannot be
null
but can be an empty list).
-
getMemberOnlyGroupAttributeMappers
Description copied from class:SpringLDAPConnector
As a minimum, this SHOULD provide an attribute mapper that maps the group members attribute (if available).- Overrides:
getMemberOnlyGroupAttributeMappers
in classSpringLDAPConnector
- Returns:
- collection of custom attribute mappers (cannot be
null
but can be an empty list).
-
getCustomUserAttributeMappers
- Overrides:
getCustomUserAttributeMappers
in classSpringLDAPConnector
- Returns:
- a collection of custom attribute mappers. By default just return an empty list.
-
isUserDirectGroupMember
public boolean isUserDirectGroupMember(String username, String groupName) throws OperationFailedException Description copied from interface:RemoteDirectory
Determines if a user is a direct member of a group. The directory is NOT expected to resolve any transitive group relationships.- Parameters:
username
- name of user.groupName
- name of group.- Returns:
true
iff the user is a direct member of the group.- Throws:
OperationFailedException
- underlying directory implementation failed to execute the operation.
-
isGroupDirectGroupMember
Description copied from interface:RemoteDirectory
Determines if a group is a direct member of another group. The directory is NOT expected to resolve any transitive group relationships.- Parameters:
childGroup
- name of child group.parentGroup
- name of parent group.- Returns:
false
as nested groups are not supported.
-
searchGroupRelationshipsWithGroupTypeSpecified
protected <T> Iterable<T> searchGroupRelationshipsWithGroupTypeSpecified(MembershipQuery<T> query) throws OperationFailedException Description copied from class:SpringLDAPConnector
Execute the search for group relationships given that a group of type GROUP or LEGACY_ROLE has been specified in the EntityDescriptor for the group(s).- Specified by:
searchGroupRelationshipsWithGroupTypeSpecified
in classSpringLDAPConnector
- Parameters:
query
- membership query with all GroupType's not null.- Returns:
- list of members or memberships depending on the query.
- Throws:
OperationFailedException
- if the operation failed due to a communication error with the remote directory, or if the query is invalid
-
supportsNestedGroups
public boolean supportsNestedGroups()As best I can determine, the RFC2307 schema does not support nested groups.- Specified by:
supportsNestedGroups
in interfaceRemoteDirectory
- Overrides:
supportsNestedGroups
in classSpringLDAPConnector
- Returns:
false
.
-
supportsPasswordExpiration
public boolean supportsPasswordExpiration()Does not support expiring passwords- Specified by:
supportsPasswordExpiration
in interfaceRemoteDirectory
- Overrides:
supportsPasswordExpiration
in classSpringLDAPConnector
- Returns:
- false
-
getMemberships
Description copied from interface:RemoteDirectory
Get an iterable view of the available group memberships. This may be implemented as a single remote call or separate calls, depending on the directory.
If there is a failure in the underlying retrieval, the iterator may throw
Membership.MembershipIterationException
at runtime.If the directory does not have a bulk call interface then a typical implementation would be:
return new DirectoryMembershipsIterable(this);
- Returns:
- an iterable view of the available group memberships
- Throws:
OperationFailedException
- if the underlying directory implementation failed to execute the operation
-