Skip to main content

Инструкция по настройке приложения [Auth]

Установка доверенных отношений между клиентом и сервером

Приложение [Auth] используется для установки безопасных и доверенных отношений между клиентом и сервером. Это позволяет пользователям осуществлять аутентификацию и авторизацию в защищенных средах, передавая роли и права доступа между различными системами. В данной инструкции описаны шаги по настройке ключей и доверенных связей между клиентом и сервером.

Предварительные требования

Перед началом настройки убедитесь, что у вас есть следующие компоненты:

  • Сервер: Система, которая будет выступать в роли сервера.
  • Клиент: Система, которая будет выступать в роли клиента.
  • Доменные имена серверной и клиентской сторон.
  • Доступ к интерфейсу [Auth] на каждой из сторон (клиент/сервер). Для доступа требуется роль admin.
tip

Общие рекомендации

  • Безопасность: Убедитесь, что все ключи и сертификаты безопасно хранятся и недоступны для посторонних лиц.
  • Проверка доменных имен: Убедитесь, что доменные имена клиента и сервера правильно введены для успешной настройки доверительных отношений.
  • Логи: В случае возникновения ошибок, проверьте журналы (logs) для подробного описания проблемы.

Инструкция по установке [Auth]

  1. Установите приложение [Auth] на обеих сторонах (на серверной и клиентской системах).
  2. После установки войдите в агентский интерфейс приложения для последующей настройки.

Генерация ключей

note

Пропустите этот этап, если на каждой из сторон уже есть своя пара ключей.

  1. Установите приложение [Auth] на обеих сторонах (на серверной и клиентской).

  2. На сервере:

    1. Перейдите в навигаторе в AuthCrypto Keys.
    2. Нажмите Generate new pair. В результате страница обновится и на форме появятся две записи ключей – открытый и закрытый.
  3. Повторите действие 2 на экземпляре клиента.

  4. Произведите обмен открытыми ключами между сервером и клиентом. Для этого добавьте записи созданных открытых/public ключей на оба экземпляра:

    1. На сервере создайте запись ключа в AuthCrypto Keys и скопируйте в поля записи соответствующие данные открытого/public ключа, созданного на экземпляре клиента, и сохраните запись.
    2. На экземпляре клиента создайте запись ключа в AuthCrypto Keys и скопируйте в поля записи соответствующие данные открытого/public ключа, созданного на сервере, и сохраните запись.

    В результате в таблице Crypto Keys (ain_crypto_key) будт отображаться три записи – две, сгенерированные на текущем экземпляре и одна, добавленная вручную со второго экземпляра.

  5. После установки войдите в агентский интерфейс приложения для последующей настройки доверенного сервера и клиента.

Добавление доверенного клиента


Действие выполняется на стороне сервера:

  1. Перейдите в раздел Auth → Trusted Clients.
  2. Нажмите New, чтобы создать новую запись клиента.
  3. Добавьте доменное имя клиента. Например, client.example.com.
  4. Нажмите Save или Save and exit, чтобы сохранить запись.

Поля формы Trusted Client

ПолеОбязательноОписание
Domain nameДаУкажите доменное имя клиента.
TypeДаУкажите тип авторизации. Доступные опции:
  • Certificate
  • JWT
Use authorization rulesНетУстановите флажок, чтобы настроить правила авторизации (Authorization rules). Поле доступно, если в поле Type выбрано Certificate.
Authorization RulesНетНастройте правила авторизации для пользователей. Поле обязательно, если флажок Use authorization rules установлен.
Client secretДаУкажите клиентский ключ. Поле доступно, если в поле Type выбрано JWT.

Настройка с JSON Web Token

При выбранном типе авторизации JWT настройка доверенного клиента требует добавления клиентского ключа (Client secret) – пароля, необходимого для обмена временного токена на JWT.

Пример

Для входа перейдите по ссылке вида https://test-server.simpleone.ru/auth/login-to?client_id=test&redirect_url=https://test.local/callback.php, в которой:

  • client_id – то, что указано в поле Domain name записи доверенного клиента.
  • redirect_url – URL, на который необходимо отправить пользователя потом, и куда будет передан временный токен через параметр ?code=....

При возникновении ошибки пользователь будет переадресован на страницу, указанную в redirect_url, а в параметрах ?error=1&error_message=... будет передан текст ошибки.

