日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

用戶訪問控制

基于屬性的訪問控制

Hyperledger Fabric 支持使用基于屬性的訪問控制(ABAC, Attribute-Based Access Control)來控制用戶的訪問權限。在進行用戶的身份注冊時,登錄證書(ECert)可以包含一個或多個屬性名稱和值,鏈碼運行時可以提取屬性值來進行訪問控制決策。

例如,您正在開發一個名為 app1 的應用,只有 app1 的管理員才可以訪問一個特定的 chaincode 操作。您的 chaincode 可以根據調用者的證書中是否包含的 app1Admin 屬性以及該屬性值是否為 “true” 來決定是否允許訪問。

關于 Hyperledger Fabric ABAC 功能,更多請參見 Attribute-Based Access Control

屬性集設置

您可以在控制臺創建組織用戶時,打開高級,設置用戶的屬性集,用于控制用戶的訪問權限。

  1. 登錄阿里云BaaS控制臺

  2. 概覽頁面,找到我的組織區域,找到目標組織,單擊組織的名稱。

  3. 單擊用戶標簽頁。

  4. 單擊新增用戶,在彈框中打開高級,即可設置用戶的屬性集。

    創建用戶后,可以看到用戶相關的屬性集。

    user

屬性集設置規范:

  • 使用逗號(,)分割為不同的屬性

  • 等號(=)前為屬性名稱, 等號(=)后為該屬性的值

  • 屬性名稱及屬性值必須由英文字母或數字組成

  • 屬性名稱及屬性值均為字符串類型

示例:

屬性集內容:app1Admin=true,permissions=7在用戶的登錄證書中,其屬性值為:

 {"attrs":{"app1Admin":"true","permissions":"7","hf.Affiliation":"","hf.EnrollmentID":"abacUser1","hf.Type":"client"}}

其中,hf.EnrollmentIDhf.Typehf.Affiliation為每個身份自動注冊的三個屬性。

鏈碼中獲取用戶屬性

詳細開發文檔請參考:chaincode/shim/ext/cid

id, err := cid.New(stub)

fmt.Println("client ID object:")
fmt.Println(id)
if err != nil {
    return shim.Error(err.Error())
}
val, ok, err = cid.GetAttributeValue(stub, "permissions")
if err != nil {
    return shim.Error(err.Error())
}

if !ok {
    return shim.Error("The client identity does not possess the attribute:permissions")
}

err := cid.AssertAttributeValue(stub, "permissions", "7")
if err != nil {
   return shim.Error("The client identity does not have the permissions")
}

fmt.Println("permissions:")
fmt.Println(val)