Настройка типа авторизации для доступа к REST API ноды¶
Блокчейн-платформа Waves Enterprise поддерживает следующие два типа авторизации для доступа к REST API ноды:
авторизация по хешу ключевой строки
api-key
;авторизация через сервис авторизации.
Тип авторизации указывается в секции настройки REST API rest-api
конфигурационного файла ноды. Авторизация по хешу ключевой строки api-key
является простым средством управления доступом к ноде с низким уровнем безопасности. В случае попадания хеша ключевой строки api-key
к злоумышленнику, тот получает полный доступ к ноде. Применение авторизации с использованием отдельного сервиса авторизации, где доступ к ноде предоставляется по специальному токену, повышает безопасность блокчейн сети до высокого уровня. Подробнее о сервисе авторизации можно почитать в разделе Сервис авторизации.
Секция rest-api
конфигурационного файла ноды¶
Секция rest-api
позволяет привязать сетевой адрес ноды к REST API, выбрать и настроить тип авторизации, а также указать ограничения для некоторых методов REST API.
# Node's REST API settings
rest-api {
# Enable/disable REST API
enable = yes
# Network address to bind to
bind-address = "127.0.0.1"
# Port to listen to REST API requests
port = 6862
# Authorization strategy should be either 'oauth2' or 'api-key', default is 'api-key'
auth {
type = "api-key"
# Hash of API key string
api-key-hash = "H6nsiifwYKYEx6YzYD7woP1XCn72RVvx6tC1zjjLXqsu"
# Hash of API key string for PrivacyApi routes
privacy-api-key-hash = "H6nsiifwYKYEx6YzYD7woP1XCn72RVvx6tC1zjjLXqsu"
}
# For OAuth2:
# auth {
# type: "oauth2"
# # OAuth2 service public key to verify auth tokens
# public-key: "AuthorizationServicePublicKeyInBase64"
# # OAuth2 settings for initial sync
# service-url: "auth.service.url"
# service-token: "auth-token"
# }
# Enable/disable CORS support
cors = yes
# Enable/disable X-API-Key from different host
api-key-different-host = no
# Max number of transactions
# returned by /transactions/address/{address}/limit/{limit}
transactions-by-address-limit = 10000
distribution-address-limit = 1000
}
Описание параметров
enable
- активация опции REST API на ноде.bind-address
- сетевой адрес ноды для привязки REST API.port
- порт прослушивания REST API запросов.cors
- поддержка кросс-доменных запросов к REST API.transactions-by-address-limit
- максимальное количество транзакций, возвращаемых методом/transactions/address/{address}/limit/{limit}
.distribution-address-limit
- максимальное количество адресов, указываемых в полеlimit
и возвращаемых методомGET /assets/{assetId}/distribution/{height}/limit/{limit}
.
Секция auth
auth-type
- тип авторизации.oauth2
- авторизация по токену,api-key
- авторизация по хешу ключевой строки.api-key-hash
- хеш от ключевой строки доступа к REST API.privacy-api-key-hash
- хеш от ключевой строки доступа к методамprivacy
.oauth-public-key
- публичный ключ сервиса авторизации.service-url
- сетевой адрес сервиса авторизации.service-token
- сервисный токен ноды для получения access токена для авторизации между участниками блокчейн-сети.
Использование авторизации по хешу ключевой строки¶
В параметре auth-type
установите значение api-key
. Используя утилиту generators-x.x.x.jar, создайте api-key-hash
для доступа к REST API ноды. Для запуска утилиты требуется в качестве одного из параметров указать файл api-key-hash.conf, в котором определяются параметры создания api-key-hash
. Команда для запуска утилиты:
java -jar generators-x.x.x.jar ApiKeyHash api-key-hash.conf
Полученное в результате исполнения утилиты значение укажите в параметре api-key-hash
конфигурационного файла ноды.
Для доступа к методам privacy создайте privacy-api-key-hash
аналогичным методом, как и api-key-hash
, описанным выше. Полученное значение укажите в параметре privacy-api-key-hash
конфигурационного файла ноды.
Использование авторизации по токену¶
В параметре auth-type
установите значение oauth2
, в параметре oauth-public-key
укажите публичный ключ сервиса авторизации.