【问题标题】:JFrog Container Registry 7.3.2 won't work with Active DirectoryJFrog Container Registry 7.3.2 不适用于 Active Directory
【发布时间】:2020-07-16 01:05:22
【问题描述】:

我希望这里有人可以帮助我。我们目前正在评估 JFrog 的 Artifactory - Container Registry 作为 Docker 服务运行,在我的一生中,我无法让这个东西与我们的 Active Directory 实例正常工作。我让它在第 6 版中运行良好,但随着第 7 版的发布,我决定从新版本开始。

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

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

用户 DN 模式:空白

电子邮件属性:邮件

搜索过滤器:(sAMAccountName={0})

搜索库:OU=公司用户

搜索子树:选中

经理 DN:CN=_svcAccount,OU=Service Accounts,OU=Company Users,DC=company,DC=net

管理员密码:正确密码

Manager 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”我会收到一个状态 500 错误页面。

谁能告诉我我在这里做错了什么? 感谢您的帮助!

【问题讨论】:

  • 虽然我从来没有遇到过这样的问题,但我认为你应该继续关注usernamepassword部分。由于日志指定了“用户 myuseraccount 无法验证”的确切原因。

标签: docker active-directory ldap artifactory jfrog-container-registry


【解决方案1】:

发布此问题后不久,我决定将 shell 放入正在运行的 jcr 容器中,并复制并安装必要的 rpm 文件并让 openldap 正常工作。然后使用容器中的 ldapsearch 使用我提供的人工 UI 的设置来查询我们的域控制器。还有中提琴!问题是绑定 DN。我认为 Manager DN 表单字段应该是用于查询目录的绑定用户帐户的完整可分辨名称,但 ldapsearch 返回对象未找到错误。

我将绑定帐户更改为服务帐户的 SAM 帐户名称(“_svcAccount”)并返回结果。从那以后,我回到了人工设置并将 Manager DN 更新为“_svcAccount”,一切正常。

Jfrog 应该更改 Manager DN 字段的描述。专有名称由对象的完整 LDAP 路径组成。这不起作用,至少在我的特定情况下不起作用。我们使用的其他基于 Java 的产品(例如 SonarQube)使用经典的完整专有名称作为绑定帐户。 Jfrog Container Registry 显然没有。

-更新——我最终不得不使用 NetBIOS 域作为 Manager DN 帐户的一部分来对其进行身份验证。因此,我不得不使用“mycompany\_svcAccount”作为 Manager DN,而不是“_svcAccount”作为 Manager DN。但是,Active Directory 用户在登录 Container Registry 时不使用 NetBIOS 域,只使用 SAM 帐户名。 (即“myAccount”与“mycompany\myAccount”)

【讨论】:

  • 谢谢!我们将研究改进文档!
猜你喜欢
  • 2018-11-17
  • 1970-01-01
  • 2020-11-20
  • 2020-06-22
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多