Сервис авторизации¶
Сервис авторизации является внешним по отношению к ноде и обеспечивает авторизацию всех компонентов блокчейн-сети. Сервис авторизации построен на базе протокола OAuth 2.0. OAuth 2.0 является открытым фреймворком для реализации механизма авторизации, позволяющим предоставлять третьей стороне ограниченный доступ к защищенным ресурсам пользователя без передачи третьей стороне логина и пароля. В общем виде поток данных между участниками информационного взаимодействия на базе протокола OAuth 2.0 представлен ниже.
Средством авторизации является JSON Web Token. Токены используются для авторизации каждого запроса от клиента к серверу и имеют ограниченное время жизни. Клиент получает два вида токена - access и refresh. Access токен используется для авторизации запросов на доступ к защищенным ресурсам и для хранения дополнительной информации о пользователе. Refresh токен используется для получения нового access токена и обновления refresh токена.
В общем виде схема авторизацию включает в себя следующие операции:
Клиент (компонент блокчейн-сети, такой как корпоративный клиент, дата-сервис или сторонее приложение) единоразово предоставляет свои аутентификационные данные сервису авторизации.
В случае успешного прохождения процедуры первичной аутентификации сервис авторизации сохраняет аутентификационные данные клиента в хранилище данных, генерирует и отправляет клиенту подписанные access и refresh токены. В токенах указываются время жизни токена и основные данные клиента, такие как идентификатор и роль. Аутентификационные данные клиентов хранятся в конфигурационном файле сервиса авторизации. Каждый раз перед отправкой запроса стороннему сервису клиент проверяет время жизни access токена и, в случае истечения срока жизни токена, обращается к сервису авторизации для получения нового access токена. Для запросов к сервису авторизации используется refresh токен.
Используя актуальный access токен, клиент отправляет запрос на получение данных стороннего сервиса.
Сторонний сервис проверяет время жизни access токена, его целостность, а также сравнивает полученный ранее публичный ключ сервиса авторизации с ключом, содержащимся в подписи access токена. В случае успешной проверки сторонний сервис предоставляет клиенту запрашиваемые данные.