com.atlassian.crowd.directory
Class MicrosoftActiveDirectory

java.lang.Object
  extended by com.atlassian.crowd.directory.SpringLDAPConnector
      extended by com.atlassian.crowd.directory.RFC4519Directory
          extended by com.atlassian.crowd.directory.MicrosoftActiveDirectory
All Implemented Interfaces:
LDAPDirectory, RemoteDirectory, Attributes

public class MicrosoftActiveDirectory
extends RFC4519Directory

Microsoft Active Directory connector.


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
MicrosoftActiveDirectory(LDAPQueryTranslater ldapQueryTranslater, com.atlassian.event.api.EventPublisher eventPublisher, InstanceFactory instanceFactory)
           
 
Method Summary
protected  byte[] encodePassword(java.lang.String unencodedPassword)
          Converts the clear-text password to the {AD_PASSWORD_ENCODED encoding - currently UTF-16LE
 long fetchHighestCommittedUSN()
           
 java.util.List<LDAPGroupWithAttributes> findAddedOrUpdatedGroupsSince(long usnChanged)
           
protected  java.util.List findAddedOrUpdatedObjectsSince(long usnChange, javax.naming.Name objectBaseDN, java.lang.String objectFilter, org.springframework.ldap.core.ContextMapper contextMapper)
           
 java.util.List<LDAPUserWithAttributes> findAddedOrUpdatedUsersSince(long usnChange)
           
 java.util.List<Tombstone> findGroupTombstonesSince(long usnChange)
           
protected  java.util.List<Tombstone> findTombstonesSince(long usnChange, javax.naming.Name objectBaseDN, java.lang.String objectClass)
           
 java.util.List<Tombstone> findUserTombstonesSince(long usnChange)
           
protected  java.util.Map<java.lang.String,java.lang.String> getBaseEnvironmentProperties()
          Returns the properties used to set up the Ldap ContextSource.
protected  java.util.List<AttributeMapper> getCustomGroupAttributeMappers()
          As a minimum, this SHOULD provide an attribute mapper that maps the group members attribute (if available).
protected  java.util.List<AttributeMapper> getCustomUserAttributeMappers()
           
 java.lang.String getDescriptiveName()
          Returns a descriptive name for the type of directory.
protected  Encoder getEncoder()
          Returns an Encoder that can correctly escape AD-specific special characters
protected  java.lang.String getInitialGroupMemberDN()
          AD does not need a default container member.
protected  java.util.List<AttributeMapper> getMemberDnMappers()
           
protected  void getNewGroupDirectorySpecificAttributes(Group group, javax.naming.directory.Attributes attributes)
          If we want to be able to nest groups, we need to create distribution groups rather than security groups.
protected  void getNewUserDirectorySpecificAttributes(User user, javax.naming.directory.Attributes attributes)
          Active Directory needs a couple of additional attributes set - the sAMAccountName (which is the account name you use to log on to Windows), and the account disabled flag.
static java.lang.String getStaticDirectoryType()
           
protected  java.util.List<LDAPGroupWithAttributes> postprocessGroups(java.util.List<LDAPGroupWithAttributes> groups)
          Perform any post-processing on groups.
 
Methods inherited from class com.atlassian.crowd.directory.RFC4519Directory
addGroupToGroup, addUserToGroup, isGroupDirectGroupMember, isUserDirectGroupMember, removeGroupFromGroup, removeUserFromGroup, searchGroupRelationshipsWithGroupTypeSpecified
 
Methods inherited from class com.atlassian.crowd.directory.SpringLDAPConnector
addDefaultSnToUserAttributes, addDefaultValueToUserAttributesForAttribute, addGroup, addUser, asLdapGroupName, asLdapName, asLdapUserName, authenticate, findEntityByDN, findEntityByDN, findGroupByName, findGroupByNameAndType, findGroupWithAttributesByName, findUserByName, findUserWithAttributesByName, getAttributeAsBoolean, getAttributeAsLong, getContextSource, getDirectoryId, getGroupContextMapper, getKeys, getLdapPropertiesMapper, getNewGroupAttributes, getNewUserAttributes, getSearchDN, getStandardisedDN, getSubTreeSearchControl, getUserContextMapper, getValue, getValues, isEmpty, isRolesDisabled, pageSearchResults, removeGroup, removeGroupAttributes, removeUser, removeUserAttributes, renameGroup, renameUser, searchEntities, searchEntitiesWithRequestControls, searchGroupObjects, searchGroupObjectsOfSpecifiedGroupType, searchGroupRelationships, searchGroups, searchUserObjects, searchUsers, setAttributes, setDirectoryId, storeGroupAttributes, storeUserAttributes, supportsInactiveAccounts, supportsNestedGroups, testConnection, typedEntityNotFoundException, updateGroup, updateUser, updateUserCredential
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MicrosoftActiveDirectory

public MicrosoftActiveDirectory(LDAPQueryTranslater ldapQueryTranslater,
                                com.atlassian.event.api.EventPublisher eventPublisher,
                                InstanceFactory instanceFactory)
Method Detail

getStaticDirectoryType

public static java.lang.String getStaticDirectoryType()

getDescriptiveName

public java.lang.String getDescriptiveName()
Description copied from interface: RemoteDirectory
Returns a descriptive name for the type of directory.

Returns:
descriptive name.

getEncoder

protected Encoder getEncoder()
Returns an Encoder that can correctly escape AD-specific special characters

Overrides:
getEncoder in class SpringLDAPConnector
Returns:

getInitialGroupMemberDN

protected java.lang.String getInitialGroupMemberDN()
AD does not need a default container member.

Overrides:
getInitialGroupMemberDN in class SpringLDAPConnector
Returns:
null.

encodePassword

protected byte[] encodePassword(java.lang.String unencodedPassword)
                         throws InvalidCredentialException
Converts the clear-text password to the {AD_PASSWORD_ENCODED encoding - currently UTF-16LE

Specified by:
encodePassword in class SpringLDAPConnector
Parameters:
unencodedPassword -
Returns:
byte array containing password in UTF-16LE encoding.
Throws:
InvalidCredentialException - If the specified encoding is not available on this system.

getNewUserDirectorySpecificAttributes

protected void getNewUserDirectorySpecificAttributes(User user,
                                                     javax.naming.directory.Attributes attributes)
Active Directory needs a couple of additional attributes set - the sAMAccountName (which is the account name you use to log on to Windows), and the account disabled flag.

Overrides:
getNewUserDirectorySpecificAttributes in class SpringLDAPConnector
Parameters:
user -
attributes -

getNewGroupDirectorySpecificAttributes

protected void getNewGroupDirectorySpecificAttributes(Group group,
                                                      javax.naming.directory.Attributes attributes)
If we want to be able to nest groups, we need to create distribution groups rather than security groups. To do this we need to set groupType to 2.

Overrides:
getNewGroupDirectorySpecificAttributes in class SpringLDAPConnector
Parameters:
group -
attributes -

getCustomUserAttributeMappers

protected java.util.List<AttributeMapper> getCustomUserAttributeMappers()
Overrides:
getCustomUserAttributeMappers in class RFC4519Directory
Returns:
a collection of custom attribbute mappers. By default just return an empty list.

getCustomGroupAttributeMappers

protected java.util.List<AttributeMapper> 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 class RFC4519Directory
Returns:
collection of custom attribute mappers (cannot be null but can be an empty list).

getMemberDnMappers

protected java.util.List<AttributeMapper> getMemberDnMappers()
Overrides:
getMemberDnMappers in class RFC4519Directory

postprocessGroups

protected java.util.List<LDAPGroupWithAttributes> postprocessGroups(java.util.List<LDAPGroupWithAttributes> groups)
Description copied from class: SpringLDAPConnector
Perform any post-processing on groups.

Overrides:
postprocessGroups in class SpringLDAPConnector
Parameters:
groups - to post-process
Returns:
list of groups that have been processed if required

getBaseEnvironmentProperties

protected java.util.Map<java.lang.String,java.lang.String> getBaseEnvironmentProperties()
Description copied from class: SpringLDAPConnector
Returns the properties used to set up the Ldap ContextSource.

Overrides:
getBaseEnvironmentProperties in class SpringLDAPConnector
Returns:
the properties used to set up the Ldap ContextSource.

fetchHighestCommittedUSN

public long fetchHighestCommittedUSN()
                              throws OperationFailedException
Throws:
OperationFailedException

findAddedOrUpdatedUsersSince

public java.util.List<LDAPUserWithAttributes> findAddedOrUpdatedUsersSince(long usnChange)
                                                                    throws OperationFailedException
Throws:
OperationFailedException

findAddedOrUpdatedGroupsSince

public java.util.List<LDAPGroupWithAttributes> findAddedOrUpdatedGroupsSince(long usnChanged)
                                                                      throws OperationFailedException
Throws:
OperationFailedException

findUserTombstonesSince

public java.util.List<Tombstone> findUserTombstonesSince(long usnChange)
                                                  throws OperationFailedException
Throws:
OperationFailedException

findGroupTombstonesSince

public java.util.List<Tombstone> findGroupTombstonesSince(long usnChange)
                                                   throws OperationFailedException
Throws:
OperationFailedException

findAddedOrUpdatedObjectsSince

protected java.util.List findAddedOrUpdatedObjectsSince(long usnChange,
                                                        javax.naming.Name objectBaseDN,
                                                        java.lang.String objectFilter,
                                                        org.springframework.ldap.core.ContextMapper contextMapper)
                                                 throws OperationFailedException
Throws:
OperationFailedException

findTombstonesSince

protected java.util.List<Tombstone> findTombstonesSince(long usnChange,
                                                        javax.naming.Name objectBaseDN,
                                                        java.lang.String objectClass)
                                                 throws OperationFailedException
Throws:
OperationFailedException


Copyright © 2010 Atlassian. All Rights Reserved.