【问题标题】:How to get user's affiliation in chaincode如何在链码中获取用户的隶属关系
【发布时间】:2018-07-16 12:07:52
【问题描述】:

有没有办法在链码中获取用户的从属关系? 我在链码中找不到用于获取用户从属关系的 API。

【问题讨论】:

    标签: hyperledger-fabric


    【解决方案1】:

    请查看core/chaincode/lib 中提供的 cid lib 文档:

    // Get the client ID object
    id, err := cid.New(stub)
    if err != nil {
       // Handle error
    }
    mspid, err := id.GetMSPID()
    if err != nil {
       // Handle error
    }
    switch mspid {
       case "org1MSP":
          err = id.AssertAttributeValue("attr1", "true")
       case "org2MSP":
          err = id.AssertAttributeValue("attr2", "true")
       default:
          err = errors.New("Wrong MSP")
    }
    

    【讨论】:

    • cid lib 文档不提供获取用户从属关系的 API。
    • 用户的隶属关系是他属于哪个组织,对吗?所以你基本上需要提取的只是本质上绑定到从属关系的 MSPID。或者您是否需要从用户证书中提取特定属性,您也可以在文档中找到示例。
    • 是的,属性是一种方式。但我想知道我是否可以获得完整的从属关系,例如 org1.department2.team1,而不仅仅是 MSPID
    • 我认为 MSPID 与 affiliation 不同。隶属关系是 CA 级别的属性,允许您定义有关用户注册限制的规则。与 MSP 或身份所属的组织无关。我也想知道是否可以检索完整的隶属关系层次结构。
    【解决方案2】:

    从属关系在 OU 中的证书主题内编码。 例如,org1.department1 用户的主题

    'subject': 'CN=33932069-6fce-4b16-8072-6715d591f35b,OU=client+OU=org1+OU=department1,O=Org1'
    

    所以,它可以很容易地从链码访问

    invoker, err := identity.FromStub(c.Stub())
    if err != nil {
        return nil, err
    }
    
    fmt.Printf(invoker.Cert.Subject.OrganizationalUnit)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多