После получения временного токена обменяйте его на JWT, выполнив запрос к getTokenByAuthorizationCode.

Сопоставление временного токена и JWT хранится в таблице Temporary token mapping (ain_temp_token_mapping). После обмена на записи временного токена будет установлен флажок Used. Повторный обмен этого временного токена станет невозможным.

Конечные точки

/v1/api/auth/ro/getTokenByAuthorizationCode – используйте для обмена временного токена на JWT. Параметры:

  • client_id – то, что указано в Domain name записи доверенного клиента.
  • client_secret – клиентский ключ.
  • code – временный токен, полученный при переадресации.

/v1/api/auth/ro/user-info – используйте для получения данных о пользователе.

Для авторизации укажите в заголовке Authorization: Bearer JWT_TOKEN_HERE.

Пример скрипта PHP

Добавление доверенного сервера


Действие выполняется на стороне клиента:

  1. Перейдите в раздел Auth → Trusted Servers.
  2. Нажмите New, чтобы создать новую запись сервера.
  3. Добавьте доменное имя сервера (например, server.example.com).
  4. Нажмите Save или Save and exit, чтобы сохранить запись.

Поля формы Trusted Server

ПолеОбязательноОписание
Domain nameДаУкажите доменное имя.
Auto ProvisionНетУстановите флажок, чтобы разрешить автоматическое создание пользователей. Если флажок снят, доступ в систему будет закрыт для пользователей, записей которых нет в системе.
Get roles from trusted serverНетУстановите флажок, чтобы разрешить системе передачу ролей и групп на клиент с помощью настроенных пользовательских критериев (User criteria) разделе AuthAuthorization Rules.
Вы также можете настроить назначение ролей пользователям и добавление их в группы со стороны клиента в поле Authorization Rules формы Trusted Client.
Use authorization rulesНетУстановите флажок, чтобы настроить правила авторизации (Authorization rules).
Authorization RulesНетНастройте правила авторизации для пользователей. Вы можете добавить несколько записей правил авторизации.
Поле обязательно, если флажок Use authorization rules установлен.

Настройка страницы авторизации


Если на форме доверенного клиента (Trusted client) вы указали Certificate как тип авторизации, разместите ссылку /auth/login-via на странице авторизации для входа через [Auth].

Например, разместите в подсказке виджета авторизации. Для этого добавьте ссылку в свойство simple.auth_page.help_info.ru. Ниже приведен пример настройки свойства и результат:

<p>Если Вам нужна помощь, пожалуйста, свяжитесь с нами</p>
<p>E-mail: <a href='mailto:service@example.com'>service@example.com</a></p>
<p>Телефон: <a href='tel:+7(555)30092019'>+7(555)30092019</a></p>
<p><a href='https://simpleone.ru/'>Перейти на страницу поддержки</a></p>
<p><a href='/auth/login-via'>Войти через&nbsp;<input type="image" height="17" src="/assets/img/logo-small.svg"></a></p>

Проверка соединения


  1. Выполнить вход на сервере и клиенте с использованием одной и той же учетной записи.
  2. Проверьте, что учетная запись успешно работает на обеих системах.
  3. В таблице Autoprovisioning Mapping (ain_autoprovisioning_mapping) появилась соответствующая запись.

После выполнения всех вышеперечисленных шагов вы успешно настроили доверенные отношения между клиентом и сервером. Для более углубленной настройки изучите дополнительные возможности, такие как распределение ролей и прав доступа на серверной стороне.

Правила авторизации

Вы можете настроить правила авторизации для:

  • передачи ролей и групп,
  • добавления ролей и групп.

Правила авторизации могут передаваться как от клиента к серверу, так и от сервера к клиенту:

  • Передача от сервера к клиенту

    Чтобы передавать роли и группы с сервера на клиент, настройте критерии пользователя (User Criteria) в разделе Auth → Authorization Rules.
    На стороне клиента должен быть установлен флажок Get roles from trusted server.

  • Передача от клиента к серверу

    Чтобы присваивать пользователям роли и группы со стороны клиента, настройте правила в поле Authorization Rules на форме Trusted Client.

Чтобы создать правило авторизации, выполните следующие шаги:

  1. Перейдите в раздел Auth → Authorization Rule.
  2. Нажмите New, чтобы создать новую запись, и заполните поля.
  3. Нажмите Save или Save and exit, чтобы применить изменения.

