我在使用LDAP身份验证时遇到问题。看着日志似乎绑定好了,但是当我尝试登录时看起来并不像它点击ldap那样我认证失败了。
在日志中我看到:
2017.03.28 17:17:46 INFO web[org.sonar.INFO] Security realm: LDAP
2017.03.28 17:17:46 INFO web[o.s.p.l.LdapSettingsManager] User mapping: LdapUserMapping{baseDn=ou=people,o=intra,dc=sears,dc=com, request=(&(objectClass=*searsorgperson)(uid={0})), realNameAttribute=cn, emailAttribute=mail}
2017.03.28 17:17:46 INFO web[o.s.p.l.LdapSettingsManager] Groups will not be synchronized, because property 'ldap.group.baseDn' is empty.
2017.03.28 17:17:46 DEBUG web[o.s.p.l.LdapContextFactory] Initializing LDAP context {java.naming.provider.url=ldap://trprdirqr3.intra.searshc.com:389/ou=people,o=intra,dc=sears,dc=com, java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory, com.sun.jndi.ldap.connect.pool=true, java.naming.security.authentication=simple, java.naming.referral=follow}
2017.03.28 17:17:46 INFO web[o.s.p.l.LdapContextFactory] Test LDAP connection on ldap://trprdirqr3.intra.searshc.com:389/ou=people,o=intra,dc=sears,dc=com: OK
2017.03.28 17:17:46 INFO web[org.sonar.INFO] Security realm started
我的配置包含以下内容:
# General Configuration
sonar.security.realm=LDAP
sonar.authenticator.createUsers=true
sonar.authenticator.class: org.sonar.plugins.ldap.LdapAuthenticator
sonar.security.savePassword=true
sonar.security.updateUserAttributes=true
ldap.url=ldap://trprdirqr3.intra.searshc.com:389/ou=people,o=intra,dc=sears,dc=com
# User Configuration
ldap.user.baseDn=ou=people,o=intra,dc=sears,dc=com
ldap.user.request=(&(objectClass=*searsorgperson)(uid={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail
根据我的LDAP管理员的说法,它会在第一次出现时进行无意义的检查,但之后没有其他任何操作。所以出于某种原因,我登录时似乎没有碰到LDAP服务器。除了admin之外,我没有任何本地ID设置。
答案 0 :(得分:1)
您尚未配置经过身份验证的用户进行搜索。
也就是说,第一个测试,匿名绑定测试连接。但要搜索用户DN,您需要的不仅仅是匿名权限。然后,一旦找到DN,就绑定为登录用户。但首先,您需要提供可以搜索的代理用户的LDAP DN及其密码。
此外,您的objectlass搜索过滤器中还有一个星号(通配符):
ldap.user.request =(及(objectClass的= * searsorgperson)(UID = {登录}))
或者是格式化符号?我不确定ObjectClass通常可以这样搜索。)