Установка и использование платформы

Тонкая настройка платформы: настройка авторизации для 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 пакет generators-x.x.x.jar, который вы можете скачать из официального репозитория Waves Enterprise в GitHub, выбрав используемую вами версию платформы.

Поместите этот файл в корневую папку платформы, а также создайте файл api-key-hash.conf:

apikeyhash-generator {
  waves-crypto = yes
  api-key = "some string for api-key"
}

В этом файле введите строку, которую вы хотите хэшировать и использовать для авторизации, в параметре api-key.

Готовый файл api-key-hash.conf введите в качестве аргумента при запуске утилиты ApiKeyHash пакета generators:

java -jar generators-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-токену.