Поля формы Authorization Rule

ПолеОбязательноОписание
User CriteriaДаУкажите пользовательский критерий, который будет применяться в текущем правиле авторизации.
TypeДаУкажите, что должно происходить при авторизации пользователя, соответствующего указанному пользовательскому критерию. Доступные опции:
  • Add groups – выберите, чтобы добавить авторизованного пользователя в определенные группы.
  • Add roles – выберите, чтобы наделить авторизованного пользователя заданными ролями.
GroupsДаУкажите группы, в которые будут добавлены авторизованные пользователи.
Поле доступно, если в поле Type выбрано Add groups.
RolesДаУкажите роли, которые будут присвоены авторизованным пользователям.
Поле доступно, если в поле Type выбрано Add roles.

Изменения правил авторизации

При изменении правил авторизации – редактировании списка ролей и групп, назначаемых при авторизации, данные о ролях и группах авторизованных пользователей также будет обновлена. Для этого, после изменении записи правил авторизации (Authorization rules) и при попытке авторизации пользователя, в системе создается запись задачи Auth Tasks на обновление списка ролей пользователя.

Auth Tasks

В таблице Auth Tasks (ain_auth_task) хранятся записи задач на создание и обновление ролей, групп и пользователей на стороне клиента. Каждая задача представляет собой скрипт, который запускается автоматически при следующей авторизации пользователя при помощи [Auth].

Записи создаются автоматически и доступны только для чтения.

Поля формы Auth Tasks

ПолеОбязательноОписание
NameДаНазвание скрипта обновления ролей и групп пользователя.
FromДаДомен, на котором были произведены изменения в составе ролей или групп, назначаемых пользователю при авторизации.
ToДаДомен, пользователь которого авторизовался на сервере.
ParametersДаОбновленный список параметров, который должен быть передан авторизованному пользователю. Например, {"roles": [], "groups": [], "username": "admin", "userParam": {"email": "admin@email.com", "active": true, "company": "", "location": "", "last_name": "User", "department": "", "first_name": "Admin", "locked_out": false, "language_id": "156628684306541141", "timezone_id": "156076775207670452", "display_name": "Admin User", "date_format_id": "159836398504170273"}, "created_at": "2025-04-17 14:50:33", "expired_at": "2025-04-20 14:50:33", "request_id": "auth-req-id-81ff2ae3-0e8a-4f39-8764-40b8fc7eacc7", "server_name": "example.server.ru", "host_request": "stage003.dev.server.ru", "userAddedParam": {"photo": "", "is_override": "yes", "source_sys_id": "155931135900000001", "source_password_hash": "$2y$13$E1ZrwJdeJE/So5JC0Btmou9//jem7dkmTkR7s2xPCoDXpjW1kLJSS", "source_sys_created_at": "2019-09-30 00:00:00", "source_sys_created_by": []}} .
StateДаСтатус выполнения скрипта обновления ролей и групп авторизованного пользователя.
ResultДаРезультат выполнения задачи.
  • Если в результате выполнения задачи запись пользователя балы создана или обновлена, в поле будет указан ID (sys_id) пользователя на целевом экземпляре и присвоенные роли и группы.
  • Если в результате выполнения задачи был только обновлен список ролей и групп пользователя, в поле будет отражен только их актуальный состав для целевого пользователя.

Mapping Autoprovision

В таблице Mapping Autoprovision (ain_autoprovision) сохраняются записи о входе через [Auth], которые содержат информацию о том, с какой стороны (серверной или клиентской) был выполнен вход, ID пользователя, а также его роли и группы. Записи доступны только для чтения.

caution

Роли и группы, выданные другой стороной, не отображаются на форме.

Поля формы Mapping Autoprovision

ПолеОбязательноОписание
FromНетДомен, с которого был произведен вход через [Auth].
ToНетДомен, на котором пользователь был авторизован при помощи [Auth].
Source user IDНетID пользователя на исходном экземпляре.
Created user IDНетID пользователя в системе, в которой пользователь был авторизован в результате.
Roles from serverНетРоли, которые назначены пользователю со стороны сервера.
Groups from serverНетГруппы, которые назначены пользователю со стороны сервера.
Roles from clientНетРоли, которые назначены пользователю со стороны клиента.
Groups from clientНетГруппы, которые назначены пользователю со стороны клиента.