entaxy-public/documentation/core/auth/Authorization.adoc

170 lines
8.5 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

= Общие положения
При передаче сообщения от внешней системы в шину происходит процесс аутентификации внешней системы в шине. Т.е. при передаче сообщения шине с помощью сервера _nginX_ по протоколу _basic_ аутентификации сверяет присвоенные сообщению логин и пароль системы, от которой передается сообщение с ее логином, зарегистрированным в шине. При совпадении логина и пароля сообщение проходит от внешней системы через шину к другой системе. Если же пара логин пароль не совпадает, то система блокирует сообщение.
image::Authentication.png[Аутентификация с помощью nginx]
Обновление учетных записей на _nginx_ по данным от сервиса _basic-auth-management_ проходит каждую минуту.
Для компактной установки шины без _nginx_ модуль реализует интерцептор для basic аутентификации при обращении к сервисам. Включить встроенную аутентификацию можно в конфигурационном файле ru.entaxy.esb.system.basic_auth.cfg -> свойство internal.authentication.enabled.
Сервис _basic-auth-management_ служит для работы с учетными записями (аккаунтами) через протокол _SOAP_.
В сервисе существуют три вида запросов:
* Добавление аккаунтов;
* Обновление аккаунтов;
* Удаление неактуальных аккаунтов.
* Выдача прав аккаунту
* Удаление прав аккаунта
=== Добавление аккаунта
Метод для добавления учетных записей _(addAccount)_ разработан для добавления новых пользователей в систему.
Запрос на добавление аккаунта выглядит следующим образом:
[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://www.entaxy.ru/basic-auth-service/">
<soapenv:Header/>
<soapenv:Body>
<bas:accountList>
<!--1 or more repetitions:-->
<bas:account>
<bas:login>system1login</bas:login>
<bas:password>system1pass</bas:password>
<!--Optional:-->
<bas:systemUUID>system1uuid</bas:systemUUID>
</bas:account>
</bas:accountList>
</soapenv:Body>
</soapenv:Envelope>
----
В теле содержится список аккаунтов это повторение элементов _account_ неограниченное число раз. Также в теле содержатся обязательные поля _<login>_ (логин) и _<password>_ (пароль). Поле _<systemUUID>_ (идентефикатор системы) является необязательным.
Пароль принимается в прямом виде и шифруется непосредственно перед сохранением, чтобы он не хранился в открытом виде.
=== Обновление аккаунта
Метод для обновления учетной записи _(updateAccount)_ разработан для обновления следующей информации:
* новый пароль системы;
* присвоение учетной записи к другой системе.
Запрос на обновление аккаунта выглядит следующим образом:
[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://www.entaxy.ru/basic-auth-service/">
<soapenv:Header/>
<soapenv:Body>
<bas:accountList>
<!--1 or more repetitions:-->
<bas:account>
<bas:login>system1login</bas:login>
<bas:password>system1pass</bas:password>
<!--Optional:-->
<bas:systemUUID>system1uuid</bas:systemUUID>
</bas:account>
<bas:account>
<bas:login>system2login</bas:login>
<bas:password>system2pass</bas:password>
</bas:account>
</bas:accountList>
</soapenv:Body>
</soapenv:Envelope>
----
В теле содержится список аккаунтов, который содержит информацию аналогичную из п.2.
=== Удаление аккаунта
Метод для удаления аккаунта _(removeAccount)_ служит для удаления аккаунта из системы.
Запрос на удаление аккаунта выглядит следующим образом:
[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://www.entaxy.ru/basic-auth-service/">
<soapenv:Header/>
<soapenv:Body>
<bas:loginList>
<!--1 or more repetitions:-->
<bas:login>system1login</bas:login>
<bas:login>system2login</bas:login>
</bas:loginList>
</soapenv:Body>
</soapenv:Envelope>
----
В теле содержится неограниченный список логинов _(loginList)_, которые будут удалены из системы.
=== Выдача прав аккаунту
Метод выдачи прав аккаунту _(addAccountPermission)_ служит для создания _permission_ связанных с переданным аккаунтом.
Запрос на создание права выглядит следующим образом:
[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://www.entaxy.ru/basic-auth-service/">
<soapenv:Header/>
<soapenv:Body>
<bas:permissionList>
<!--1 or more repetitions:-->
<bas:permission>
<bas:login>dog</bas:login>
<bas:subject>topic-management</bas:subject>
<bas:subjectType>service</bas:subjectType>
<!--Optional:-->
<bas:action></bas:action>
</bas:permission>
<bas:permission>
<bas:login>dog</bas:login>
<bas:subject>system-management</bas:subject>
<bas:subjectType>service</bas:subjectType>
<!--Optional:-->
<bas:action></bas:action>
</bas:permission>
</bas:permissionList>
</soapenv:Body>
</soapenv:Envelope>
----
Если параметр action пустой либо отсутствует в сервисе _permission_ по умолчанию подставляется _default_.
=== Удаление прав аккаунта
Метод удаления прав аккаунта _(removeAccountPermission)_ служит для удаления _permission_ связанных с переданным аккаунтом.
Запрос на создание права выглядит следующим образом:
[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://www.entaxy.ru/basic-auth-service/">
<soapenv:Header/>
<soapenv:Body>
<bas:permissionList>
<!--1 or more repetitions:-->
<bas:permission>
<bas:login>dog</bas:login>
<bas:subject>topic-management</bas:subject>
<bas:subjectType>service</bas:subjectType>
<!--Optional:-->
<bas:action></bas:action>
</bas:permission>
<bas:permission>
<bas:login>dog</bas:login>
<bas:subject>system-management</bas:subject>
<bas:subjectType>service</bas:subjectType>
<!--Optional:-->
<bas:action></bas:action>
</bas:permission>
</bas:permissionList>
</soapenv:Body>
</soapenv:Envelope>
----
Если параметр _action_ пустой либо отсутствует в сервисе permission по умолчанию подставляется _default_.