A page in your DokuWiki was added or changed. Here are the details:

Date        : 2014/03/04 16:53
Browser     : Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 
Firefox/27.0
IP-Address  : 88.173.78.196
Hostname    : mne69-10-88-173-78-196.fbx.proxad.net
Old Revision: http://lsc-project.org/wiki/howto/activedirectory?rev=1393948364
New Revision: http://lsc-project.org/wiki/howto/activedirectory
Edit Summary: removed
User        : coudot

@@ -1,138 +1 @@
- ====== Synchronizing to/from Active Directory ======
  
- Microsoft's Active Directory is a standards-based LDAP directory (well, 
mostly). Therefore, it is quite easy to set up identity synchronization with a 
AD Domain Controller. Below are some tips to get around some of the specifics.
- 
- ===== Anonymous access controls =====
- 
- By default, anonymous access to Active Directory servers has almost no rights 
to read data. Create a technical account, and use that to give LSC access to 
the server.
- 
- ===== Search results size limit =====
- 
- As most LDAP servers, Active Directory limits the maximum number of results 
to a search. By default, this limit is 1000. Since LSC starts by doing a search 
for all identities in the directory, this means a maximum of 1000 entries will 
be synchronized.
- 
- To work around this, LSC can use the [[http://www.ietf.org/rfc/rfc2696|Paged 
Results control]]. Set the following property for the source or the destination 
in //lsc.xml//, and LSC will read results by page, with no maximum limit.
- <code xml>
- <connection>
-   <.../>
-   <pageSize>1000</pageSize>
- </connection>
- </code>
- 
- ===== Multi valued attributes size limit =====
- 
- Active Directory limits the maximum number of values returned by a ldap 
search for multi-valued attribute. As an example, AD use Group objects which 
contains the multi-valued attribute member. 
- 
- By default this limit in AD 2008 R2 is fixed to 1500 values.
- 
- If we have groups with more than 1500 members LSC could faild to correctly 
synchronize these groups.
- 
- This limit is configurable in Active Directory (Windows 2008/2008 R2) using 
this [[ http://support.microsoft.com/kb/2009267|KB]]
- 
- ===== Filter to find user objects =====
- 
- Active Directory defines a **user** objectClass, which is used to represent 
user accounts.
- 
- So, using a LDAP filter in a search to find users is easy, just write 
"(objectClass=user)". Well, **almost**.
- 
- Actually, the **user** objectClass is also used to represent **computers** 
and **trust accounts**[1]. So you need to add some components to your filter to 
avoid selecting these as well. Two options:
-   - Select the account type specifically: 
//(&(objectClass=user)(sAMAccountType=805306368))//
-   - Exclude the sub-objectClasses explicitly, like this: 
//(&(objectClass=user)(!(objectClass=computer)))//
- 
- See [1]: 
[[http://msdn.microsoft.com/en-us/library/ms679637(v=VS.85).aspx|SAM-Account-Type
 Attribute description]].
- 
- Thanks to Alexey Wasilyev for this tip.
- 
- ===== Indexing search attributes =====
- 
- LSC performs lots of a searches on the same attributes (those specified in 
//lsc>tasks>taskname>service>pivotAttrs// node in //lsc.xml//). If this/these 
attributes are not indexed in Active Directory, this can make LSC seem to run 
very slowly.
- 
- It is easy to index an extra attribute in Active Directory. On the Schema 
Master domain controller:
-   - Open a new MMC controller: from the Start menu, choose "Execute..." and 
type in "mmc", then hit enter.
-   - From the File menu, select "Add a component" and scroll down to "Active 
Directory schema", add, and click OK.
-   - Select "Attributes" in the list that appears, then find the attribute(s) 
you want to index.
-   - Right click on each one, and open their Properties.
-   - Select the "Index this attribute in Active Directory" checkbox, and press 
OK.
- 
- ===== Reading from a Global Catalogue in a multi-domain forest =====
- 
- If your Active Directory forest contains multiple domains, then the LDAP 
server on each domain controller will only offer a view of the users in that 
domain.
- 
- If you want to synchronize all accounts in the forest, you may access the 
Global Catalogue interface offered by selected Domain Controllers. This is a 
typical LDAP interface, on TCP port 3268, but is read-only. It is most useful 
to use this for your source, therefore.
- 
- To make an Active Directory Domain Controller a Global Catalogue:
-   - Open the //Active Directory Sites and Services// administration tool
-   - Find the Domain Controller you want in the Sites/Servers list, and 
right-click on it to open it's //Properties//
-   - In the window that appears, select the checkbox "Global Catalogue" and 
press OK
- 
- ===== Specific attributes =====
- 
- Active Directory contains some very useful specific attributes.
- 
- A useful list of how these attributes map to settings in the AD user 
interface is available at 
http://portal.sivarajan.com/2010/07/aduc-and-ldap-reference-sheet.html.
- 
- LSC offers some functions to read and/or update some of these.
- 
- So far, we can:
-   * read userAccountControl (for example to check account status, etc...)
-   * update userAccountControl (for example, to enable/disable an account, 
force the user to change password on next login, set the password to never 
expire, etc...)
-   * read lastLogonTimestamp to find out the number of weeks since last 
successful login throughout the Active Directory domain
-   * set unicodePwd to create or replace the password
- 
- Detail on how to do this is 
[[..:latest:configuration:syncoptions:activedirectory|here]] for now.
- 
- ===== Password Synchronization =====
- 
- ==== Overview ====
- 
- Synchronizing passwords with Active Directory is a common requirement, but 
generally a tricky subject. LSC does not solve this problem for you, but can 
help you achieve your goal. In particular:
- 
-     * **LSC can write a password to Active Directory**, given the original 
password in clear text (there is no way to update a password in AD if you only 
have a hashed password, in MD5 or SHA, for example).
- 
-     * **LSC cannot read passwords from Active Directory**.
- 
- ==== Approaches ====
- 
- There are several approaches to synchronizing passwords with Active 
Directory. A few we (the authors of LSC) have tried are metioned here. If you 
have other approaches, we'd love to hear about them.
- 
-     - Store passwords in your source repository, either in clear text or in a 
two-way encryption scheme (LSC includes tools to encrypt and decrypt such an 
algorithm: see [[..:latest:configuration:syncoptions:security|here]]), then use 
LSC's 
[[http://lsc-project.org/javadoc/latest/org/lsc/utils/directory/AD.html#getUnicodePwd(java.lang.String)|AD
 tool-class]] to update the password in AD. 
[[..:latest:configuration:syncoptions:activedirectory|here]] an example how to 
do this.
-     - Use AD as your main password store, and configure an OpenLDAP directory 
server to redirect authentications there, via SASL and LDAP binds. See 
[[http://ltb-project.org/wiki/documentation/general/sasl_delegation|detailed 
documentation to set up OpenLDAP and saslauthd to bind to AD]].
-     - Configure Active Directory to capture password changes, by either:
-         - Notifying another server on user password changes, using the 
[[http://technet.microsoft.com/en-us/library/cc727636(WS.10).aspx|Password 
Synchronization]] component of Microsoft's **Services For Unix** addon.
-         - Capturing the passwords, using 
[[http://passwdhk.sourceforge.net/|PasswdHk]], a password filter DLL.
- 
- ==== Pitfalls ====
- 
- Active Directory is, er, a little peculiar in it's handling of password 
changes. Here are some hints, to avoid being bitten by it's weird behaviour, 
like we have been :-)
- 
- **Old password remains valid for an hour**
- 
- As described in this [[http://support.microsoft.com/?id=906305|Microsoft 
Support article]], as of Windows Server 2003 SP1, once you've changed a user's 
password, the old password remains valid for an hour after the change. In 
effect, this means you can use both a users' old password and the users' new 
password to log in for one hour!
- 
- **New password accepted in LDAP modify operation but not really accepted**
- 
- In some cases (particularly with passwords containing special characters, 
such as non ASCII characters), Active Directory will accept a password update 
operation and return a "Success (0)" result for the LDAP modify operation, BUT 
the new password will not be useable.
- 
- For this reason, we recommend to always check that a succesful BIND operation 
can be performed on the Active Directory with the new password after changing 
it. You can use the [[..:latest:configuration:syncoptions:ldap|canBind* 
functions]] to do this.
- 
- ===== Non-standard object classes =====
- 
- Active Directory does not respect the **inetOrgPerson** objectClass 
definition, as specified in [[http://tools.ietf.org/html/rfc2798|RFC 2798]].  
An explanation is provided below.
- 
- LSC version 2.X can synchronize to and from Active Directory despite of this.
- 
- The objectClass inheritance path defined in 
[[http://tools.ietf.org/html/rfc2798|RFC 2798]] is as follows:
- 
-   * top
-     * person
-       * organizationalPerson 
-         * inetOrgPerson
- 
- However, in Active Directory, an extra objectClass, named **user** is 
inserted in this path:
- 
-   * top
-     * person
-       * organizationalPerson 
-         * user
-           * inetOrgPerson
- 
- This is documented by Microsoft in the 
[[http://msdn.microsoft.com/en-us/library/ms682282(VS.85).aspx|Active Directory 
Schema documentation]].



-- 
This mail was generated by DokuWiki at
http://lsc-project.org/wiki/

_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org

lsc-changes mailing list
lsc-changes@lists.lsc-project.org
http://lists.lsc-project.org/listinfo/lsc-changes

Reply via email to