Sonarqube LDAP: коды ошибок 1 и 49

Я получил эти ошибки при попытке подключиться к LDAP через sonarqube:

2016.09.13 09:35:16 DEBUG web [osplLdapUsersProvider] Запрос сведений для пользователя sonartester 2016.09.13 09:35:16 DEBUG web [osplLdapSearch] Поиск: LdapSearch {baseDn = cn = Users, dc = mydomain < / strong>, dc = com, scope = subtree, request = (& (objectClass = user) (sAMAccountName = {0})), parameters = [sonartester], attributes = [mail, cn]} 2016.09.13 09:35 : 16 DEBUG web [osplLdapContextFactory] Инициализация контекста LDAP {java.naming.provider.url = ldap: // myip: 389, java.naming.factory.initial = com.sun.jndi.ldap .LdapCtxFactory, com.sun.jndi.ldap.connect.pool = true, java.naming.security.authentication = simple, java.naming.security.sasl.realm = mydomain .com, java. naming.referral = follow} 2016.09.13 09:35:16 DEBUG web [osplLdapUsersProvider] [LDAP: код ошибки 1 - 000004DC: LdapErr: DSID-0C090728, комментарий: для выполнения этой операции необходимо выполнить успешное связывание соединение., данные 0, v2580] javax.naming.NamingException: [LDAP: код ошибки 1 - 000004DC: LdapErr: DSID-0C090728, комментарий: для выполнения этой операции необходимо успешное связывание соединения., Data 0, v2580]

....

2016.09.13 09:35:16 DEBUG web [osplLdapUsersProvider] Пользовательский sonartester не найден в 2016.09.13 09:35:16 ERROR web [ossaRealmAuthenticator] Ошибка во время аутентификации org.sonar.api.utils.SonarException: невозможно получить подробности для пользовательского sonartester в 2016.09.13 09:35:16 DEBUG web [osplLdapUsersProvider] Пользовательский sonartester не найден в 2016.09.13 09:35:16 ERROR web [ossaRealmAuthenticator] Ошибка при аутентификации org.sonar.api.utils.SonarException: Невозможно получить сведения о пользовательском сонартестере в

Я создал пользователя SONARTEST, который находится в OU Users и является членом my-group. Группа также находится в OU Users. Вот мой конфиг:

sonar.security.realm=LDAP
sonar.authenticator.createUsers=true
ldap.url=ldap://myip:389
ldap.bindDn.=cn=someusername,ou=Users,o=mydomain
ldap.bindPassword.=somepassword
ldap.authentication=simple
ldap.realm=mydomain.com

ldap.user.baseDn=cn=Users,dc=mydomain,dc=com
ldap.user.request=(&(objectClass=user)(sAMAccountName={login}))
ldap.user.realNameAttribute=cn

ldap.group.baseDn=ou=Users,dc=mydomain,dc=com
ldap.group.request=(&(objectClass=my-group)(member={dn}))
ldap.group.idAttribute=sAMAccountName

Пользователь, используемый для привязки, имеет все необходимые права и также находится в OU Users. Я использовал того же пользователя для подключения к ldap на confluence, и все прошло нормально. Было бы здорово, если бы кто-нибудь мог мне помочь. Спасибо


Спасибо, Николас, за ответ

Удаление точек дает еще одну ошибку при перезапуске службы, которая не может запуститься.

2016.09.13 15:46:00 INFO  web[org.sonar.INFO] Security realm: LDAP
2016.09.13 15:46:00 INFO  web[o.s.p.l.LdapSettingsManager] User mapping: LdapUserMapping{baseDn=cn=Users,dc=mydomain,dc=com, request=(&(objectClass=user)(sAMAccountName={0})), realNameAttribute=cn, emailAttribute=mail}
2016.09.13 15:46:01 INFO  web[o.s.p.l.LdapSettingsManager] Group mapping: LdapGroupMapping{baseDn=ou=Users,dc=mydomain,dc=com, idAttribute=sAMAccountName, requiredUserAttributes=[dn], request=(&(objectClass=mygroup)(member={0}))}
2016.09.13 15:46:01 DEBUG web[o.s.p.l.LdapContextFactory] Initializing LDAP context {java.naming.provider.url=ldap://myip:389, java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory, java.naming.security.principal=cn=someusername,ou=Users,o=mydomain, com.sun.jndi.ldap.connect.pool=true, java.naming.security.authentication=simple, java.naming.security.sasl.realm=mydomain.com, java.naming.referral=follow}
2016.09.13 15:46:02 INFO  web[o.s.p.l.LdapContextFactory] Test LDAP connection: FAIL
2016.09.13 15:46:02 ERROR web[o.a.c.c.C.[.[.[/]] Exception sending context initialized event to listener instance of class org.sonar.server.platform.PlatformServletContextListener
java.lang.IllegalStateException: Unable to open LDAP connection
        at org.sonar.plugins.ldap.LdapContextFactory.testConnection(LdapContextFactory.java:146) ~[na:na]
        at org.sonar.plugins.ldap.LdapRealm.init(LdapRealm.java:64) ~[na:na]
        at org.sonar.server.user.SecurityRealmFactory.start(SecurityRealmFactory.java:84) ~[sonar-server-6.0.jar:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_91]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_91]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_91]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_91]
        at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.java:110) ~[picocontainer-2.15.jar:na]
        at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(ReflectionLifecycleStrategy.java:89) ~[picocontainer-2.15.jar:na]
        at org.sonar.core.platform.ComponentContainer$1.start(ComponentContainer.java:320) ~[sonar-core-6.0.jar:na]
        at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84) ~[picocontainer-2.15.jar:na]
        at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169) ~[picocontainer-2.15.jar:na]
        at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132) ~[picocontainer-2.15.jar:na]
        at org.picocontainer.behaviors.Stored.start(Stored.java:110) ~[picocontainer-2.15.jar:na]
        at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1016) ~[picocontainer-2.15.jar:na]
        at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1009) ~[picocontainer-2.15.jar:na]
        at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767) ~[picocontainer-2.15.jar:na]
        at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:141) ~[sonar-core-6.0.jar:na]
        at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:84) ~[sonar-server-6.0.jar:na]
        at org.sonar.server.platform.platformlevel.PlatformLevel4.start(PlatformLevel4.java:687) ~[sonar-server-6.0.jar:na]
        at org.sonar.server.platform.Platform.start(Platform.java:216) ~[sonar-server-6.0.jar:na]
        at org.sonar.server.platform.Platform.startLevel34Containers(Platform.java:190) ~[sonar-server-6.0.jar:na]
        at org.sonar.server.platform.Platform.doStart(Platform.java:113) ~[sonar-server-6.0.jar:na]
        at org.sonar.server.platform.Platform.doStart(Platform.java:99) ~[sonar-server-6.0.jar:na]
        at org.sonar.server.platform.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:44) ~[sonar-server-6.0.jar:na]
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812) [tomcat-embed-core-8.0.32.jar:8.0.32]
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255) [tomcat-embed-core-8.0.32.jar:8.0.32]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) [tomcat-embed-core-8.0.32.jar:8.0.32]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) [tomcat-embed-core-8.0.32.jar:8.0.32]
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) [tomcat-embed-core-8.0.32.jar:8.0.32]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_91]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_91]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
Caused by: javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903C5, comment: AcceptSecurityContext error, data 52e, v2580]
        at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3135) ~[na:1.8.0_91]
        at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3081) ~[na:1.8.0_91]
        at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2883) ~[na:1.8.0_91]
        at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2797) ~[na:1.8.0_91]
        at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:319) ~[na:1.8.0_91]
        at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192) ~[na:1.8.0_91]
        at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210) ~[na:1.8.0_91]
        at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153) ~[na:1.8.0_91]
        at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83) ~[na:1.8.0_91]
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684) ~[na:1.8.0_91]
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) ~[na:1.8.0_91]
        at javax.naming.InitialContext.init(InitialContext.java:244) ~[na:1.8.0_91]
        at javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154) ~[na:1.8.0_91]
        at org.sonar.plugins.ldap.LdapContextFactory.createInitialDirContext(LdapContextFactory.java:95) ~[na:na]
        at org.sonar.plugins.ldap.LdapContextFactory.createBindContext(LdapContextFactory.java:83) ~[na:na]
        at org.sonar.plugins.ldap.LdapContextFactory.testConnection(LdapContextFactory.java:142) ~[na:na]
        ... 33 common frames omitted
