Веб-сервер Corda выдает исключение «Пользователь не авторизован для выполнения вызова RPC nodeInfo с целью» - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь ограничить узел для выполнения определенного потока,

Например, у меня есть два потока FlowOne и FlowTwo.

Для PartyA я хочу дать разрешение для FlowOne,

Для разрешения PartyB для FlowTwo.

Там же должно быть разрешение на вызовы rpc.

Вот моя rpcUsers конфигурация

PartyA: rpcUsers = [[ user: "user1", "password": "test", "permissions": ["StartFlow.net.corda.mortgage.msr.flows.FlowOne","InvokeRpc.startFlow"]]]

PartyB: rpcUsers = [[ user: "user2", "password": "test", "permissions": ["StartFlow.net.corda.mortgage.msr.flows.FlowTwo","InvokeRpc.startFlow"]]]

Я не уверен, что мне не хватает в разрешениях. Любые предложения всегда приветствуются

1 Ответ

0 голосов
/ 27 апреля 2018

При запуске веб-сервер Corda выполняет RPC-вызов для получения NodeInfo узла, к которому он подключается. Необходимо явно дать разрешение на этот вызов.

Вы делаете это, давая пользователю RPC:

  • Разрешение InvokeRpc.nodeInfo (вы даете пользователю RPC разрешение на выполнение данной операции RPC, добавляя разрешение в форме InvokeRpc.[RPC method name])
  • Разрешение ALL (это дает пользователю RPC все разрешения)

Если вы запускаете узлы через deployNodes, вы добавляете разрешение следующим образом:

rpcUsers = [[user: "user1", "password": "test", "permissions": ["InvokeRpc.nodeInfo"]]]

Или:

rpcUsers = [[user: "user1", "password": "test", "permissions": ["ALL"]]]

Если вы запускаете узлы через драйвер узла (как показано здесь: https://github.com/corda/cordapp-example/blob/release-V3/kotlin-source/src/test/kotlin/com/example/NodeDriver.kt),, вы добавляете разрешение следующим образом:

val user = User("user1", "test", permissions = setOf("InvokeRpc.nodeInfo"))

Или:

val user = User("user1", "test", permissions = setOf("ALL"))
...