如何在CQ 6中通过LDAP对目录进行身份验证

时间:2014-11-26 12:07:50

标签: java ldap cq5 aem

问题:我们将CQ与外部门户集成,门户在请求标头中发送用户信息,即用户名和授权令牌(密码),此请求用于CQ Publish实例AEM 6.0版。我们必须针对客户端提供的LDAP验证用户。我们如何才能实现这一目标?

到目前为止尝试的事情: 按照AEM 6 Docs配置并连接到LDAP。接下来尝试使用CQ中提供的用户登录目录,CQ尝试通过LDAP请求(在配置中提供)连接和查询用户,并在crx中获取并创建相应的用户,以便缓存用户详细信息并且不请求LDAP请求当他/她尝试再次登录时为同一用户触发。但是,在CQ中创建的用户没有密码信息,即在ldap请求中没有提取密码并在crx中更新。因此对CQ的认证失败。简而言之,在添加配置后,CQ通过LDAP连接目录,获取用户详细信息,但不提取该用户的密码,这会导致身份验证失败。

寻找最佳方法。欢迎任何替代方法。请参阅以下配置。

LdapIdentityProvider searchTimeout="60s"
host.name="***"
group.makeDnPath=B"false"
user.baseDN="ou\=people,dc\=***,dc\=com"
group.objectclass=["groupOfUniqueNames"]
user.objectclass=["person","**","**"]
host.noCertCheck=B"false"
user.makeDnPath=B"false"
bind.dn="uid\=***,ou\=***,ou\=***,dc\=***,dc\=com"
group.baseDN="ou\=groups,o\=example,dc\=com"
group.extraFilter=""
user.extraFilter=""
host.port=I"389"
bind.password="***"
group.nameAttribute="cn"
host.ssl=B"false"
provider.name="***"
host.tls=B"false"
user.idAttribute="uid"
group.memberAttribute="uniquemember"

ExternalLoginModuleFactory 
jaas.controlFlag="SUFFICIENT"
jaas.ranking=I"50"
sync.handlerName="***"
jaas.realmName=""
idp.name="***"

DefaultSyncHandler
group.pathPrefix=""
group.expirationTime="1d"
user.membershipExpTime="1h"
user.pathPrefix=""
user.propertyMapping=["rep:email\=mail","rep:fullName\=cn","profile/email\=mail","profile/familyName\=sn","profile/givenName\=gn"]
handler.name="qaldapsync"
user.autoMembership=[""]
user.expirationTime="1h"
group.propertyMapping=["description\=description","rep:email\=mail","rep:fullname\=cn"]
user.membershipNestingDepth=I"0"
group.autoMembership=[""]

1 个答案:

答案 0 :(得分:1)

身份验证始终针对LDAP系统而不是AEM。因此,密码未同步是正常的。

如果我说得对,你确实成功地将LDAP连接到AEM并进行了同步,但又抱怨没有同步密码?如上所述,这不是您通常的做法,我建议保留密码,以便对LDAP服务器进行身份验证。但如果您确实需要同步密码,可以尝试将其添加到user.propertyMapping:rep:password = userPassword。

缺点是用户在LDAP中删除或更改了LDAP中的密码仍然可以使用他的旧帐户和密码登录AEM。所以这将是一个很大的安全问题。

其他提示:如果您将user.membershipNestingDepth配置为至少为“1”,则只会同步这些组。