2016.09.13 15:46:02 ERROR web[o.a.c.c.StandardContext] One or more listeners failed to start. Full details will be found in the appropriate container log file
2016.09.13 15:46:02 ERROR web[o.a.c.c.StandardContext] Context [] startup failed due to previous errors
2016.09.13 15:46:02 WARN  web[o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
 com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)
2016.09.13 15:46:02 INFO  web[o.a.c.h.Http11NioProtocol] Starting ProtocolHandler ["http-nio-0.0.0.0-9000"]
2016.09.13 15:46:02 INFO  web[o.s.s.a.TomcatAccessLog] Web server is started
2016.09.13 15:46:02 INFO  web[o.s.s.a.EmbeddedTomcat] HTTP connector enabled on port 9000
2016.09.13 15:46:02 WARN  web[o.s.p.ProcessEntryPoint] Fail to start web
java.lang.IllegalStateException: Webapp did not start
        at org.sonar.server.app.EmbeddedTomcat.isUp(EmbeddedTomcat.java:84) ~[sonar-server-6.0.jar:na]
        at org.sonar.server.app.WebServer.isUp(WebServer.java:47) [sonar-server-6.0.jar:na]
        at org.sonar.process.ProcessEntryPoint.launch(ProcessEntryPoint.java:105) ~[sonar-process-6.0.jar:na]
        at org.sonar.server.app.WebServer.main(WebServer.java:68) [sonar-server-6.0.jar:na]
