You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Artifactory无法通过YAML配置或API添加LDAP设置

Artifactory JCR LDAP配置问题

一、YAML配置方式(7.63.7版本)

根据官方说明,Artifactory 7.63+支持通过Access Configuration Bootstrap YAML配置认证提供者,我使用helm chart版本107.63.7(对应应用版本7.63.7),但上游helm chart中未找到access.security.bootstrap.yml相关配置项,怀疑chart未同步最新变更。

尝试将LDAP配置追加到secret的access.config.patch.yml中,虽看到copy-system-configurations容器已将内容复制到/var/opt/jfrog/artifactory/etc/access/access.config.patch.yml,但LDAP仍无法正常工作。配置片段如下:

stringData:
  access.config.patch.yml: |
    security:
      tls: false
      ldapSettings:
      ... # LDAP具体配置内容

二、API配置方式(回退到7.59.11版本)

YAML方式无效后,回退到7.59.11版本尝试通过POST请求配置LDAP,但始终返回401未授权错误:

$ curl -s -u admin:cmVm...redacted...MjIz -X POST https://jcr.my.domain.com/access/api/v1/ldap/settings -H "Content-Type: application/json" -T ldap.json
{"errors":[{"code":"UNAUTHORIZED","message":"HTTP 401 Unauthorized","detail":"Request has failed. Due to incorrect username/password or locked user."}]}

也尝试了-d @ldap.json的形式,结果一致。

补充信息

  • 使用admin用户的Identity Token认证
  • 已禁用Lock User After Exceeding Max Failed Login Attempts选项

优先希望解决7.63.7版本中access.security.bootstrap.yml的配置问题,同时需解决API方式的401错误。


解决方案

针对YAML配置方式(7.63.7版本)

  1. 确认helm chart配置项
    部分新版本helm chart将access.security.bootstrap.yml的配置放在artifactory.access.bootstrapSecurity参数下,而非直接暴露secret文件。检查values.yaml是否存在该参数,若有则直接在values中配置LDAP:

    artifactory:
      access:
        bootstrapSecurity: |
          security:
            ldapSettings:
              - key: "ldap1"
                name: "My LDAP"
                url: "ldap://your-ldap-server:389"
                userDnPattern: "uid={0},ou=users,dc=example,dc=com"
                # 其他LDAP必填配置项(如bindDn、bindPassword等)
    

    若chart无此参数,需手动创建包含access.security.bootstrap.yml的secret,并挂载到容器的/var/opt/jfrog/artifactory/etc/access/bootstrap/目录:

    apiVersion: v1
    kind: Secret
    metadata:
      name: access-bootstrap-secret
    stringData:
      access.security.bootstrap.yml: |
        security:
          ldapSettings:
            - key: "ldap1"
              name: "My LDAP"
              url: "ldap://your-ldap-server:389"
              userDnPattern: "uid={0},ou=users,dc=example,dc=com"
              bindDn: "cn=admin,dc=example,dc=com"
              bindPassword: "your-bind-password"
    

    再在helm values中挂载该secret:

    artifactory:
      extraVolumes:
        - name: access-bootstrap
          secret:
            secretName: access-bootstrap-secret
      extraVolumeMounts:
        - name: access-bootstrap
          mountPath: /var/opt/jfrog/artifactory/etc/access/bootstrap/
          readOnly: true
    
  2. 验证配置加载逻辑
    Access模块优先加载bootstrap目录下的配置,再应用access.config.patch.yml补丁。确保access.security.bootstrap.yml格式无语法错误,LDAP参数(如服务器地址、绑定DN、用户匹配规则)准确无误。

针对API方式的401错误

  1. 修正认证方式
    使用Identity Token时,需通过Bearer头传递,而非-u admin:<token>(该格式适用于密码认证)。修正curl命令:

    $ curl -s -H "Authorization: Bearer cmVm...redacted...MjIz" -X POST https://jcr.my.domain.com/access/api/v1/ldap/settings -H "Content-Type: application/json" -d @ldap.json
    
  2. 检查token权限
    确认admin用户的Identity Token拥有Manage Security权限(在Artifactory UI的Admin > Identity and Access > Users > Admin > Edit > Identity Token中查看权限范围)。

  3. 核对API端点
    7.59.11版本的LDAP配置API端点应为/artifactory/api/security/ldap,而非/access/api/v1/ldap/settings。修正请求URL:

    # 使用密码认证
    $ curl -s -u admin:<your-admin-password> -X POST https://jcr.my.domain.com/artifactory/api/security/ldap -H "Content-Type: application/json" -d @ldap.json
    # 使用Identity Token认证
    $ curl -s -H "Authorization: Bearer cmVm...redacted...MjIz" -X POST https://jcr.my.domain.com/artifactory/api/security/ldap -H "Content-Type: application/json" -d @ldap.json
    

内容的提问来源于stack exchange,提问作者Technext

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:05:30