Установка и использование платформы
Тонкая настройка платформы: настройка авторизации для gRPC и REST API¶
Авторизация необходима для обеспечения доступа к gRPC и REST API инструментам ноды. Для этого блокчейн-платформа Waves Enterprise поддерживает два типа авторизации:
по хэшу ключевой строки
api-key
;по JWT-токену (oAuth 2).
Внимание
Авторизация по хэшу api-key
является простым средством доступа к ноде, однако уровень безопасности этого метода авторизации сравнительно низок. Злоумышленник может получить доступ к ноде в случае попадания к нему строки api-key
. Если вы хотите повысить уровень безопасности в вашей сети, рекомендуем воспользоваться авторизацией по JWT-токену через сервис авторизации.
Для настройки авторизации предусмотрена секция auth
конфигурационного файла ноды.
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"
}
api-key-hash
- хэш от ключевой строки доступа к REST API.privacy-api-key-hash
- хэш от ключевой строки доступа к методам privacy.
Для заполнения этих параметров вам потребуется утилита 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
в секции 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
конфигурационного файла ноды.
Подсказка
Интерфейсы REST API и gRPC используют одинаковые значения api-key
для авторизации по ключевой строке и public-key
для авторизации по JWT-токену.