Для входа в LDAP вам нужно 3 конфига OSGi.Самый сложный, у вас уже есть.
- Внешний модуль входа в систему (содержащий ссылку на следующие два)
- Провайдер идентификации LDAP (как получить доступ к LDAP)
- Sync Handler (отображение данных LDAP на данные пользователя AEM)
Вот пример:
org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalLoginModuleFactory-emea
"jcr:primaryType": "sling:OsgiConfig",
"jaas.ranking": "50",
"jaas.controlFlag": "SUFFICIENT",
"jaas.realmName": "",
"idp.name": "ldap-emea",
"sync.handlerName": "sync-emea"
org.apache.jackrabbit.oak.security.authentication.ldap.impl.LdapIdentityProvider-emea
"jcr:primaryType": "sling:OsgiConfig",
"provider.name": "ldap-emea",
"host.name": "ldap-emea.emea.mycompany.internal",
"host.port": "3269",
"host.ssl": true,
"host.tls": true,
"host.noCertCheck": false,
"bind.dn": "CN=xxxx,OU=xxxx,OU=xxxx,OU=xxxx,DC=emea,DC=dir",
"bind.password": "very secret",
"searchTimeout": "60s",
"adminPool.maxActive": "8",
"adminPool.lookupOnValidate": true,
"userPool.maxActive": "8",
"userPool.lookupOnValidate": true,
"user.baseDN": "DC=emea,DC=dir",
"user.objectclass": "user",
"user.idAttribute": "sAMAccountName",
"user.extraFilter": "xxx very specific LDAP query xxxxx",
"user.makeDnPath": false,
"group.baseDN": "OU=Groups,OU=Common,DC=emea,DC=dir",
"group.objectclass": "group",
"group.nameAttribute": "cn",
"group.extraFilter": "xxx very specific LDAP query xxxxx",
"group.makeDnPath": false,
"group.memberAttribute": "member",
"customattributes": []
org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler-emea
"jcr:primaryType": "sling:OsgiConfig",
"handler.name": "sync-emea",
"user.expirationTime": "1h",
"user.autoMembership": [],
"user.propertyMapping": [
"rep:fullname=cn",
"profile/email=mail",
"profile/familyName=sn",
"profile/givenName=givenName",
"profile/aboutMe=description",
"profile/country=co",
"profile/jobTitle=department",
"profile/phoneNumber=telephoneNumber",
"profile/mobile=mobile",
"profile/postalCode=postalCode",
"profile/street=streetAddress",
"preferences/language=\"en\""
],
"user.pathPrefix": "my-company/emea",
"user.membershipExpTime": "1h",
"user.membershipNestingDepth": "3",
"group.expirationTime": "1d",
"group.autoMembership": [],
"group.propertyMapping": [
"profile/givenName=name",
"profile/aboutMe=description"
],
"group.pathPrefix": "my-company/nested/emea",
"user.dynamicMembership": false,
"user.disableMissing": false,
"enableRFC7613UsercaseMappedProfile": false
С уважением, Алекс
Я дополнительно настроил сервер каталогов Apache и заполнил его образцами данных (Моряки семи морей) http://directory.apache.org/apacheds/basic-ug/1.5-sample-configuration.html
У меня сработала следующая конфигурация (синхронизация пользователей и групп через JMX, успешный вход в системупользователь, включая автоматическую синхронизацию):
http://localhost:4502/apps/ldap-test.9.json
{
"jcr:primaryType": "nt:folder",
"config": {
"jcr:primaryType": "sling:Folder",
"org.apache.jackrabbit.oak.security.authentication.ldap.impl.LdapIdentityProvider-test": {
"jcr:primaryType": "sling:OsgiConfig",
"provider.name": "ldap-test-alex",
"host.name": "localhost",
"host.port": "10389",
"host.ssl": false,
"host.tls": false,
"bind.dn": "uid=admin,ou=system",
"bind.password": "secret",
"user.objectclass": "person",
"user.baseDN": "ou=people,o=sevenSeas",
"user.idAttribute": "uid",
"group.objectclass": "groupOfUniqueNames",
"group.baseDN": "ou=groups,o=sevenSeas",
"group.nameAttribute": "cn",
"group.memberAttribute": "uniquemember",
},
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler-test": {
"jcr:primaryType": "sling:OsgiConfig",
"handler.name": "ldap-sync-test-alex",
"user.pathPrefix": "ldap-test",
"group.pathPrefix": "ldap-test",
"user.membershipNestingDepth": 1,
"user.autoMembership": [
"contributor"
],
"user.propertyMapping": [
"profile/email=mail",
"profile/familyName=sn",
"profile/givenName=givenName",
"profile/aboutMe=description"
]
},
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalLoginModuleFactory-test": {
"jcr:primaryType": "sling:OsgiConfig",
"idp.name": "ldap-test-alex",
"sync.handlerName": "ldap-sync-test-alex",
"jaas.controlFlag": "SUFFICIENT",
"jaas.ranking": "50"
}
}
}
Установите, чтобы следующие 1010 *
- знали или устанавливали пароль для тестового пользователя
- устанавливали user.autoMembership для автора (чтобы видеть больше, чем белый экран после успешногоlogin)
- проверьте конфигурацию OSGi в консоли Felix, возможно, вы пропустили тип или неверно указали параметр конфигурации
- Проверьте файл журнала на наличие подсказок
Alex