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

8.5 KiB
Raw Blame History

Общие положения

При передаче сообщения от внешней системы в шину происходит процесс аутентификации внешней системы в шине. Т.е. при передаче сообщения шине с помощью сервера nginX по протоколу basic аутентификации сверяет присвоенные сообщению логин и пароль системы, от которой передается сообщение с ее логином, зарегистрированным в шине. При совпадении логина и пароля сообщение проходит от внешней системы через шину к другой системе. Если же пара логин пароль не совпадает, то система блокирует сообщение.

Аутентификация с помощью nginx

Обновление учетных записей на nginx по данным от сервиса basic-auth-management проходит каждую минуту.

Для компактной установки шины без nginx модуль реализует интерцептор для basic аутентификации при обращении к сервисам. Включить встроенную аутентификацию можно в конфигурационном файле ru.entaxy.esb.system.basic_auth.cfg → свойство internal.authentication.enabled.

Сервис basic-auth-management служит для работы с учетными записями (аккаунтами) через протокол SOAP.

В сервисе существуют три вида запросов:

  • Добавление аккаунтов;

  • Обновление аккаунтов;

  • Удаление неактуальных аккаунтов.

  • Выдача прав аккаунту

  • Удаление прав аккаунта

Добавление аккаунта

Метод для добавления учетных записей (addAccount) разработан для добавления новых пользователей в систему.

Запрос на добавление аккаунта выглядит следующим образом:

<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) разработан для обновления следующей информации:

  • новый пароль системы;

  • присвоение учетной записи к другой системе.

Запрос на обновление аккаунта выглядит следующим образом:

<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) служит для удаления аккаунта из системы.

Запрос на удаление аккаунта выглядит следующим образом:

<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 связанных с переданным аккаунтом.

Запрос на создание права выглядит следующим образом:

<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 связанных с переданным аккаунтом.

Запрос на создание права выглядит следующим образом:

<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.