public class RemoteCrowdDirectory extends Object implements RemoteDirectory
RemoteDirectory that allows integration with a remote Crowd server.
This class performs all directory operations against a remote Crowd server. The remote Crowd server sees this class as an application.
| Modifier and Type | Field and Description |
|---|---|
static String |
APPLICATION_NAME
Directory attribute key for application name
|
static String |
APPLICATION_PASSWORD
Directory attribute key for application password
|
protected AttributeValuesHolder |
attributes |
static String |
AUTHENTICATION_METHOD_ATTRIBUTE
Directory attribute key for the authentication method (
AuthenticationMethod). |
static String |
CROWD_HTTP_MAX_CONNECTIONS
Directory attribute key for max connections.
|
static String |
CROWD_HTTP_PROXY_HOST
Directory attribute key for http proxy host.
|
static String |
CROWD_HTTP_PROXY_PASSWORD
Directory attribute key for http proxy password.
|
static String |
CROWD_HTTP_PROXY_PORT
Directory attribute key for http proxy port.
|
static String |
CROWD_HTTP_PROXY_USERNAME
Directory attribute key for http proxy username.
|
static String |
CROWD_HTTP_TIMEOUT
Directory attribute key for http timeout.
|
static String |
CROWD_SERVER_URL
Directory attribute key for remote Crowd server URL
|
static String |
DESCRIPTIVE_NAME |
| Constructor and Description |
|---|
RemoteCrowdDirectory(CrowdClientFactory crowdClientFactory)
Creates a new RemoteCrowdDirectory using the given CrowdClientFactory.
|
| Modifier and Type | Method and Description |
|---|---|
Group |
addGroup(GroupTemplate group)
Adds a
group to the directory store. |
void |
addGroupToGroup(String childGroup,
String parentGroup)
Adds a group as a member of a parent group.
|
User |
addUser(UserTemplate user,
PasswordCredential credential)
Adds a
user to the directory store. |
UserWithAttributes |
addUser(UserTemplateWithAttributes user,
PasswordCredential credential)
Adds a
user to the directory store. |
void |
addUserToGroup(String username,
String groupName)
Adds a user as a member of a group.
|
User |
authenticate(String username,
PasswordCredential credential)
Authenticates a
user with the directory store. |
BoundedCount |
countDirectMembersOfGroup(String groupName,
int querySizeHint)
Count the direct members of a group in the remote directory.
|
void |
expireAllPasswords()
Sets the
UserConstants.REQUIRES_PASSWORD_CHANGE attribute to true for
all users in the directory using bulk operations |
Group |
findGroupByName(String name)
Finds the
group that matches the supplied name. |
GroupWithAttributes |
findGroupWithAttributesByName(String name)
Finds the
group that matches the supplied name. |
User |
findUserByExternalId(String externalId)
Finds the user that matches the supplied
externalId. |
User |
findUserByName(String name)
Finds the
user that matches the supplied name. |
UserWithAttributes |
findUserWithAttributesByName(String name)
Finds the
user that matches the supplied name. |
RemoteDirectory |
getAuthoritativeDirectory() |
protected ClientProperties |
getClientProperties() |
CrowdClient |
getCrowdClient()
Access the Crowd client used for communication with the remote Crowd directory, intended for internal reuse only.
|
String |
getCurrentEventToken()
Returns a token that can be used for querying events that have happened
after the token was generated.
|
String |
getDescriptiveName()
Returns a descriptive name for the type of directory.
|
long |
getDirectoryId()
Gets the internal unique
directoryId of the directory store. |
Set<String> |
getKeys()
Gets all the keys of the attributes.
|
Iterable<Membership> |
getMemberships()
Get an iterable view of the available group memberships.
|
Events |
getNewEvents(String eventToken)
Returns an events object which contains a new eventToken and events that
happened after the given
eventToken was generated. |
String |
getValue(String name)
Returns any value associated with the given key, returns
null if there is no value. |
Set<String> |
getValues(String name)
Get all the values associated with a given key.
|
boolean |
isEmpty() |
boolean |
isGroupDirectGroupMember(String childGroup,
String parentGroup)
Determines if a group is a direct member of another group.
|
boolean |
isRolesDisabled()
Expose whether the directory has roles disabled.
|
boolean |
isUserDirectGroupMember(String username,
String groupName)
Determines if a user is a direct member of a group.
|
void |
removeGroup(String groupname)
Removes the
group that matches the supplied name. |
void |
removeGroupAttributes(String groupName,
String attributeName)
Removes all the values for a single attribute key for a group.
|
void |
removeGroupFromGroup(String childGroup,
String parentGroup)
Removes a group as a member of a parent group.
|
void |
removeUser(String username)
Removes the
user that matches the supplied name. |
void |
removeUserAttributes(String username,
String attributeName)
Removes all the values for a single attribute key for a user.
|
void |
removeUserFromGroup(String username,
String groupName)
Removes a user as a member of a group.
|
Group |
renameGroup(String oldName,
String newName)
Renames a
group. |
User |
renameUser(String oldName,
String newName)
Renames a
user. |
<T> List<T> |
searchGroupRelationships(MembershipQuery<T> query)
Searches for membership information.
|
<T> List<T> |
searchGroups(EntityQuery<T> query)
Searches for
groups that match the supplied query criteria. |
<T> List<T> |
searchUsers(EntityQuery<T> query)
Searches for
users that match the supplied query criteria. |
void |
setAttributes(Map<String,String> attributes)
Called by the
DirectoryInstanceLoader after
constructing an InternalDirectory. |
void |
setDirectoryId(long directoryId)
When a directory store is loaded, the
directoryId will be set by the
crowd framework. |
void |
storeGroupAttributes(String groupName,
Map<String,Set<String>> attributes)
Adds or updates a group's attributes with the new Map of attribute values in the directory specified by the passed in
directoryId. |
void |
storeUserAttributes(String username,
Map<String,Set<String>> attributes)
Adds or updates a user's attributes with the new Map of attribute values in the directory specified by the passed in
directoryId. |
boolean |
supportsInactiveAccounts()
Remote crowd directories always support inactive accounts.
|
boolean |
supportsNestedGroups()
Allows us to only display nested-group related UI for directories that support it.
|
boolean |
supportsPasswordExpiration()
Return true if this directory supports manually expiring passwords.
|
boolean |
supportsSettingEncryptedCredential()
If this method returns true, then calling
RemoteDirectory.updateUserCredential(String, PasswordCredential) or
RemoteDirectory.addUser(com.atlassian.crowd.model.user.UserTemplate, com.atlassian.crowd.embedded.api.PasswordCredential)
with a PasswordCredential instance where PasswordCredential.isEncryptedCredential() returns true
and the instance is not equal to PasswordCredential.NONE will succeed; otherwise, it will fail. |
void |
testConnection()
Test if a connection to the directory server can be established.
|
Group |
updateGroup(GroupTemplate group)
Updates the
group. |
User |
updateUser(UserTemplate user)
Updates the
user. |
void |
updateUserCredential(String username,
PasswordCredential credential)
|
User |
userAuthenticated(String username) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetLocallyFilteredGroupNames, getUserAvatarByName, updateUserFromRemoteDirectorypublic static final String DESCRIPTIVE_NAME
public static final String APPLICATION_NAME
public static final String APPLICATION_PASSWORD
public static final String CROWD_SERVER_URL
public static final String AUTHENTICATION_METHOD_ATTRIBUTE
AuthenticationMethod).public static final String CROWD_HTTP_TIMEOUT
public static final String CROWD_HTTP_MAX_CONNECTIONS
public static final String CROWD_HTTP_PROXY_HOST
public static final String CROWD_HTTP_PROXY_PORT
public static final String CROWD_HTTP_PROXY_USERNAME
public static final String CROWD_HTTP_PROXY_PASSWORD
protected AttributeValuesHolder attributes
public RemoteCrowdDirectory(CrowdClientFactory crowdClientFactory)
crowdClientFactory - factory for creating a CrowdClientpublic long getDirectoryId()
RemoteDirectorydirectoryId of the directory store.getDirectoryId in interface RemoteDirectorydirectoryId.public void setDirectoryId(long directoryId)
RemoteDirectorydirectoryId will be set by the
crowd framework.setDirectoryId in interface RemoteDirectorydirectoryId - The unique directoryId of the DirectoryImpl stored in the database.public User findUserByName(String name) throws UserNotFoundException, OperationFailedException
RemoteDirectoryuser that matches the supplied name.findUserByName in interface RemoteDirectoryname - the name of the user (username).UserNotFoundException - a user with the supplied name does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.public UserWithAttributes findUserWithAttributesByName(String name) throws UserNotFoundException, OperationFailedException
RemoteDirectoryuser that matches the supplied name.findUserWithAttributesByName in interface RemoteDirectoryname - the name of the user (username).UserNotFoundException - a user with the supplied name does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.public User findUserByExternalId(String externalId) throws UserNotFoundException, OperationFailedException
RemoteDirectoryexternalId.
This is an optional method that may not be implemented on all directory types.
Currently it is implemented for LDAP and Internal directories but not Crowd directories.findUserByExternalId in interface RemoteDirectoryexternalId - the externalId of the userexternalId.UserNotFoundException - a user with the supplied externalId does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.RemoteDirectory.findUserByName(String)public User authenticate(String username, PasswordCredential credential) throws UserNotFoundException, InactiveAccountException, InvalidAuthenticationException, ExpiredCredentialException, OperationFailedException
RemoteDirectoryuser with the directory store.authenticate in interface RemoteDirectoryusername - The name of the user (username).credential - The supplied credentials (password).UserNotFoundException - The user with the supplied name does not exist.InactiveAccountException - The supplied user is inactive.InvalidAuthenticationException - Authentication with the provided credentials failed.ExpiredCredentialException - The user's credentials have expired. The user must change their credentials in order to successfully authenticate.OperationFailedException - underlying directory implementation failed to execute the operation.public User addUser(UserTemplate user, PasswordCredential credential) throws InvalidUserException, InvalidCredentialException, OperationFailedException
RemoteDirectoryuser to the directory store.addUser in interface RemoteDirectoryuser - template of the user to add.credential - a password, or PasswordCredential.NONE for an account that cannot login with any passwordInvalidUserException - The supplied user is invalid.InvalidCredentialException - The supplied credential is invalid.OperationFailedException - underlying directory implementation failed to execute the operation.RemoteDirectory.supportsSettingEncryptedCredential()public UserWithAttributes addUser(UserTemplateWithAttributes user, PasswordCredential credential) throws InvalidUserException, InvalidCredentialException, OperationFailedException
RemoteDirectoryuser to the directory store.addUser in interface RemoteDirectoryuser - template of the user to add.credential - a password, or PasswordCredential.NONE for an account that cannot login with any passwordInvalidUserException - The supplied user is invalid.InvalidCredentialException - The supplied credential is invalid.OperationFailedException - underlying directory implementation failed to execute the operation.RemoteDirectory.supportsSettingEncryptedCredential()public void expireAllPasswords()
throws OperationFailedException
RemoteDirectoryUserConstants.REQUIRES_PASSWORD_CHANGE attribute to true for
all users in the directory using bulk operationsexpireAllPasswords in interface RemoteDirectoryOperationFailedExceptionpublic User updateUser(UserTemplate user) throws InvalidUserException, UserNotFoundException, OperationFailedException
RemoteDirectoryuser.updateUser in interface RemoteDirectoryuser - The user to update.InvalidUserException - the supplied user is invalid.UserNotFoundException - the user does not exist in the directory store.OperationFailedException - underlying directory implementation failed to execute the operation.public void updateUserCredential(String username, PasswordCredential credential) throws UserNotFoundException, InvalidCredentialException, OperationFailedException
RemoteDirectoryupdateUserCredential in interface RemoteDirectoryusername - The name of the user (username).credential - The new credential (password).UserNotFoundException - The user does not exist.InvalidCredentialException - The supplied credential is invalid.OperationFailedException - underlying directory implementation failed to execute the operation.RemoteDirectory.supportsSettingEncryptedCredential()public User renameUser(String oldName, String newName) throws UserNotFoundException, InvalidUserException, OperationFailedException
RemoteDirectoryuser.renameUser in interface RemoteDirectoryoldName - name of existing user.newName - desired name of user.UserNotFoundException - if the user with the existing name does not exist.InvalidUserException - if the new username is invalid.OperationFailedException - if the underlying directory implementation failed to execute the operation.public void storeUserAttributes(String username, Map<String,Set<String>> attributes) throws UserNotFoundException, OperationFailedException
RemoteDirectorydirectoryId.
The attributes map represents new or updated attributes and does not replace existing attributes unless the key of an attribute matches the key of an existing
Attributes with values of empty sets are not added (these attributes are effectively removed).
storeUserAttributes in interface RemoteDirectoryusername - name of user to update.attributes - new or updated attributes (attributes that don't need changing should not appear in this Map).UserNotFoundException - user with supplied username does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.public void removeUserAttributes(String username, String attributeName) throws UserNotFoundException, OperationFailedException
RemoteDirectoryremoveUserAttributes in interface RemoteDirectoryusername - name of the user to update.attributeName - name of attribute to remove.UserNotFoundException - user with supplied username does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.public void removeUser(String username) throws UserNotFoundException, OperationFailedException
RemoteDirectoryuser that matches the supplied name.removeUser in interface RemoteDirectoryusername - The name of the user (username).UserNotFoundException - The user does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.public <T> List<T> searchUsers(EntityQuery<T> query) throws OperationFailedException
RemoteDirectoryusers that match the supplied query criteria.
The users will be returned in a stable order including across pagination boundaries (excluding modification).
searchUsers in interface RemoteDirectoryquery - EntityQuery for Entity.USER.List<User> or List<String> of users/usernames
matching the search criteria. An empty List will be returned
if no users matching the criteria are found.OperationFailedException - if the underlying directory implementation failed to execute the operationpublic Group findGroupByName(String name) throws GroupNotFoundException, OperationFailedException
RemoteDirectorygroup that matches the supplied name.findGroupByName in interface RemoteDirectoryname - the name of the group.GroupNotFoundException - a group with the supplied name does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.public GroupWithAttributes findGroupWithAttributesByName(String name) throws GroupNotFoundException, OperationFailedException
RemoteDirectorygroup that matches the supplied name.findGroupWithAttributesByName in interface RemoteDirectoryname - the name of the group.GroupNotFoundException - a group with the supplied name does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.public Group addGroup(GroupTemplate group) throws InvalidGroupException, OperationFailedException
RemoteDirectorygroup to the directory store.addGroup in interface RemoteDirectorygroup - template of the group to add.InvalidGroupException - The supplied group is invalid or it already exists in the directory.OperationFailedException - underlying directory implementation failed to execute the operation.public Group updateGroup(GroupTemplate group) throws InvalidGroupException, GroupNotFoundException, OperationFailedException
RemoteDirectorygroup.updateGroup in interface RemoteDirectorygroup - The group to update.InvalidGroupException - the supplied group is invalid.GroupNotFoundException - the group does not exist in the directory store.OperationFailedException - underlying directory implementation failed to execute the operation.public Group renameGroup(String oldName, String newName) throws GroupNotFoundException, InvalidGroupException, OperationFailedException
RemoteDirectorygroup.renameGroup in interface RemoteDirectoryoldName - name of existing group.newName - desired name of group.GroupNotFoundException - if the group with the existing name does not exist.InvalidGroupException - if the new group name is invalid or already exists in the directory.OperationFailedException - if the underlying directory implementation failed to execute the operation.public void storeGroupAttributes(String groupName, Map<String,Set<String>> attributes) throws GroupNotFoundException, OperationFailedException
RemoteDirectorydirectoryId.
The attributes map represents new or updated attributes and does not replace existing attributes unless the key of an attribute matches the key of an existing
Attributes with values of empty sets are not added (these attributes are effectively removed).
storeGroupAttributes in interface RemoteDirectorygroupName - name of group to update.attributes - new or updated attributes (attributes that don't need changing should not appear in this Map).GroupNotFoundException - group with supplied groupName does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.public void removeGroupAttributes(String groupName, String attributeName) throws GroupNotFoundException, OperationFailedException
RemoteDirectoryremoveGroupAttributes in interface RemoteDirectorygroupName - name of the group to update.attributeName - name of attribute to remove.GroupNotFoundException - group with supplied groupName does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.public void removeGroup(String groupname) throws GroupNotFoundException, OperationFailedException
RemoteDirectorygroup that matches the supplied name.removeGroup in interface RemoteDirectorygroupname - The name of the group.GroupNotFoundException - The group does not exist.OperationFailedException - underlying directory implementation failed to execute the operation.public <T> List<T> searchGroups(EntityQuery<T> query) throws OperationFailedException
RemoteDirectorygroups that match the supplied query criteria.
The groups will be returned in a stable order including across pagination boundaries (excluding modification).
searchGroups in interface RemoteDirectoryquery - EntityQuery for Entity.GROUP.List<Group> or List<String> of groups/groupnames
matching the search criteria. An empty List will be returned
if no groups matching the criteria are found.OperationFailedException - if the underlying directory implementation failed to execute the operationpublic boolean isUserDirectGroupMember(String username, String groupName) throws OperationFailedException
RemoteDirectoryisUserDirectGroupMember in interface RemoteDirectoryusername - name of user.groupName - name of group.true iff the user is a direct member of the group.OperationFailedException - underlying directory implementation failed to execute the operation.public boolean isGroupDirectGroupMember(String childGroup, String parentGroup) throws OperationFailedException
RemoteDirectoryisGroupDirectGroupMember in interface RemoteDirectorychildGroup - name of child group.parentGroup - name of parent group.true iff the childGroup is a direct member of the parentGroup.OperationFailedException - underlying directory implementation failed to execute the operation.public BoundedCount countDirectMembersOfGroup(String groupName, int querySizeHint) throws OperationFailedException
RemoteDirectorycountDirectMembersOfGroup in interface RemoteDirectorygroupName - the name of the group to search forquerySizeHint - hinting at the maximum number of memberships that should be counted. The directory that
implements this may choose to count less or more. This is a user provided suggestion for potential efficiency.OperationFailedException - if we failed to count the number of memberships for the provided group.public void addUserToGroup(String username, String groupName) throws GroupNotFoundException, UserNotFoundException, OperationFailedException, MembershipAlreadyExistsException
RemoteDirectorychildGroup will
appear as members of parentGroup to querying applications.addUserToGroup in interface RemoteDirectoryusername - The user that will become a member of groupNamegroupName - The group that will gain a new member.GroupNotFoundException - If the group cannot be found.UserNotFoundException - If the user cannot be found.OperationFailedException - underlying directory implementation failed to execute the operation.MembershipAlreadyExistsException - if the user is already a member of the grouppublic void addGroupToGroup(String childGroup, String parentGroup) throws GroupNotFoundException, InvalidMembershipException, OperationFailedException, MembershipAlreadyExistsException
RemoteDirectoryaddGroupToGroup in interface RemoteDirectorychildGroup - The group that will become a member of parentGroupparentGroup - The group that will gain a new memberGroupNotFoundException - One or both of the groups cannot be found.InvalidMembershipException - if the childGroup and parentGroup exist but are of different GroupTypes.OperationFailedException - underlying directory implementation failed to execute the operation.MembershipAlreadyExistsException - if the child group is already a child of the parent grouppublic void removeUserFromGroup(String username, String groupName) throws GroupNotFoundException, UserNotFoundException, MembershipNotFoundException, OperationFailedException
RemoteDirectoryremoveUserFromGroup in interface RemoteDirectoryusername - The user that will be removed from parentGroupgroupName - The group that will lose the member.GroupNotFoundException - If the group cannot be found.UserNotFoundException - If the user cannot be found.MembershipNotFoundException - if the user is not a direct member of the group.OperationFailedException - underlying directory implementation failed to execute the operation.public void removeGroupFromGroup(String childGroup, String parentGroup) throws GroupNotFoundException, InvalidMembershipException, MembershipNotFoundException, OperationFailedException
RemoteDirectoryremoveGroupFromGroup in interface RemoteDirectorychildGroup - The group that will be removed from parentGroupparentGroup - The group that will lose the member.GroupNotFoundException - One or both of the groups cannot be found.InvalidMembershipException - if the childGroup and parentGroup exist but are of different GroupTypes.MembershipNotFoundException - if the childGroup is not a direct member of the parentGroup.OperationFailedException - underlying directory implementation failed to execute the operation.public <T> List<T> searchGroupRelationships(MembershipQuery<T> query) throws OperationFailedException
RemoteDirectorysearchGroupRelationships in interface RemoteDirectoryquery - query for memberships.OperationFailedException - underlying directory implementation failed to execute the operation.public String getCurrentEventToken() throws OperationFailedException, IncrementalSynchronisationNotAvailableException
If the event token has not changed since the last call to this method, it is guaranteed that no new events have been received.
The format of event token is implementation specific and can change without a warning.
UnsupportedCrowdApiException - if the remote server does not support this operationOperationFailedException - if the operation has failed for any other reason, including invalid argumentsIncrementalSynchronisationNotAvailableException - if the application cannot provide incremental synchronisationpublic Events getNewEvents(String eventToken) throws EventTokenExpiredException, OperationFailedException
eventToken was generated.
If for any reason event store is unable to retrieve events that happened
after the event token was generated, an
EventTokenExpiredException will be thrown. The caller is then
expected to call getCurrentEventToken() again before asking for
new events.
eventToken - event token that was retrieved by a call to getCurrentEventToken() or getNewEvents(String)eventToken was generatedEventTokenExpiredException - if events that happened after the event token was generated can not be retrievedUnsupportedCrowdApiException - if the remote server does not support this operationOperationFailedException - if the operation has failed for any other reason, including invalid argumentspublic void testConnection()
throws OperationFailedException
RemoteDirectoryCrowdDirectoryService.testConnection(Directory) should be used instead.testConnection in interface RemoteDirectoryOperationFailedException - underlying directory implementation failed to execute the operation.public boolean supportsInactiveAccounts()
supportsInactiveAccounts in interface RemoteDirectorypublic boolean supportsNestedGroups()
RemoteDirectorysupportsNestedGroups in interface RemoteDirectorypublic boolean supportsPasswordExpiration()
RemoteDirectorysupportsPasswordExpiration in interface RemoteDirectorypublic boolean supportsSettingEncryptedCredential()
RemoteDirectoryRemoteDirectory.updateUserCredential(String, PasswordCredential) or
RemoteDirectory.addUser(com.atlassian.crowd.model.user.UserTemplate, com.atlassian.crowd.embedded.api.PasswordCredential)
with a PasswordCredential instance where PasswordCredential.isEncryptedCredential() returns true
and the instance is not equal to PasswordCredential.NONE will succeed; otherwise, it will fail.supportsSettingEncryptedCredential in interface RemoteDirectorypublic boolean isRolesDisabled()
RemoteDirectoryisRolesDisabled in interface RemoteDirectorypublic String getDescriptiveName()
RemoteDirectorygetDescriptiveName in interface RemoteDirectorypublic void setAttributes(Map<String,String> attributes)
DirectoryInstanceLoader after
constructing an InternalDirectory.setAttributes in interface RemoteDirectoryattributes - attributes map.public Set<String> getValues(String name)
AttributesgetValues in interface Attributesname - the key to retrieve the values forpublic String getValue(String name)
Attributesnull if there is no value.getValue in interface Attributesname - the key to retrieve the value fornull if there is no valuepublic Set<String> getKeys()
AttributesgetKeys in interface Attributespublic boolean isEmpty()
isEmpty in interface Attributestrue if there are no attributespublic RemoteDirectory getAuthoritativeDirectory()
getAuthoritativeDirectory in interface RemoteDirectoryprotected ClientProperties getClientProperties()
public CrowdClient getCrowdClient() throws OperationFailedException
OperationFailedExceptionpublic Iterable<Membership> getMemberships() throws OperationFailedException
RemoteDirectoryGet 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);
getMemberships in interface RemoteDirectoryOperationFailedException - if the underlying directory implementation failed to execute the operationpublic User userAuthenticated(String username) throws OperationFailedException, UserNotFoundException, InactiveAccountException
userAuthenticated in interface RemoteDirectoryOperationFailedExceptionUserNotFoundExceptionInactiveAccountExceptionCopyright © 2024 Atlassian. All rights reserved.