【问题标题】:Hyperledger Fabric-ca connection to a LDAP directoryHyperledger Fabric-ca 连接到 LDAP 目录
【发布时间】:2018-07-31 13:07:17
【问题描述】:

我们正在实施 Hyperledger Fabric 解决方案。为此,我们在特定 docker 中使用最小配置(我们仍在尝试弄清楚事情是如何工作的)设置了一个 fabric-CA。

由于我们需要使用电子邮件/密码对登录用户,因此我们设置了一个 LDAP 组件。我们选择使用 OpenLDAP,在不同的 docker 中使用 osixia/openldap 实现。

我们在 fabric-ca-server-config.yaml 中设置参数来连接 Fabric CA 到 LDAP。在两个码头工人开始时,日志看起来都很好:

Successfully initialized LDAP client

当我们继续 Fabric-CA 教程时,我们在命令上失败了:

fabric-ca-client enroll -u http://cn=admin,dc=example:admin@localhost:7054

结果是:

[INFO] 127.0.0.1:46244 POST /enroll 401 23 "Failed to get user: Failed to connect to LDAP server over TCP at localhost:389: LDAP Result Code 200 "": dial tcp 127.0.0.1:389: connect: connection refused"

当在 CLI 中请求并通过 LDAP 浏览器 PHPLdapAdmin 使用相同的凭据时,LDAP 已正确设置和运行。

这是 fabric-ca-server-config.yaml 的一部分:

ldap:
  enabled: true
  url: ldap://cn=admin,dc=example:admin@localhost:389/dc=example
  userfilter: (uid=%s)
tls:
  enabled: false
  certfiles:
  client:
    certfile: noclientcert
    keyfile:
attribute:
  names: ['uid','member']
  converters:
    - name: hf.Revoker
      value: attr("uid") =~ "revoker*"
  maps:
    groups:
      - name: example
      value: peer

有人可以帮忙吗? 感谢阅读,

【问题讨论】:

    标签: ldap openldap hyperledger-fabric-ca


    【解决方案1】:

    我在这里看到两个问题:

    首先与 docker 相关,而不是 fabric-ca。您必须将 netowrk_mode 设置为 host 以消除容器和 Docker 主机之间的网络隔离。然后您的 docker 容器将看到位于 Docker 主机上的 OpenLDAP

    请查看示例docker-compose.yaml 文件

    version: '2'
    services:
     fabric-ca-server:
      image: hyperledger/fabric-ca:1.1.0
      container_name: fabric-ca-server
      ports:
        - "7054:7054"
      environment:
        - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      volumes:
        - ./fabric-ca-server:/etc/hyperledger/fabric-ca-server
      command: sh -c 'fabric-ca-server start'
      network_mode: host
    

    您可以在此处找到有关 docker 网络的更多信息:https://docs.docker.com/network/

    当网络问题将得到解决时,您还必须修改 userfilter 以与 admin 前缀相关,因此它应该如下所示:userfilter: (cn=%s) 如果 userfilter 无法修复,那么您将获得在 LDAP 中找不到 admin 的信息。

    【讨论】:

      【解决方案2】:

      我没有使用本地 LDAP 服务器,而是使用一行进行快速测试... http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/

      但是我仍然收到错误消息。

      我的 fabric-ca-server-config.yaml 是

      ldap:
         enabled: true
         url: ldap://cn=read-only-admin,dc=example,dc=com:password@ldap.forumsys.com:389/dc=example,dc=com
         tls:
            certfiles:
            client:
               certfile:
               keyfile:
         # Attribute related configuration for mapping from LDAP entries to Fabric CA attributes
         attribute:
            names: ['uid','member']
            converters:
               - name: hf.Revoker
                 value: attr("uid") =~ "revoker*"
            maps:
               groups:
                  - name:
                    value:
      

      我通过以下方式运行它:

      fabric-ca-server start -c fabric-ca-server-config.yaml
      

      我看到了日志:

      Successfully initialized LDAP client
      

      这是 phpLDAPAdmin 的屏幕截图: 我正在使用相同的脚本进行测试:

      $fabric-ca-client enroll -u http://cn=read-only-admin,dc=example,dc=com:password@localhost:7054
      
      $fabric-ca-client enroll -u http://uid=tesla,dc=example,dc=com:password@localhost:7054
      

      但还是不好,得到类似的东西:

      POST /enroll 401 23 "Failed to get user: User 'uid=tesla,dc=example,dc=com' does not exist in LDAP directory"
      

      【讨论】:

        猜你喜欢
        • 2022-12-15
        • 1970-01-01
        • 2018-02-28
        • 1970-01-01
        • 1970-01-01
        • 2018-12-05
        • 2022-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多