【问题标题】:Sonarqube LDAP: error code 1 and 49Sonarqube LDAP:错误代码 1 和 49
【发布时间】:2016-10-12 17:41:02
【问题描述】:

我在尝试通过 sonarqube 连接到 LDAP 时遇到这些错误:

2016.09.13 09:35:16 DEBUG web[o.s.p.l.LdapUsersProvider] 请求用户 soartester 的详细信息 2016.09.13 09:35:16 DEBUG web[o.s.p.l.LdapSearch] 搜索:LdapSearch{baseDn=cn=Users,dc=mydomain,dc=com, scope=subtree, request=(&(objectClass=用户)(sAMAccountName={0})), 参数=[sonartester], 属性=[mail, cn]} 2016.09.13 09:35:16 调试 web[o.s.p.l.LdapContextFactory] ​​初始化 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[o.s.p.l.LdapUsersProvider] [LDAP:错误代码 1 - 000004DC:LdapErr:DSID-0C090728,注释:为了执行此操作,必须在连接上完成成功绑定。,数据 0 , v2580] javax.naming.NamingException:[LDAP:错误代码 1 - 000004DC:LdapErr:DSID-0C090728,注释:为了执行此操作,必须在连接上成功绑定。数据 0,v2580]

....

2016.09.13 09:35:16 DEBUG web[o.s.p.l.LdapUsersProvider] 用户 soartester 未在 2016.09.13 09:35:16 ERROR web[o.s.s.a.RealmAuthenticator] 身份验证期间出错 org.sonar.api.utils.SonarException:无法检索用户sonartester的详细信息 2016.09.13 09:35:16 DEBUG web [o.s.p.l.LdapUsersProvider] 用户sonartester 未在 2016.09.13 09:35:16 ERROR web[o.s.s.a.RealmAuthenticator] 身份验证期间出错 org.sonar.api.utils.SonarException:无法在

中检索用户sonartester的详细信息

我创建了用户 OU 中的用户 SONARTEST 和 my-group 的成员。 该组也可以在用户 OU 中找到。 这是我的配置:

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 中找到。我在 confluence 上使用同一个用户连接到 ldap,一切正常。 如果有人可以帮助我,那就太好了。 谢谢


感谢尼古拉斯的回复

在重新启动无法启动的服务时删除点会产生另一个错误。

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]

【问题讨论】:

  • 在任何事情之前,删除 ldap.bindDn.ldap.bindPassword. 中的那些尾随点。然后重新启动 SonarQube,看看它是如何运行的,并使用最新的配置/日志更新您的问题。
  • @Nicolas 不错。由于问题已解决,我建议添加一个答案。

标签: active-directory ldap sonarqube sonarqube-ops


【解决方案1】:

改了部分

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

ldap.bindDn =someusername@mydomain.com

成功了

【讨论】:

    【解决方案2】:

    第一期

    这是您错误中的真正问题:

    为了执行此操作,必须在连接上完成成功的绑定

    根据LDAP Plugin documentation,您应该为 SonarQube 配置以绑定到您的服务器的属性:ldap.bindDnldap.bindPassword

    但是,看看你的配置:

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

    看到那些尾随的点了吗?删除它们应该让 bind 操作更好地工作。


    第二期 您的 Active Directory 正在返回详细错误:

    [LDAP:错误代码 49 - 80090308:LdapErr:DSID-0C0903C5,注释:AcceptSecurityContext 错误,数据 52e,v2580]

    error code 49 (data 52e) 是有趣的部分。在 LDAP 错误代码上进行一些谷歌搜索会为您带来 here 例如:

    49 - LDAP_INVALID_CREDENTIALS - 表示在绑定操作期间发生了以下情况之一:客户端传递了不正确的 DN 或密码,或密码不正确,因为它已过期,入侵者检测已锁定帐户,或其他类似原因.有关详细信息,请参阅数据代码。

    底线:修复凭据。

    【讨论】:

    • 我已经删除了上述问题中更新的点; “在重新启动无法启动的服务时删除点会出现另一个错误”,我在它下面给出了错误。
    • @YanickLaborée 答案已编辑,并为您的新问题提供了指针。虽然它显然是不同的,所以在某些时候提出不同的 SO 问题会很好(你应该已经编辑了这个问题的标题以提及错误代码 1 49)
    • 我确信我的凭据发现有人遇到了同样的问题。 stackoverflow.com/questions/38346609/… 我创建了一个新用户来测试我们得到的绑定:“原因:javax.naming.AuthenticationException:[LDAP:错误代码 49 - 80090308:LdapErr:DSID-0C0903C5,注释:AcceptSecurityContext 错误,数据 52e,v2580] "
    猜你喜欢
    • 2016-11-15
    • 1970-01-01
    • 2018-11-11
    • 2011-11-29
    • 2014-07-04
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    相关资源
    最近更新 更多