Docker JFrog容器注册表7.3.2不能与Active Directory一起使用

Docker JFrog容器注册表7.3.2不能与Active Directory一起使用,docker,active-directory,ldap,artifactory,jfrog-container-registry,Docker,Active Directory,Ldap,Artifactory,Jfrog Container Registry,我希望这里有人能帮我。我们目前正在评估JFrog的Artifactory-Container注册表,它作为Docker服务运行,在我的一生中,我无法让它在我们的Active Directory实例中正常工作。我在版本6中工作得很好,但随着版本7的发布,我决定用新版本开始新的工作 因此,我已经在我们的swarm中启动并运行了artifactory jcr:7.3.2。进入管理->安全->LDAP并使用以下字段创建新的LDAP设置配置文件: LDAP URL:ldap://mydc.company.

我希望这里有人能帮我。我们目前正在评估JFrog的Artifactory-Container注册表,它作为Docker服务运行,在我的一生中,我无法让它在我们的Active Directory实例中正常工作。我在版本6中工作得很好,但随着版本7的发布,我决定用新版本开始新的工作

因此,我已经在我们的swarm中启动并运行了artifactory jcr:7.3.2。进入管理->安全->LDAP并使用以下字段创建新的LDAP设置配置文件:

LDAP URL:ldap://mydc.company.net:389/DC=company,DC=net

用户DN模式:空白

电子邮件属性:邮件

搜索筛选器:sAMAccountName={0}

搜索库:OU=公司用户

搜索子树:已选中

经理DN:CN=_svccount,OU=服务帐户,OU=公司用户,DC=公司,DC=net

管理员密码:正确的密码

管理器DN正确,密码已验证和测试。我可以从任何计算机使用服务帐户登录,并使用ADExplorer成功查询目录,并仅使用返回我的用户对象的我的sAMAccountName对我的帐户发出查询。因此,我知道服务帐户的密码正确,权限正确,并且可以成功发出查询

但是,当尝试从LDAP设置配置文件页面测试帐户时,我会弹出一条通用错误消息,说明连接到LDAP服务器时出错:

对于日志,我查看/var/opt/artifactory/artifactory-service.log文件

以下是“测试帐户”尝试失败后立即出现的条目:

2020-04-03T17:16:46.714Z [jfrt ] [ERROR] [7faa71d56a50ef2b] [o.a.s.l.AbstractLdapService:67] [http-nio-8081-exec-4] - Error connecting to the LDAP server: 


org.springframework.security.authentication.AuthenticationServiceException: User myuseraccount failed to authenticate


    at org.artifactory.security.ldap.ArtifactoryBindAuthenticator.authenticate(ArtifactoryBindAuthenticator.java:166)


    at org.artifactory.security.ldap.LdapServiceImpl.testLdapConnection(LdapServiceImpl.java:77)


    at org.artifactory.security.SecurityServiceImpl.testLdapConnection(SecurityServiceImpl.java:3193)


    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)


    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)


    at java.base/java.lang.reflect.Method.invoke(Method.java:566)


    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)


    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:205)


    at com.sun.proxy.$Proxy156.testLdapConnection(Unknown Source)


    at org.artifactory.ui.rest.service.admin.security.ldap.ldapsettings.TestLdapSettingsService.testLdapConnection(TestLdapSettingsService.java:76)


    at org.artifactory.ui.rest.service.admin.security.ldap.ldapsettings.TestLdapSettingsService.execute(TestLdapSettingsService.java:63)


    at org.artifactory.rest.common.service.ServiceExecutor.process(ServiceExecutor.java:38)


    at org.artifactory.rest.common.resource.BaseResource.runService(BaseResource.java:92)


    at org.artifactory.ui.rest.resource.admin.security.ldap.LdapSettingResource.testLdapSetting(LdapSettingResource.java:90)


    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)


    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)


    at java.base/java.lang.reflect.Method.invoke(Method.java:566)


    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76)


    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148)


    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191)


    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:200)
2020-04-03T17:16:46.732Z [jfrt ] [ERROR] [7faa71d56a50ef2b] [o.a.s.l.AbstractLdapService:68] [http-nio-8081-exec-4] - Error connecting to the LDAP server:
2020-04-03T17:17:57.524Z [jfrt ] [WARN ] [81a5689d90762c9 ] [o.a.s.l.LdapServiceImpl:179   ] [http-nio-8081-exec-8] - Unexpected exception in LDAP query:for user myuseraccount vid LDAP: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090446, comment: AcceptSecurityContext error, data 52e, v2580]; nested exception is javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090446, comment: AcceptSecurityContext error, data 52e, v2580]
2020-04-03T17:17:57.547Z [jfrt ] [INFO ] [81a5689d90762c9 ] [o.a.s.l.LdapServiceImpl:129   ] [http-nio-8081-exec-8] - Couldn't find user named "myuseraccount" in ADsettings
从登录ui,我尝试使用我的sam帐户名,但我在登录表单上方收到一条消息,说明:用户名或密码不正确

以下是当时生成的日志条目:

2020-04-03T17:05:12.060Z [jfrt ] [WARN ] [77c816e57e51530 ] [o.a.s.l.LdapServiceImpl:179   ] [http-nio-8081-exec-8] - Unexpected exception in LDAP query:for user admin vid LDAP: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090446, comment: AcceptSecurityContext error, data 52e, v2580]; nested exception is javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090446, comment: AcceptSecurityContext error, data 52e, v2580]
我只使用sam帐户名进行登录,而不是用户主体名。我还省略了登录的netbios域名部分。如果我尝试添加完整的SAM帐户名以包括域companyname\myuseraccount,我会得到一个Status 500错误页面

有人能告诉我我做错了什么吗?
谢谢你的帮助

在发布这个问题后不久,我决定将shell放入正在运行的jcr容器中,复制并安装必要的rpm文件,并使openldap正常工作。然后使用容器中的ldapsearch,使用我提供的artifactoryui设置查询我们的域控制器。还有维奥拉!问题是绑定DN。我认为Manager DN form字段应该是用于查询目录的绑定用户帐户的完整可分辨名称,但ldapsearch返回object not found错误

我将绑定帐户更改为服务帐户的SAM帐户名\u svccount,并返回了一个结果。此后,我又回到了artifactory设置,并将Manager DN更新为_svccount,一切正常

Jfrog应该更改Manager DN字段的描述。可分辨名称由对象的完整LDAP路径组成。这不起作用,至少在我的特殊情况下不起作用。我们使用的其他基于Java的产品,如SonarQube,对绑定帐户使用经典的完整可分辨名称。Jfrog容器注册表显然没有


-更新-我最终不得不使用NetBIOS域作为Manager DN帐户的一部分来进行身份验证。因此,我不得不使用mycompany\\u svccount作为经理DN,而不是使用"svccount"作为经理DN。但是,Active Directory用户在登录到容器注册表时不使用NetBIOS域,只使用SAM帐户名。i、 e.myAccount vs.mycompany\myAccount

谢谢!我们将研究如何改进文档!虽然我从未遇到过这样的问题,但我认为你们应该继续关注用户名和密码部分。由于日志指定了“用户myuseraccount无法进行身份验证”的确切原因。