Установка и использование платформы
Тонкая настройка платформы: настройка авторизации для gRPC и REST API¶
Авторизация необходима для обеспечения доступа к gRPC и REST API инструментам ноды.
Блокчейн платформа Waves Enterprise поддерживает два типа авторизации для gRPC и REST API:
по хэшу ключевой строки
api-key
;по JWT-токену (
oAuth 2
авторизация).
Внимание
Авторизация по хэшу api-key
является простым средством доступа к ноде, однако уровень безопасности этого метода авторизации сравнительно низок. Злоумышленник может получить доступ к ноде в случае попадания к нему строки api-key
. Если вы хотите повысить уровень безопасности в вашей сети, рекомендуем воспользоваться авторизацией по JWT-токену через сервис авторизации.
Для настройки авторизации предусмотрена секция auth
конфигурационного файла ноды.
Подсказка
Интерфейсы REST и gRPC API используют одинаковые значения api-key
для авторизации по ключевой строке и public-key
для авторизации по JWT-токену.
type = "api-key"
¶
Авторизация по хэшу ключевой строки api-key
используется в ноде по умолчанию.
При выборе метода авторизации по хэшу ключевой строки api-key
секция auth
содержит следующие параметры:
auth {
type = "api-key"
# Hash of API key string
api-key-hash = "G3PZAsY6EA8esgpKxB2UYTQJZJPzc14gLnNbm2xvcDf6"
# Hash of API key string for PrivacyApi routes
privacy-api-key-hash = "G3PZAsY6EA8esgpKxB2UYTQJZJPzc14gLnNbm2xvcDf6"
# Hash of API key string for Сonfidential Smart Contracts API
confidential-contracts-api-key-hash = "G3PZAsY6EA8esgpKxB2UYTQJZJPzc14gLnNbm2xvcDf6"
}
api-key-hash
– хэш от ключевой строки доступа к REST API;privacy-api-key-hash
– хэш от ключевой строки доступа к REST методам обмена конфиденциальными данными и получения информации о группах доступа (privacy) и аналогичным gRPC методам;confidential-contracts-api-key-hash
– хэш от ключевой строки доступа к REST методам работы с конфиденциальными смарт-контрактами и аналогичным gRPC методам.
Для заполнения этих параметров вам потребуется утилита ApiKeyHash
из пакета generator-x.x.x.jar
, который вы можете скачать из официального репозитория Waves Enterprise в GitHub, выбрав используемую вами версию платформы. Подробнее генераторы описаны в разделе Генераторы
Поместите этот файл в корневую папку платформы, а также создайте файл api-key-hash.conf
:
apikeyhash-generator {
crypto {
type = GOST
pki {
mode = ON
required-oids = ["1.2.3.4.5.6.7.8.9.10.11"]
}
}
api-key = "some string for api-key"
file = ${user.home}"/apikeyhash.out"
}
В этом файле в параметре api-key
введите строку, которую вы хотите хэшировать и использовать для авторизации.
Параметр file
позволяет указать имя файла, в который будет сохранён хэш. Параметр является опциональным. Если он не указан, то хэш выводится в консоль.
Примечание
Поле waves-crypto
со значениями yes
и no
по-прежнему поддерживается, но в следующих версиях платформы планируется отказаться от его использования. Вместо него используйте поле type
в разделе crypto
.
Готовый файл api-key-hash.conf
введите в качестве аргумента при запуске утилиты ApiKeyHash
пакета generator
:
java -jar generator-x.x.x.jar ApiKeyHash api-key-hash.conf
Пример вывода:
Api key: some string for api-key
Api key hash: G3PZAsY6EA8esgpKxB2UYTQJZJPzc14gLnNbm2xvcDf6
2021-02-11 16:31:21,586 INFO [main] c.w.g.ApiKeyHashGenerator$ - Generator done
Полученное значение Api key hash
укажите в параметрах api-key-hash
, privacy-api-key-hash
и confidential-contracts-api-key-hash
в секции auth
конфигурационного файла ноды, как указано выше.
type = "oauth2"
¶
При выборе авторизации по JWT-токену секция auth
конфигурационного файла ноды выглядит следующим образом:
auth {
type: "oauth2"
public-key: "AuthorizationServicePublicKeyInBase64"
}
Публичный ключ для oAuth генерируется при первичном развертывании ноды. Он находится в файле ./auth-service-keys/jwtRS256.key.pub
.
Скопируйте строку, находящуюся между -----BEGIN PUBLIC KEY-----
и -----END PUBLIC KEY-----
и вставьте ее в качестве параметра public-key
секции auth
конфигурационного файла ноды.
Роли для авторизации через oAuth2¶
Ряд методов REST API и методов gRPC API могут вызывать только пользователи с определенными ролями авторизации.
При регистрации нового пользователя в Клиенте Waves Enterprise пользователю присваивается роль user
. В дальнейшем администратор сервиса авторизации может изменять список присвоенных пользователю ролей.
Роль пользователя зашифрована в JWT-токене.
В таблицах ниже указаны методы и необходимые для их вызова роли, которые используются в блокчейн-сети Waves Enterprise Mainnet.