我正在使用Liferay 6.2,我正在尝试进行LDAP身份验证。 LDAP服务器由另一个组织提供,我无权访问任何配置,我只有系统帐户的凭据来查找目录。当我尝试使用LDAP服务器中的用户凭据登录Liferay时,身份验证失败,并显示以下错误代码:
13:54:05,738 ERROR [http-bio-8080-exec-3][LDAPAuth:341] Problem accessing LDAP server
javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr:
DSID-0315270B, problem 2001 (NO_OBJECT), data 0, best match of:
'O=uni,C=de' remaining name 'ou=people,o=uni,c=de'
尝试使用LDAP目录中不存在的用户登录时发生的同一错误。尽管如此,映射仍然有效。尝试使用有效的用户凭据登录后,liferay数据库中有一个条目,其中包含相应的用户数据。但是访问Liferay是不可能的。
这些是我在portal-ext.properties中的设置(测试LDAP连接返回成功,连接设置是假名的):
ldap.base.provider.url=ldaps://ldap.ldap-server
ldap.base.dn=ou=people,o=uni,c=de
ldap.security.principal=uid=prox,ou=prox,o=uni,c=de
ldap.security.credentials=secret
#auth.pipeline.enable.liferay.check=false
ldap.auth.enabled=true
ldap.auth.required=true
ldap.auth.method=bind
ldap.import.enabled=false
ldap.import.on.startup=false
ldap.import.interval=10
ldap.export.enabled=false
ldap.export.group.enabled=false
ldap.auth.search.filter=(uid=@screen_name@)
ldap.import.user.search.filter=(objectClass=inetOrgPerson)
ldap.attrs.transformer.impl=com.liferay.portal.security.ldap.DefaultAttributesTransformer
ldap.user.mappings=screenName=cn\npassword=userPassword\nfirstName=givenNam\nlastName=sn\njobTitle=title\ngroup=groupMembership
users.email.address.required=false
users.email.address.auto.suffix=@no-emailaddress.com
users.email.address.generator=com.liferay.portal.security.auth.DefaultEmailAddressGenerator
users.email.address.validator=com.liferay.portal.security.auth.DefaultEmailAddressValidator
ldap.password.policy.enabled=false
ldap.import.user.password.enabled=true
ldap.import.user.password.autogenerated=false
ldap.import.user.password.default=test
答案 0 :(得分:0)
检查LDAP端的FQDN,包括前缀(cn,ou等),并确保它与Liferay中的目录配置相匹配。
您可以尝试从控制面板进行配置,这对您来说更容易,因为它可以检查是否已建立连接。您可以检查是否已提取用户,甚至不需要重新启动服务器。
答案 1 :(得分:0)
现在有效。有两个问题:
我改变了ldap.base.dn = ou = people,o = uni,c = de to ldap.base.dn = o = uni,c = de and
ldap.import.user.search.filter =(objectClass = inetOrgPerson)to ldap.import.user.search.filter =(objectClass = *)