apt-get install 389-ds
setup-ds
389 Directory Server
Status |
Works well, but there are some drawbacks. |
|---|---|
Recommended connector |
Resource Configuration
Configuration of 389 Directory Server:
Installation - Ubuntu
Use "dc=example,dc=com" as suffix. The setup will create a basic directory structure.
Admin User
Creating admin user:
dn: cn=idm,ou=Special Users,dc=example,dc=com
objectClass: person
cn: idm
sn: IDM
userPassword: secret123
ACIs
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr="*")(version 3.0; acl "IDM
read access"; allow (read,search,compare)
userdn="ldap:///cn=idm,ou=Special Users,dc=example,dc=com";)
dn: ou=People,dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr="*")(version 3.0; acl "IDM
write access"; allow (all)
userdn="ldap:///cn=idm,ou=Special Users,dc=example,dc=com";)
dn: ou=Groups,dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr="*")(version 3.0; acl "IDM
write access"; allow (all)
userdn="ldap:///cn=idm,ou=Special Users,dc=example,dc=com";)
dn: cn=changelog
changetype: modify
add: aci
aci: (target="ldap:///cn=changelog")(targetattr="*")(version 3.0; acl "IDM
Access to ChangeLog"; allow (read,search,compare)
userdn="ldap:///cn=idm,ou=Special Users,dc=example,dc=com";)
Plugins
Configuring the memberOf plugin:
ldapmodify -D "cn=directory manager" -w secret123 -p 2389 -h localhost
dn: cn=MemberOf Plugin,cn=plugins,cn=config
changetype: modify
replace: nsslapd-pluginEnabled memberofgroupattr
nsslapd-pluginEnabled: on
memberofgroupattr: uniqueMember
Enable retro changelog:
ldapmodify -D "cn=directory manager" -w secret123 -p 2389 -h localhost
dn: cn=Retro Changelog Plugin,cn=plugins,cn=config
changetype: modify
replace: nsslapd-pluginEnabled
nsslapd-pluginEnabled: on
Server restart required.
The accounts must have objectclass that allows memberOf attribute.
The most suitable is inetUser object class.
Connector Configuration
Drawbacks
Attribute nsUniqueId
The 389ds has a very convenient attribute nsUniqueId that is an attractive choice for account primary identifier.
And this mostly works.
But it does NOT work for changelog-based live synchronization.
Delete deltas in the changelog do NOT have the nsUniqueId attribute.
As the original entry is already deleted at that time then it is not possible for a connector to translate the DN of the deleted entry to a nsUniqueId and the delete delta will not work.
Workaround: change primary account identifier to dn.
Bad Schema
The 389ds is NOT a fully LDAPv3-compliant directory server.
It is using non-numeric OIDs, under some circumstances it uses illegal attribute names (such as unhashed#user#password), it is using attributes that are not declared in the schema (firstchangenumber, lastchangenumber), etc.
MidPoint 3.2 is bundled with LDAP connector that relies on LDAPv3 compliance of the schema and will fail is 389ds is configured in non-LDAPv3-compliant way.
The LDAP connector bundled with midPoint 3.3 was improved to be a more tolerant LDAP client and it will work.