Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
tutorial:adm:manage_ad [2019/02/27 14:58] fiserp [Before you start] |
tutorial:adm:manage_ad [2020/02/27 16:32] kotynekv [Connector configuration] vlv sort attribute warning |
||
---|---|---|---|
Line 2: | Line 2: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | This tutorial will show you how to connect AD as a target system for users (their accounts) from CzechIdM. We will use an AD bundle connector from Connid. | + | This tutorial will show you how to connect AD as a target system for users (their accounts) from CzechIdM. We will use an AD bundle connector from ConnId. |
===== Before you start ===== | ===== Before you start ===== | ||
==== Adding Active Directory connector ==== | ==== Adding Active Directory connector ==== | ||
+ | |||
+ | <note warning> | ||
+ | |||
First of all, you need to download the connector from Connid (e.g. [[http:// | First of all, you need to download the connector from Connid (e.g. [[http:// | ||
Then add the jar file into CzechIdM folder inside the application server. In case you installed CzechIdM into tomcat by standard installation, | Then add the jar file into CzechIdM folder inside the application server. In case you installed CzechIdM into tomcat by standard installation, | ||
Line 19: | Line 22: | ||
==== Preparing Active Directory ==== | ==== Preparing Active Directory ==== | ||
+ | You must prepare your Active Directory for the CzechIdM integration, | ||
+ | * Enable LDAPS (SSL-protected LDAP protocol) on the AD. This is vital for production deployments. Also, CzechIdM will not manage users' passwords if not connected to AD through LDAPS. | ||
+ | * Create an user account for the CzechIdM. Identity manager will use this account to perform operations on your AD. Although you can use a Domain Administrator account, we highly discourage it. | ||
+ | * This is simply a Domain User account like any other, but you should create it in different subtree than you want to manage through IdM. | ||
+ | * Grant the CzechIdM user permissions on your AD. | ||
+ | === Granting permissions === | ||
+ | Suppose we have a domain '' | ||
+ | |||
+ | * CzechIdM needs to '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Ability to read schema and sufficient AD configuration should be there by default for an authenticated user. Probably no need to adjust it. | ||
+ | |||
+ | * CzechIdM needs '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Which subtrees you need to grant privileges on depends on the actual directory tree of your Active Directory. | ||
+ | |||
+ | **Granting full control to CzechIdM application user** | ||
+ | |||
+ | The process is fairly straightforward. Just repeat it for every root of every subtree you need to grant the rights on. | ||
+ | |||
+ | - Open the '' | ||
+ | - Right-click a container (in our case it was simply marked '' | ||
+ | - Choose '' | ||
+ | - Choose the '' | ||
+ | - Choose '' | ||
+ | - Choose '' | ||
+ | - Tick the '' | ||
+ | - Check the summary and finish the wizard. Changes are effective immediatelly. | ||
+ | - Repeat for other subtrees as necessary. | ||
+ | |||
+ | <note important> | ||
+ | **CzechIdM has to have access to objects directly referenced from objects you manage.** | ||
+ | |||
+ | For example: | ||
+ | |||
+ | A user is member of some groups, this is noted in his '' | ||
+ | However this requirement is not transitive in groups hierarchy. | ||
+ | In AD, you have a '' | ||
+ | But the '' | ||
+ | |||
+ | If you want to manage your users and their group membership, you therefore need to grant full control on '' | ||
+ | |||
+ | But you **do not need** to grant anything on '' | ||
+ | </ | ||
===== Basic configuration ===== | ===== Basic configuration ===== | ||
Go to **Systems** from main menu, then above list of current systems use Add button. On the first page just fill system name. | Go to **Systems** from main menu, then above list of current systems use Add button. On the first page just fill system name. | ||
Line 35: | Line 87: | ||
* **Server hostname** - hostname or IP | * **Server hostname** - hostname or IP | ||
* **Server port** - usually 389 or 636 | * **Server port** - usually 389 or 636 | ||
+ | * **Failover** - an optional list of other domain controllers used in the case that the primary server is not available. Use URL format ''< | ||
* **Principal** - login of the user with admin privilege that CzechIdM will use for the connection. DN of the user should work too. | * **Principal** - login of the user with admin privilege that CzechIdM will use for the connection. DN of the user should work too. | ||
* **Principal password** - password of the administrator user | * **Principal password** - password of the administrator user | ||
* **Root suffixes** - the list distinguished names of the roots that connector uses for managing users. If you do not want to manage some account, it is advised not to include them in the Root suffixes. When you configure the system for the first time, root suffix should lead to the top container (e.g. DC=aktest, | * **Root suffixes** - the list distinguished names of the roots that connector uses for managing users. If you do not want to manage some account, it is advised not to include them in the Root suffixes. When you configure the system for the first time, root suffix should lead to the top container (e.g. DC=aktest, | ||
* **User search scope** - manage users in specified container or subtrees. Usually subtree | * **User search scope** - manage users in specified container or subtrees. Usually subtree | ||
- | * **Entry object classes** - only objects (accounts) with object classes specified there will be managed. Each object class on new line, no comma or another separator. Usual values: top, person, organizationalPerson, | + | * **Entry object classes** - only objects (accounts) with object classes specified there will be managed. Each object class on new line, no comma or another separator. Usual values: top, person, organizationalPerson, |
+ | * **Base contexts for group entry searches** - container in AD where the groups are located. If the groups are in different container then people and the group container is not under the path which is in "Root suffixes" | ||
* **Base contexts for user entry searches** - usually the same as "Root suffixes" | * **Base contexts for user entry searches** - usually the same as "Root suffixes" | ||
* **Group members reference attribute** - usually " | * **Group members reference attribute** - usually " | ||
- | * **pageSize** - this option is only available if you use connector that is customizes by BCV Solutions. | + | * **pageSize** - this option is only available if you use connector that is customizes by BCV Solutions. |
* **Uid Attribute** - this is one of the most important option. It defines the primary key/UID of the account. Attribute values will be stored in CzechIdM for each account. Must be unique and should not change. **It is strongly advised to use " | * **Uid Attribute** - this is one of the most important option. It defines the primary key/UID of the account. Attribute values will be stored in CzechIdM for each account. Must be unique and should not change. **It is strongly advised to use " | ||
* **Object classes to synchronize** - usually the same as "Entry object classes" | * **Object classes to synchronize** - usually the same as "Entry object classes" | ||
+ | * **Specified attributes to be returned** - default " | ||
- | <note important> | + | <note warning> |
+ | |||
+ | <note important> | ||
+ | ];" error</ | ||
<note important> | <note important> | ||
Line 74: | Line 132: | ||
* Add all attributes that you want to work with. As a minimum, the " | * Add all attributes that you want to work with. As a minimum, the " | ||
* Set all attributes as **Able to read, update, create**. | * Set all attributes as **Able to read, update, create**. | ||
+ | |||
+ | <note tip>It is possible you will not see the full scheme even with root suffix set to the top container. In that case, check that schemas are not stored separately and if they are, set root suffixes to the appropriate DC.</ | ||
+ | |||
+ | <note warning> | ||
+ | If you want to use the workflow for groups synchronization, | ||
===== Mapping ===== | ===== Mapping ===== | ||
Line 161: | Line 224: | ||
{{ : | {{ : | ||
+ | |||
+ | ===== ldapGroups not returned ===== | ||
+ | |||
+ | If you are running on a Windows server, the ' | ||
+ | |||
+ | ===== Connection via SSL not working ===== | ||
+ | If you just imported root certificate to IdM truststore, but SSL connection to AD is still not working try following method to find which server hostname you should use. | ||
+ | Configure connection via SSL to AD in Apache Directory Studio during connection you will see this window: | ||
+ | {{: | ||
+ | click on View certificate -> tab General -> field Issued To -> Common name(CN) and use this value as server hostname. | ||
+ | |||
+ | ===== LdapErr: DSID-0C0907C5 ===== | ||
+ | If you see this error when reconciliating AD groups: | ||
+ | < | ||
+ | |||
+ | the likely cause is that some groups have many members. AD has a property MaxPageSize which is probably set to lower than necessary (default is 1000). Increasing the value to an arbitrary large number (30000) helped in our case but only AD admin can change this. | ||
+ | |||
+ | ===== Failover ===== | ||
+ | |||
+ | The configuration property Failover is used when the primary server (configured in the Server hostname) is unavailable. The attribute contains a list of AD servers that connector can use. | ||
+ | |||
+ | Please note that this property is not used in the case that the primary server is accessible on the given port, but there is some other problem with the communication (e.g. the credentials are incorrect). | ||
+ | |||
+ | The value of this property must be a proper URL, e.g. ''< | ||
===== Video Guide ===== | ===== Video Guide ===== | ||
[[https:// | [[https:// |