Как добавить роли в сертификат пользователя и использовать их в чейнкоде?

Я разрабатываю приложение на базе Hyperledger с расширением IBM‌ Blockchain Platform и nodejs. Я использую модуль «fabric-ca-client v1.3.0» для регистрации сертификатов пользователей и администраторов. Я хочу добавить роли пользователям и иметь контроль доступа на основе ролей пользователей в моем цепном коде. Я пытаюсь зарегистрировать несколько сертификатов, но всегда этот модуль регистрирует сертификат с пустыми ролями и принадлежностью, например:

{"name":"admin","mspid":"Org1MSP","roles":null,"affiliation":"","enrollmentSecret":"","enrollment":{"signingIdentity":"...","identity":{"..."}}}

Я нашел это в документации по прокладкам Hyperledger об использовании ролей в цепной код:

const ClientIdentity = require('fabric-shim').ClientIdentity;

let cid = new ClientIdentity(stub); 
object passed to Init() and Invoke() methods
if (cid.assertAttributeValue('hf.role', 'auditor')) {
   // proceed to carry out auditing
}

но я не нашел решения, как я могу зарегистрировать и зарегистрировать пользователя с атрибутом hf.role


person Hojjat Jashnniloofar    schedule 01.01.2019    source источник


Ответы (1)


вы должны зарегистрировать пользователя 1st, а затем зарегистрировать пользователя. Вы можете сделать это как через cmdline, так и через REST. Для cmdline при регистрации пользователя вам необходимо передать дополнительные атрибуты как:

--id.attrs 'role=writer:ecert,[email protected]'

тогда при зачислении:

--enrollment.attrs "role=writer,email,phone:opt"

В цепном коде вы можете получить доступ к атрибуту как:

let cid = new ClientIdentity(stub); 
if (cid.assertAttributeValue('role', 'writer')) { .. }
person SandeepR    schedule 04.01.2019
comment
Вы пробовали это с помощью nodeAPI вместо cli. Кажется, с API не работает - person Varun; 04.07.2019