2016.09.13 15:46:02 INFO  web[o.a.c.h.Http11NioProtocol] Pausing ProtocolHandler ["http-nio-0.0.0.0-9000"]
2016.09.13 15:46:03 INFO  web[o.a.c.h.Http11NioProtocol] Stopping ProtocolHandler ["http-nio-0.0.0.0-9000"]
2016.09.13 15:46:03 INFO  web[o.a.c.h.Http11NioProtocol] Destroying ProtocolHandler ["http-nio-0.0.0.0-9000"]
2016.09.13 15:46:03 INFO  web[o.s.s.a.TomcatAccessLog] Web server is stopped
2016.09.13 15:46:03 INFO  app[o.s.p.m.Monitor] Process[es] is stopping
2016.09.13 15:46:04 INFO   es[o.s.p.StopWatcher]  Stopping process
2016.09.13 15:46:04 INFO   es[o.elasticsearch.node]  [sonar-1473767147543] stopping ...
2016.09.13 15:46:04 INFO   es[o.elasticsearch.node]  [sonar-1473767147543] stopped
2016.09.13 15:46:04 INFO   es[o.elasticsearch.node]  [sonar-1473767147543] closing ...
2016.09.13 15:46:04 INFO   es[o.elasticsearch.node]  [sonar-1473767147543] closed
2016.09.13 15:46:04 INFO  app[o.s.p.m.Monitor] Process[es] is stopped
<-- Wrapper Stopped

telnet на IP и порт 389 работает


Я создал нового пользователя с более простым паролем (без специальных символов). Ошибка изменилась на следующее:

Вызвано: javax.naming.AuthenticationException: [LDAP: код ошибки 49 - 80090308: LdapErr: DSID-0C0903C5, комментарий: ошибка AcceptSecurityContext, данные 52e, v2580]


person Yanick Laborée    schedule 13.09.2016    source источник
comment
Прежде всего удалите эти конечные точки в ldap.bindDn. и ldap.bindPassword.. Затем перезапустите SonarQube, посмотрите, как это происходит, и обновите свой вопрос с помощью последних конфигураций / журналов.   -  person Nicolas B. - SonarSource Team    schedule 13.09.2016
comment
@Nicolas хороший улов. Поскольку проблема устранена, предлагаю добавить ответ.   -  person Simon Brandhof - SonarSource    schedule 14.09.2016


Ответы (2)


поменял часть

ldap.bindDn = cn = someusername, ou = Users, o = mydomain

to

ldap.bindDn [email protected]

и это сработало

person Yanick Laborée    schedule 12.10.2016

Первый выпуск

Это настоящая проблема вашей ошибки:

Для выполнения этой операции необходимо, чтобы соединение было выполнено успешно.

Согласно документации плагина LDAP, это свойства, которые вы должны настроить для SonarQube для привязки на ваш сервер: ldap.bindDn и ldap.bindPassword.

Но затем, глядя на вашу конфигурацию:

ldap.bindDn.=cn=someusername,ou=Users,o=mydomain
ldap.bindPassword.=somepassword

Видите эти конечные точки прямо здесь? Их удаление должно позволить операции привязки работать лучше.


Вторая проблема. Active Directory возвращает подробную ошибку:

[LDAP: код ошибки 49–80090308: LdapErr: DSID-0C0903C5, комментарий: ошибка AcceptSecurityContext, данные 52e, v2580]

error code 49 (data 52e) - интересная часть. Немного поискав в Google кодов ошибок LDAP, вы получите здесь Например:

49 - LDAP_INVALID_CREDENTIALS - указывает, что во время операции привязки произошло одно из следующих событий: клиент передал неверный DN или пароль, либо пароль неверен, потому что срок его действия истек, обнаружение злоумышленника заблокировало учетную запись или другая подобная причина. См. Код данных для получения дополнительной информации.

Итог: исправьте учетные данные.

person Nicolas B. - SonarSource Team    schedule 14.09.2016
comment
Я уже удалил точки, как обновлено в вопросе выше; Удаление точек дает еще одну ошибку при перезапуске службы, которая не может запуститься, и я дал ошибку чуть ниже. - person Yanick Laborée; 15.09.2016
comment
Ответ @ YanickLaborée отредактирован с указателями на ваш новый выпуск. Тем не менее, он явно отличается, поэтому в какой-то момент было бы неплохо поднять отдельные вопросы SO (вы уже должны отредактировать заголовок этого, чтобы упомянуть оба кода ошибки 1 и 49) - person Nicolas B. - SonarSource Team; 15.09.2016
comment
Я уверен, что мои учетные данные нашли кого-то, у кого такая же проблема. stackoverflow.com/questions/38346609 / Я создал нового пользователя для проверки полученного связывания: Вызвано: javax.naming.AuthenticationException: [LDAP: код ошибки 49 - 80090308: LdapErr: DSID-0C0903C5, комментарий: ошибка AcceptSecurityContext, данные 52e, v2580 ] - person Yanick Laborée; 16.09.2016