We are running SonarQube as a windows service that is running using an AD user which is the same as configured in bindDn. We wonder why the second configuration does not work and returns an error.
This works:
Configuration
===========
sonar.authenticator.downcase=true
sonar.security.realm=LDAP
ldap.url=ldap://name.x.y.zzz:389
ldap.bindDn=a
ldap.bindPassword=b
ldap.user.baseDn=DC=x,DC=y,DC=zzz
ldap.user.request=(&(objectClass=user)(sAMAccountName={login}))
Log (DEBUG MODE)
=================
INFO web[o.s.p.l.LdapSettingsManager] User mapping: LdapUserMapping{...}
INFO web[o.s.p.l.LdapSettingsManager] Groups will not be synchronized, because property 'ldap.group.baseDn' is empty.
DEBUG web[o.s.p.l.LdapContextFactory] Initializing LDAP context {...}
INFO web[o.s.p.l.LdapContextFactory] Test LDAP connection on ldap://name.x.y.zzz:389: OK
DEBUG web[o.s.p.l.LdapUsersProvider] Requesting details for user xxxxxx
DEBUG web[o.s.p.l.LdapSearch] Search: LdapSearch{...}
DEBUG web[o.s.p.l.LdapContextFactory] Initializing LDAP context {...}
DEBUG web[o.s.s.u.NewUserNotifier] User created: xxxxx. Notifying NewUserHandler handlers...
This fails:
Configuration
===========
sonar.authenticator.downcase=true
sonar.security.realm=LDAP
ldap.realm=x.y.zzz
ldap.bindDn=a
ldap.bindPassword=b
ldap.user.baseDn=DC=x,DC=y,DC=zzz
ldap.user.request=(&(objectClass=user)(sAMAccountName={login}))
Log (DEBUG MODE)
=================
INFO web[o.s.p.l.LdapSettingsManager] Auto discovery mode
INFO web[o.s.p.l.LdapSettingsManager] Detected server: ldap://name.x.y.zzz:389
INFO web[o.s.p.l.LdapSettingsManager] User mapping: LdapUserMapping{...}
INFO web[o.s.p.l.LdapSettingsManager] Groups will not be synchronized, because property 'ldap.group.baseDn' is empty.
DEBUG web[o.s.p.l.LdapContextFactory] Initializing LDAP context {...}
INFO web[o.s.p.l.LdapContextFactory] Test LDAP connection on ldap://name.x.y.zzz:389: OK
DEBUG web[o.s.p.l.LdapUsersProvider] Requesting details for user xxxxx
DEBUG web[o.s.p.l.LdapSearch] Search: LdapSearch{...}
ERROR web[o.s.s.a.RealmAuthenticator] Error during authentication
java.lang.NullPointerException: null
at org.sonar.plugins.ldap.LdapSearch.find(LdapSearch.java:126) ~[na:na]
at org.sonar.plugins.ldap.LdapSearch.findUnique(LdapSearch.java:143) ~[na:na]
at org.sonar.plugins.ldap.LdapUsersProvider.doGetUserDetails(LdapUsersProvider.java:77) ~[na:na]
at org.sonar.api.security.ExternalUsersProvider.doGetUserDetails(ExternalUsersProvider.java:54) ~[sonar-plugin-api-6.0.jar:na]
at org.sonar.server.authentication.RealmAuthenticator.doAuthenticate(RealmAuthenticator.java:89) [sonar-server-6.0.jar:na]
at org.sonar.server.authentication.RealmAuthenticator.authenticate(RealmAuthenticator.java:83) [sonar-server-6.0.jar:na]
at org.sonar.server.authentication.CredentialsAuthenticator.authenticate(CredentialsAuthenticator.java:56) [sonar-server-6.0.jar:na]
at org.sonar.server.authentication.CredentialsAuthenticator.authenticate(CredentialsAuthenticator.java:45) [sonar-server-6.0.jar:na]
at org.sonar.server.authentication.ws.LoginAction.authenticate(LoginAction.java:91) [sonar-server-6.0.jar:na]
at org.sonar.server.authentication.ws.LoginAction.doFilter(LoginAction.java:76) [sonar-server-6.0.jar:na]
at org.sonar.server.platform.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:125) [sonar-server-6.0.jar:na]
at org.sonar.server.platform.MasterServletFilter.doFilter(MasterServletFilter.java:94) [sonar-server-6.0.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:56) [sonar-server-6.0.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.sonar.server.platform.RoutesFilter.doFilter(RoutesFilter.java:55) [sonar-server-6.0.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.sonar.server.platform.ProfilingFilter.doFilter(ProfilingFilter.java:84) [sonar-server-6.0.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) [tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) [tomcat-embed-core-8.0.32.jar:8.0.32]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_101]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.32.jar:8.0.32]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_101]