Сервис авторизации

Сервис авторизации является внешним по отношению к ноде и обеспечивает авторизацию всех компонентов блокчейн-сети. Сервис авторизации построен на базе протокола OAuth 2.0. OAuth 2.0 является открытым фреймворком для реализации механизма авторизации, позволяющим предоставлять третьей стороне ограниченный доступ к защищенным ресурсам пользователя без передачи третьей стороне логина и пароля. В общем виде поток данных между участниками информационного взаимодействия на базе протокола OAuth 2.0 приведен ниже.

Общая схема авторизации на базе протокола OAuth 2.0

Общая схема авторизации на базе протокола OAuth 2.0

Средством авторизации является JSON Web Token. Токены используются для авторизации каждого запроса от клиента к серверу и имеют ограниченное время жизни. Клиент получает два вида токена - access и refresh. Access токен используется для авторизации запросов на доступ к защищенным ресурсам и для хранения дополнительной информации о пользователе. Refresh токен используется для получения нового access токена и обновления refresh токена.

Схема авторизации на блокчейн-платформе Waves Enterprise

Схема авторизации на блокчейн-платформе Waves Enterprise

В общем виде схема авторизацию включает в себя следующие операции:

  1. Клиент (компонент блокчейн-сети, такой как корпоративный клиент, дата-сервис или сторонее приложение) единоразово предоставляет свои аутентификационные данные сервису авторизации.

  2. В случае успешного прохождения процедуры первичной аутентификации сервис авторизации сохраняет аутентификационные данные клиента в хранилище данных, генерирует и отправляет клиенту подписанные access и refresh токены. В токенах указываются время жизни токена и основные данные клиента, такие как идентификатор и роль. Аутентификационные данные клиентов хранятся в конфигурационном файле сервиса авторизации. Каждый раз перед отправкой запроса стороннему сервису клиент проверяет время жизни access токена и, в случае истечения срока жизни токена, обращается к сервису авторизации для получения нового access токена. Для запросов к сервису авторизации используется refresh токен.

  3. Используя актуальный access токен, клиент отправляет запрос на получение данных стороннего сервиса.

  4. Сторонний сервис проверяет время жизни access токена, его целостность, а также сравнивает полученный ранее публичный ключ сервиса авторизации с ключом, содержащимся в подписи access токена. В случае успешной проверки сторонний сервис предоставляет клиенту запрашиваемые данные.