Раздел «Провайдеры» предназначен для настройки взаимодействия Системы с провайдерами пользователей: системами идентификации, аутентификации и авторизации (ИА). В Системе есть внутренний провайдер «AW» с типом «Локальный (user_permissions)», который используется по умолчанию. Также в Системе можно настроить авторизацию через внешний сервис аутентификации по протоколам Open ID Connect, LDAP и REST.
C помощью OpenID Connect, LDAP и REST пользователи могут проходить аутентификацию и авторизацию в нескольких облачных приложениях через единую точку с использованием одного логина и пароля.
Примечание |
---|
В качестве LDAP сервера может использоваться как Active Directory, так и OpenLDAP. |
Данный раздел представляет собой реестр всех настроенных провайдеров пользователей (Рисунок «Интерфейс управления провайдерами»). В реестре отображается информация о провайдерах в полях:
-
«Наименование»;
-
«Тип»;
-
«Активность».
По всем столбцам реализована сортировка по возрастанию/убыванию. Нажмите на наименование необходимого столбца, список провайдеров отсортируется по возрастанию. Повторно нажмите на наименование столбца, список провайдеров отсортируется по убыванию. Нажмите на наименование столбца в третий раз, список провайдеров отобразится без сортировки, и скроется кнопка сортировки.
Интерфейс управления провайдерами позволяет выполнять:
-
создание провайдера;
-
редактирование провайдера;
-
удаление провайдера.
Чтобы настроить взаимодействие, произведите настройку для обоих участников взаимодействия: провайдера (поставщика учетных записей) и Системы (поставщика сервиса). Для настройки взаимодействия Системы с провайдером выполните шаги, описанные в п. Создание внешнего провайдера – Редактирование провайдера.
Примечание |
---|
Предполагается, что взаимодействие провайдера (поставщика учетных записей) с Системой настроено и учетные записи зарегистрированы. |
Чтобы создать внешний провайдер, нажмите на кнопку «Добавить» в интерфейсе управления провайдерами.
Откроется окно создания и настроек провайдера (Рисунок «Создание провайдера, в кладка «Основное»), которое состоит из вкладок:
-
«Основное»;
-
«Параметры»;
-
«Маппинг схемы».
Для ввода данных провайдера в Систему заполните обязательные поля на вкладках «Основное» и «Параметры» и нажмите на кнопку «Сохранить». В случае успешного сохранения отобразится уведомление о внесенных изменениях: «Провайдер сохранен».
Вкладка «Основное» предназначена для ввода стартовой информации о провайдере (Рисунок «Создание провайдера, вкладка «Основное»). Заполните поля:
-
«Активный» – установите «флажок» в поле, чтобы провайдер стал активным;
-
«Наименование» – введите имя провайдера в Системе, поле обязательно для заполнения;
-
«Тип» – выберите из выпадающего списка разновидность провайдера в зависимости от протокола взаимодействия. Поддерживаются следующие типы провайдеров:
-
внутренний – «Локальный (user_permissions)»;
-
внешние:
-
«OpenID»;
-
«OpenID Token»;
-
«LDAP»;
-
«LDAP kerberos»;
-
«Внешний REST».
-
-
-
«Надпись кнопки сторонней аутентификации» – введите надпись кнопки, которая будет отображаться на странице авторизации Системы и выполнять переход на страницу авторизации провайдера (для провайдеров типа «OpenID»);
-
«Базовые группы» – выберите одно или несколько значений из выпадающего списка системных и пользовательских групп пользователей. Выбранные группы будут присваиваться пользователям автоматически при создании (для всех типов провайдеров) и при авторизации пользователя через SSO (для провайдеров типа «OpenID», «OpenID Token», «LDAP», «LDAP kerberos» и «Внешний REST»);
-
«Разрешить создание новых пользователей через внешнее управление» – установите «флажок» в параметр, при включении которого в Системе будет создаваться новый пользователь в случае его отсутствия. Если «флажок» не установлен, новый пользователь получит уведомление: «Для указанного в запросе пользователя не создана учетная запись. Необходимо обратиться к Администратору Системы». При установке «флажка» в поле «Разрешить создание новых пользователей через внешнее управление» отобразится дополнительное поле «Тип пользователя», в котором в выпадающем списке выберите тип пользователя, с которым будут создаваться новые пользователи, учитывая квоты на тип пользователя в лицензии (Рисунок «Создание провайдера, вкладка «Основное». Поле «Разрешить создание новых пользователей через внешнее управление»).
Примечания 1 Если при создании пользователя через провайдер не окажется свободных пользовательских лицензионных квот, то учетная запись будет создана с неактивным статусом.
2 Для Систем с активированной лицензией с типом доступа «Облачный» опция «Разрешить создание новых пользователей через внешнее управление» в настройках провайдеров заблокирована, так как установленный «флажок» в параметр мог бы привести к неконтролируемому созданию новых учетных записей пользователей и списанию средств.
Рисунок 10. Создание провайдера, вкладка «Основное». Поле «Разрешить создание новых пользователей через внешнее управление»
Внешний провайдер с типом «OpenID Token» построен на базе провайдера с типом «OpenID». Отличительной чертой является то, что данный тип провайдера не отображается в окне авторизации Системы и для его настройки достаточно указать:
-
на вкладке «Основное» – наименование и тип;
-
на вкладке «Параметры» – идентификатор ИА и внешний URL.
Провайдер с типом «OpenID Token» применяется для бесшовного перехода в Систему внутри стороннего приложения через единую точку входа и в случае работы с API Системы.
Внешний провайдер с типом «LDAP» не отображается на форме авторизации Системы. Для аутентификации через LDAP сервер используется введенное на стартовой странице Системы имя и пароль пользователя.
Примечания |
---|
1 В Систему невозможно добавить дополнительный провайдер с типом «Локальный (user_permissions)», так как внутренний провайдер должен быть уникальным. 2 В Системе активным может быть только один провайдер с типом «LDAP». |
В Системе доступна для использования упрощенная версия провайдера с типом «Внешний REST» (не имеет защиты, которую обеспечивает спецификация OpenID Connect). При использовании данного типа провайдера увеличиваются требования к уровню безопасности сервера, на котором развернута Система.
Примечание |
---|
Конечная точка REST может стать мишенью для атак методом перебора. Для предотвращения атак при сбоях аутентификации необходимо включить поддержку регулирования безопасности. |
Провайдер с типом «Внешний REST» построен на основе спецификации REST-протокола с режимом работы (потоком) «Authorization Code Flow» (код, данные пользователя). Данный тип провайдера не отображается на форме авторизации Системы и для его настройки достаточно указать:
-
на вкладке «Основное» – наименование и тип;
-
на вкладке «Параметры» – внешний URL.
Провайдер с типом «Внешний REST» применяется для бесшовного перехода в Систему внутри стороннего приложения через единую точку входа и в случае работы с API Системы при обеспечении должного уровня безопасности.
Отличительной чертой внешнего провайдера с типом «LDAP kerberos» является то, что данный тип провайдера работает только при наличии соответствующей инфраструктуры, не отображается на форме авторизации Системы и для его настройки достаточно указать наименование и тип на вкладке «Основное».
Провайдер с типом «LDAP kerberos» применяется для бесшовного перехода в Систему внутри стороннего приложения, открытого на клиентской машине, где заведена учетная запись, присоединенная к домену AD, и в web-браузере, в котором указан ключ реестра, путем сопоставления заголовков, полученных через nginx, который в свою очередь должен быть настроен специальным образом.
Примечание |
---|
В Системе активным может быть только один провайдер с типом «LDAP kerberos». |
Вкладка «Параметры» предназначена для ввода идентифицирующей информации о взаимодействии Системы и внешнего провайдера. Данную информацию передает администратор провайдера при регистрации заявки на подключение Системы к промышленному/тестовому контору ИА. Состав полей на вкладке зависит от типа провайдера, выбранного на вкладке «Основное».
Для типов провайдеров «OpenID» и «OpenID Token» вкладка содержит поля (Рисунок «Создание провайдера, вкладка «Параметры» для типов провайдеров «OpenID» и «OpenID Token»):
-
«Идентификатор ИА» – поле обязательное для заполнения;
-
«Секретный ключ доступа» – поле обязательное для заполнения только для провайдера типа «OpenID»;
-
«Внешний URL» – поле обязательное для заполнения.
Рисунок 11. Создание провайдера, вкладка «Параметры» для типов провайдеров «OpenID» и «OpenID Token»
Для типа провайдера «LDAP» вкладка содержит поля (Рисунок «Создание провайдера, вкладка «Параметры» для типа провайдера «LDAP»):
-
«Имя хоста» – доменное имя хоста или IP-адрес LDAP сервера. Поле обязательное для заполнения;
-
«Номер порта» – номер порта для подключения к серверу LDAP (для обычного соединения – 389, для SSL соединения – 636). Поле необязательное для заполнения;
-
«Логин» – уникальное имя пользователя с правами на чтение LDAP. Можно использовать формат domain/user или UPN (user@domain.com), если LDAP сервер дает возможность это сделать. Поле необязательное для заполнения;
-
«Пароль» – пароль к служебной учетной записи на чтение из LDAP. Поле необязательное для заполнения;
Примечание Для анонимного доступа к LDAP оставьте поля «Логин» и «Пароль» незаполненными. -
«Тип соединения» – позволяет задать защищенное (SSL/TLS) соединение к LDAP по специальному порту и получение защищенного соединения на обычном порту через STARTTLS. По умолчанию используется обычное (незащищенное) соединение. Поле необязательное для заполнения;
-
«Тип LDAP провайдера» – тип LDAP провайдера: Active Directory или OpenLDAP. Поле необязательное для заполнения;
-
«Базовый домен» – доменное имя каталога: «ou = users, dc = domain, dc = com», в котором производится поиск пользователей. Поле обязательное для заполнения;
-
«Фильтр LDAP» – фильтр пользователей. Поле обязательное для заполнения;
-
«Атрибут с именем пользователя» – название атрибута в записи пользователя, который содержит имя пользователя, используемое при подключении и автоматическом добавлении пользователя при успешной LDAP аутентификации. Для Active Directory задайте атрибут sAMAccountName, а для OpenLDAP – атрибут uid. Поле обязательное для заполнения.
Примечания |
---|
1 Вкладка «Параметры» отсутствует в карточке провайдера с типом «Локальный (user_permissions)», так как это внутренний провайдер, который используется по умолчанию. 2 Вкладка «Параметры» пуста в карточке провайдера с типом «LDAP kerberos». |
Вкладка «Маппинг схемы» содержит интерфейс для задания правил сопоставления атрибутов доступа схемы и атрибутов доступа провайдера пользователей (Рисунок «Создание провайдера, вкладка «Маппинг схемы»). Вкладка содержит:
-
параметр «Без соответствия» – при включении параметра отображаются атрибуты доступа схемы, которым не задано соответствие с атрибутами провайдера или атрибутами модели «user_permissions»;
-
таблицу соответствия:
-
в первом столбце перечислены все атрибуты доступа схемы, объявленные в разделе Системы «Схемы доступов» (см. п. Управление схемами доступов);
-
во втором столбце можно указать соответствующие атрибуты, передаваемые провайдером при взаимодействии или указанные в модели «user_permissions» при использовании внутреннего провайдера «AW».
-
Примечание |
---|
Реализован «мягкий» маппинг данных внешних провайдеров. Если у пользователя есть атрибут, не указанный в схеме, значение сохраняется в списке дополнительных атрибутов. И наоборот, если при формировании критериев доступа на модель и у пользователя нет используемого атрибута, то его значение ищется в списке дополнительных атрибутов. |
После заполнения правил соответствия атрибутов доступа схемы с атрибутами доступа провайдера и после сохранения данных провайдера, можно дополнительно задать соответствия к атрибутам пользователей в соответствующем атрибуте доступа.
Для этого на вкладке «Маппинг схемы» справа от атрибута доступа нажмите на кнопку . Откроется окно «Маппинг атрибутов» для выбранного атрибута доступа.
Окно «Маппинг атрибутов» содержит интерфейс для задания правил сопоставления атрибутов пользователей внешнего провайдера и атрибутов пользователей, используемых в Системе (Рисунок «Окно «Маппинг атрибутов»).
На вкладке можно задать дополнительные правила сопоставления и группировки атрибутов. Правила сопоставления атрибутов пользователей применяются при входе пользователя в Систему через провайдер.
Для создания правила нажмите на кнопку «Добавить правило». Отобразятся поля для ввода параметров. В поле «Провайдер» введите название атрибута, передаваемого провайдером, а в поле «Схема» укажите значение, которое будет использоваться при настройке правил доступа в моделях (Рисунок «Создание провайдера, добавление правила сопоставления»). Создайте необходимое количество правил. Чтобы удалить правило, нажмите на кнопку напротив необходимого правила.
Атрибуты доступа, которые содержат маппинг атрибутов пользователей, отмечены пиктограммой (Рисунок «Отображение атрибута, который содержит маппинг атрибутов пользователей»).
Примечание |
---|
Окно «Маппинг атрибутов» присутствует в карточке редактирования внутреннего провайдера «Локальный (user_permissions)», но, как правило, не используется при настройке атрибутного доступа. |
Чтобы отредактировать провайдер, дважды нажмите левой кнопкой мыши по провайдеру в списке или установите «флажок» напротив строки провайдера и нажмите на кнопку «Редактировать».
Доступно изменение следующих параметров и настроек провайдера:
-
на вкладке «Основное»:
-
активация и деактивация провайдера – для этого установите или снимите «флажок» в поле «Активный»;
-
изменение наименования в поле «Наименование»;
-
изменение типа провайдера в поле «Тип»;
-
изменение надписи кнопки сторонней аутентификации в поле «Надпись кнопки сторонней аутентификации»;
-
выбор списка базовых групп в поле «Базовые группы»;
-
установка или снятие разрешения на создание новых пользователей через внешнее управление – для этого установите или снимите «флажок» в поле «Разрешить создание новых пользователей через внешнее управление».
-
-
настройка параметров подключения на вкладке «Параметры»;
-
добавление соответствий атрибутов доступа схемы и атрибутов доступа провайдера на вкладке «Маппинг схемы»;
-
управление соответствиями атрибутов пользователей провайдера с атрибутами пользователей, используемых в Системе, на вкладке «Маппинг схемы».
Окно редактирования внешнего провайдера аналогично окну добавления провайдера (см. п. Создание внешнего провайдера).
Окно редактирования внутреннего провайдера содержит вкладки «Основное», «Маппинг схемы».
Примеры настроек внутреннего и внешних провайдеров представлены в п. Настройка провайдера пользователя.
Для сохранения внесенных изменений убедитесь, что заполнены обязательные поля на вкладках «Основное» (для внешнего и внутреннего провайдера) и «Параметры» (для внешнего провайдера). Нажмите на кнопку «Сохранить». В случае успешного сохранения отобразится уведомление о внесенных изменениях – «Провайдер сохранен».
Примечание |
---|
Если внутренний провайдер «AW» будет деактивирован, то вход через страницу авторизации Системы (локальная аутентификация или аутентификация через LDAP сервер) будет доступен только под учетной записью «tech_admin» (технический администратор) и под учетными записями, у которых установлен «флажок» в поле «Предварительная проверка через LDAP сервер». Все остальные пользователи должны будут проходить авторизацию через внешний сервис аутентификации с помощью ссылки «Х» на форме авторизации Системы, где «Х» – наименование кнопки сторонней аутентификации. |
Ранее созданный провайдер можно удалить:
-
в интерфейсе редактирования выбранного провайдера – ссылка «Удалить» на вкладке «Основное»;
-
в интерфейсе просмотра списка провайдеров – выберите нужный провайдер и нажмите на кнопку «Удалить». Аналогично можно выбрать и удалить сразу несколько провайдеров.
Перед удалением откроется окно подтверждения действия (Рисунок «Подтверждение операции удаления провайдеров»).
В Системе невозможно удалить активные провайдеры, а также внутренний провайдер «AW» с типом «Локальный (user_permissions)», который используется по умолчанию, провайдер «AW» можно только деактивировать.
- Поведение страницы аутентификации при различных настройках Системы
- Пользовательский сценарий авторизации через внешний провайдер «OpenID» по протоколу OpenID Connect
- Пользовательский сценарий авторизации через внешний провайдер «OpenID Token» по протоколу OpenID Connect
- Пользовательский сценарий авторизации через внешний провайдер «Active Directory» или «OpenLDAP» по протоколу LDAP
- Пользовательский сценарий авторизации через внешний провайдер «Внешний REST» по протоколу REST
- Пользовательский сценарий авторизации через внешний провайдер «LDAP kerberos»
- Принципы создания новых пользователей и обновления их доступов к разделам Системы
Отображение страницы аутентификации Системы и сценарии аутентификации при различных настройках описаны ниже (Таблица «Страница аутентификации при различных настройках Системы»).
Таблица 1. Страница аутентификации при различных настройках Системы
Состояние внешнего провайдера с типом «OpenID» | Состояние внешнего провайдера с типами «OpenID Token», «Внешний REST» и «LDAP kerberos» | Состояние внутреннего провайдера «AW» | Состояние внешнего провайдера с типом «LDAP» | Отображение |
---|---|---|---|---|
Не активный (или отсутствует) |
Не активный (или отсутствует)/Активный |
Активный |
Не активный (или отсутствует)/Активный |
Пользователю на странице входа в приложение доступна кнопка локальной аутентификации или для аутентификации через LDAP сервер (если есть активный провайдер с типом «LDAP»)
|
Активный |
Не активный (или отсутствует)/Активный |
Активный (локальная аутентификация разрешена) |
Не активный (или отсутствует)/Активный |
Пользователю на странице входа в приложение доступны кнопки локальной аутентификации или для аутентификации через LDAP сервер (если есть активный провайдер с типом «LDAP») и входа через провайдер с типом «OpenID». При нажатии на кнопку провайдера происходит переадресация на его страницу аутентификации
|
Активный |
Не активный (или отсутствует)/Активный |
Не активный (локальная аутентификация запрещена) |
Не активный (или отсутствует)/Активный |
Пользователю на странице входа в приложение доступны кнопки локальной аутентификации или для аутентификации через LDAP сервер (если есть активный провайдер с типом «LDAP») и входа через провайдер с типом «OpenID». При этом вход через кнопку локальной аутентификация доступен только под учетной записью «tech_admin» (технический администратор) и под учетными записями, у которых установлен «флажок» в поле «Предварительная проверка через LDAP сервер» (если есть активный провайдер с типом «LDAP»). При нажатии на кнопку провайдера происходит переадресация на его страницу аутентификации
|
При авторизации через внешний провайдер «OpenID» по протоколу OpenID Connect:
-
администратор Системы подает заявку администратору провайдера на подключение автоматизированной информационно-аналитической системы «Analytic Workspace» к тестовому/промышленному контуру провайдера, в которой указывает:
-
протокол взаимодействия;
-
необходимость запрашивать согласие у пользователя на передачу данных в Систему в процессе аутентификации;
-
список атрибутов для передачи из провайдера;
-
роли пользователя.
-
-
администратор провайдера создает роли для автоматизированной информационно-аналитической системы «Analytic Workspace»;
-
необходимые учетные записи заводятся по соответствующим заявкам администраторами Системы и провайдера;
-
взаимодействие пользователей через провайдер может происходить по следующим сценариям:
-
в сторонней системе пользователь нажимает на кнопку для открытия виджета или информационной панели Системы (Система получает REST-запрос от сторонней системы);
-
пользователь сторонней системы переходит в соответствующий раздел для перехода и дальнейшей работы в Системе (Система получает REST-запрос от сторонней системы);
-
пользователю сторонней системы предоставляется ссылка на открытие ресурса Системы (Система отправляет запрос на делегирование задачи аутентификации провайдеру);
-
пользователь сторонней системы в web-браузере вводит адрес Системы и выполняет вход через провайдер (Система отправляет запрос на делегирование задачи аутентификации провайдеру).
-
-
сервисы для взаимодействия Системы с внешним провайдером по протоколу OpenID Connect:
-
сервис по делегированию задачи аутентификации провайдеру:
-
делегирование задачи аутентификации провайдеру;
-
получение identity token и access token от провайдера;
-
проверка наличия учетной записи пользователя в базе:
-
учетная запись есть – выполняется обновление ролей (групп) пользователя из полученного access token, предоставление доступа к ресурсам;
-
учетная запись отсутствует – выполняется проверка наличия разрешения на создание новых пользователей через внешнее управление:
-
если разрешения нет – выводится сообщение об отсутствии пользователя: «Для указанного в запросе пользователя не создана учетная запись. Необходимо обратиться к Администратору Системы»;
-
если разрешение есть – создается новый пользователь с ролью (группами) из токена, добавляется информация по пользователю в атрибут auth_provider_data, предоставляется доступ к ресурсам с атрибутными ограничениями по модели.
-
-
-
-
REST сервис по получению запроса на предоставление ресурсов другим сторонним системам:
-
Система получает REST-запрос от стороннего приложения;
-
из запроса извлекается access token;
-
выполняется проверка наличия учетной записи пользователя в базе:
-
учетная запись есть – выполняется проверка подписи, обновляется информация из токена по ролям (группам) пользователя, открывается запрашиваемый фрейм с ограничениями по модели «user_permissions» или по системным ролям (группам) пользователя;
-
если учетная запись отсутствует – выполняется проверка наличия разрешения на создание новых пользователей через внешнее управление:
-
если разрешения нет – выводится сообщение об отсутствии пользователя: «Для указанного в запросе пользователя не создана учетная запись. Необходимо обратиться к Администратору Системы»;
-
если разрешение есть – создается новый пользователь с ролью (группами) из токена, добавляется информация по пользователю в атрибут auth_provider_data, предоставляется доступ к ресурсам с атрибутными ограничениями по модели.
-
-
-
-
-
отработка сценариев взаимодействия при кросс-авторизации:
-
для сценариев 1 и 2:
-
сторонняя система отправляет в провайдер запрос на предоставление access token, который может быть использован для доступа к ресурсам Системы от имени пользователя;
-
провайдер проводит аутентификацию пользователя, затем при необходимости высылает пользователю запрос на согласие в предоставлении доступа, после чего отправляет в стороннюю систему access token;
-
сторонняя система отправляет в Систему REST-запрос c полученным access token;
-
REST сервис в Системе обрабатывает запрос, извлекает access token. Выполняется проверка подписи и доступов:
-
при прохождении проверки – открывается запрашиваемый фрейм, исходя из роли (группы) пользователя и настройках доступа;
-
при возникновении ошибок – отображается сообщение об ошибке.
-
-
-
для сценариев 3 и 4:
-
при обращении к адресу ресурса Системы выполняется перенаправление в провайдер для аутентификации и авторизации пользователя, если ранее пользователь не был авторизован;
-
Система извлекает identity token и access token. Выполняется проверка наличия пользователя, подписи и доступов:
-
при выполнении проверки – открывается запрашиваемый фрейм, исходя из роли (группы) пользователя и настройках доступа;
-
при возникновении ошибок – отображается сообщение об ошибке.
-
-
-
Примечание |
---|
В Системе для протокола OpenID Connect реализован режим работы (поток) – Authorization Code. Поток работает через переадресацию запроса аутентификации на OpenID (Authorization Endpoint). После успешной аутентификации пользователя с помощью OpenID создается код авторизации, и происходит переадресация обратно в приложение. Затем приложение использует код авторизации вместе со своими учетными данными, чтобы получить токен доступа (Access Token), токен обновления (Refresh Token) и токен идентификатора (ID Token) из OpenID (Token Endpoint). Поток ориентирован на веб-приложения, включая мобильные приложения, где возможно использовать web-браузер. Подробнее описано в спецификации Authorization Code Flow по адресу https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth. |
Внешний провайдер с типом «OpenID Token» построен на базе провайдера с типом «OpenID». Отличительной чертой является то, что данный тип провайдера не отображается на форме авторизации Системы, и для его настройки достаточно указать на вкладке «Основное» наименование и тип, на вкладке «Параметры» – идентификатор ИА и внешний URL. Применяется данный тип провайдера для бесшовного перехода в Систему внутри стороннего приложения через единую точку входа и в случае работы с API Системы.
При авторизации через внешний провайдер по протоколу OpenID Connect:
-
администратор Системы подает заявку администратору провайдера на подключение автоматизированной информационно-аналитической системы «Analytic Workspace» к тестовому/промышленному контуру провайдера, в которой указывает:
-
протокол взаимодействия;
-
необходимость запрашивать согласие у пользователя на передачу данных в Систему в процессе аутентификации;
-
список атрибутов для передачи из провайдера;
-
коды ролей (коды групп) пользователей.
-
-
администратор провайдера создает роли для автоматизированной информационно-аналитической системы «Analytic Workspace»;
-
необходимые учетные записи заводятся по соответствующим заявкам администраторами Системы и провайдера;
-
взаимодействие пользователей через провайдер может происходить по следующим сценариям:
-
основной принцип взаимодействия пользователей:
-
пользователь авторизуется в стороннем приложении с помощью единой точки входа;
-
работает с разделами стороннего приложения;
-
нажимает на кнопки для перехода к Системе, после чего переходит в автоматизированную информационно-аналитическую систему «Analytic Workspace», минуя форму авторизации (Система получает access_token от сторонней системы).
-
-
сценарии, по которым осуществляется бесшовный переход из стороннего приложения в Систему:
-
пользователь сторонней системы переходит в соответствующий раздел для дальнейшей работы с объектами Системы – при нажатии на кнопку открывается окно стороннего приложения (реестр/таблица) со списком доступных пользователю объектов из Системы и доступными операциями. При открытии объекта, например, на просмотр, открывается окно Системы на просмотр объекта, и все дальнейшие операции с объектом происходят в интерфейсе Системы;
-
пользователь сторонней системы переходит в соответствующий раздел для перехода и дальнейшей работы в Системе – при нажатии на кнопку раздела открывается раздел Системы с доступными пользователю объектами и доступными операциями. Все дальнейшие операции происходят в интерфейсе Системы;
-
пользователю сторонней системы предоставляется кнопка с ссылкой ресурса Системы – при нажатии на кнопку открывается окно Системы на просмотр виджета или информационной панели по ссылке. Все дальнейшие операции с виджетом или панелью происходят в интерфейсе Системы;
-
в сторонней системе пользователь нажимает на кнопку для открытия объекта Системы – при нажатии на кнопку открывается окно Системы на просмотр или редактирование объекта. Все дальнейшие операции с объектом происходят в интерфейсе Системы.
-
-
-
отработка сценариев взаимодействия при кросс-авторизации:
-
для сценария 1: 1 вариант – взаимодействие с API Системы:
-
сторонняя система отправляет в провайдер запрос на предоставление access token, который она может использовать для доступа к ресурсам Системы от имени пользователя;
-
провайдер проводит аутентификацию пользователя. Затем при необходимости отправляет пользователю запрос на согласие в предоставлении доступа. После чего отправляет в стороннюю систему access token;
-
сторонняя система делает POST запрос к api/auth-provider/verify-code (верификация кода авторизации) с обязательными параметрами: id – идентификатор провайдера в Системе, code – access_token, полученный от провайдера;
-
если все проверки на стороне Системы пройдены успешно, то в ответ сторонняя система получает token Системы. Дальше его используют для последующих запросов к API Системы.
-
-
для сценариев 2, 3, 4: 2 вариант – фронтовое взаимодействие пользователей с Системой (через web-браузер):
-
сторонняя система отправляет в провайдер запрос на предоставление access token, который она может использовать для доступа к ресурсам Системы от имени пользователя;
-
провайдер проводит аутентификацию пользователя. Затем при необходимости отправляет пользователю запрос на согласие в предоставлении доступа. После чего отправляет в стороннюю систему access token;
-
сторонняя система отправляет запрос на frontend Системы /auth/verify-code/ с обязательными параметрами: id – идентификатор провайдера в Системе, code – access_token, полученный от провайдера, и дополнительными параметрами: sessionId – идентификатор сессии пользователя и redirectUrl – URL Системы, запрашиваемый пользователем;
-
frontend Системы перехватывает запрос и обращается к backend Системы, backend обращается к провайдеру;
-
если все проверки на стороне Системы пройдены успешно, то генерируется внутренний token Системы. Дальше frontend использует его для открытия запрашиваемого ресурса в redirectUrl (например, /app/widgets, при отсутствии адреса в redirectUrl пользователю откроется первый доступный раздел Системы).
-
-
Принцип аутентификации, когда в Системе есть активный провайдер с типом «LDAP»:
-
для аутентификации используется введенное на стартовой странице Системы имя и пароль пользователя (вводится логин и пароль, используемые пользователем для авторизации в корпоративной сети);
-
по указанному имени выполняется поиск существующего пользователя в Системе:
-
если учетная запись пользователя найдена, и у записи не установлен «флажок» в поле «Предварительная проверка через LDAP сервер», то аутентификация проходит через внутренний провайдер «AW» с типом «Локальный (user_permissions)»;
-
если учетная запись пользователя найдена, и у записи установлен «флажок» в поле «Предварительная проверка через LDAP сервер», или пользователь не найден, то проводится попытка аутентификации через LDAP сервер.
-
-
выполняется проверка аутентификации через LDAP сервер:
-
поиск учетной записи по введенному имени в каталоге «Базовый домен» (и его подкаталогах) соответствующего фильтру LDAP;
-
аутентификация этого пользователя с полным доменным именем из найденной учетной записи и введенным паролем:
-
в случае неуспешной аутентификации пользователя через LDAP выводится текст ошибки, полученный от LDAP сервера;
-
в случае успешной аутентификации пользователя через LDAP и отсутствия данного пользователя в списке пользователей Системы:
-
если для провайдера с типом «LDAP» установлено разрешение на создание новых пользователей через внешнее управление, учетная запись будет создана автоматически. Будут получены данные о пользователе из базы данных корпоративного сервера, и создана его учетная запись (используется введенное имя пользователя, будет установлен «флажок» в поле «Предварительная проверка через LDAP сервер», заполнены атрибуты «Активность», «Логин», «Электронная почта», проставлены базовые группы при наличии в карточке провайдера);
-
если для провайдера с типом «LDAP» не установлено разрешение на создание новых пользователей через внешнее управление, отобразится сообщение: «Для указанного в запросе пользователя не создана учетная запись. Необходимо обратиться к Администратору Системы», пользователю не будет разрешен доступ к ресурсам Системы.
-
-
в случае успешной аутентификации пользователя через LDAP и при наличии учетной записи данного пользователя в списке пользователей Системы:
-
выполняется проверка на наличие изменений в профиле пользователя на корпоративном сервере. Соответствующие изменения будут внесены в учетную запись пользователя в Системе.
-
-
-
-
если аутентификация через LDAP сервер прошла успешно, пользователь получает разрешение на доступ к ресурсам Системы и авторизуется. Права пользователя определяются в зависимости от настроек групп пользователей.
Провайдер с типом «Внешний REST» построен на основе спецификации REST-протокола с режимом работы (потоком) «Authorization Code Flow» (код, данные пользователя) – упрощенная версия спецификации Authorization Code Flow OpenID Connect, не имеющая защиты, которую обеспечивает спецификация OpenID Connect. Данный тип провайдера не отображается на форме авторизации Системы и для его настройки достаточно указать на вкладке «Основное» – наименование и тип, на вкладке «Параметры» – внешний URL. Применяется данный тип провайдера для бесшовного перехода в Систему внутри стороннего приложения через единую точку входа и в случае работы с API Системы при обеспечении должного уровня безопасности.
При авторизации через внешний провайдер «Внешний REST» по протоколу REST происходят следующие действия:
-
клиент (Система) подготавливает запрос аутентификации, содержащий желаемые параметры запроса;
-
клиент отправляет запрос на сервер авторизации (система ИА, провайдер);
-
сервер авторизации отправляет конечного пользователя обратно клиенту с кодом авторизации;
-
клиент запрашивает ответ, используя код авторизации в конечной точке токена (отправляется запрос POST с параметром «code»);
-
-
успешный – с кодом «200», который содержит данные пользователя в полном объеме;
-
неуспешный – любой код с описанием ошибки.
-
Конечная точка авторизации (Authorization Endpoint) выполняет аутентификацию пользователя (п. 3) списка выше) путем перенаправления запроса на эту конечную точку. После успешной аутентификации будет совершено перенаправление обратно в приложение (п. 4) списка выше).
Пример ссылки перенаправления: http://aw.test/auth/verify-code/{provider_id}?code={code}&returnUrl=/app/widgets, где code – некий токен.
Примечание |
---|
В параметре «code» не стоит кодировать и передавать данные пользователя. |
По токену из параметра «code» со стороны родительской системы передается ответ с кодом 200, и возвращаются данные пользователя в полной объеме (п. 6) списка выше). Данные пользователя могут представлять односложный (без иерархий) json-объект (не массив объектов, а только 1 элемент в виде json-объекта) с произвольной структурой, которую можно перенести на вкладку «Маппинг схемы» в настройках провайдера. Для успешного взаимодействия необходимо обеспечить минимальные требования к маппингу атрибутов доступа схемы – «login» и/или «email». Если один из атрибутов доступа («login» или «email») будет отсутствовать в маппинге, то он будет произвольно сгенерирован при создании учетной записи пользователя в Системе.
Пример |
---|
Пример передачи данных пользователя: { "login": "BI_aw_user", "email": "aw_user@mail.com", "state": 1, "surname": "Сергеев", "name": "Сергей", "fname": "Сергеевич", "staff_position_id": 3, "user_role": 1, "roles": ["adc","dfe"] } |
Все другие коды в ответе будут считаться ошибкой. Передача сведений об ошибке ожидается с типом «string» или в виде json-объекта с атрибутом «message» или «error», обрабатывается также атрибут «error_description».
Пример ответа с ошибкой представлен на рисунке ниже (Рисунок «Пример ответа с ошибкой»).
Для провайдера с типом «LDAP kerberos» предъявляются следующие требования к инфраструктуре:
-
на клиентской машине заведена учетная запись, присоединенная к домену AD;
-
на клиентской машине в web-браузере указан ключ реестра;
-
на клиентской машине указано перенаправление к адресу nginx;
-
в AD добавлен SPN для учетной записи пользователя;
-
развернут nginx, собранный с модулем nginx-module-for-http-spnego-auth и с соответствующими настройками, в т.ч. настройками проксирования входящих запросов к простому сервису, показывающему заголовки полученного HTTP-запроса с их значениями.
Порядок взаимодействия:
-
Система получает от nginx заголовок необходимого формата;
Пример Пример заголовка:
Authorization:(decoded base64 = login:password)
-
переопределяет полученный заголовок через proxy_set_header в aw-autoauth для предотвращения конфликтов заголовков на стороне nginx;
Пример Пример переопределения заголовка:
proxy_set_header "aw-autoauth" "Basic ay50ZXN0QENPUlAuQkFSUy1PUEVOLlJVOmJvZ3VzX2F1dGhfZ3NzX3Bhc3N3ZA==";
где значение "ay50ZXN0QENPUlAuQkFSUy1PUEVOLlJVOmJvZ3VzX2F1dGhfZ3NzX3Bhc3N3ZA==" – некий токен, соответствующий decoded base64 = login:password.
-
при ошибке получения пользователя при помощи Bearer заголовка backend Системы порождает ошибку 418;
-
Frontend Системы осуществляет перехват кода 418 на любой запрос в сторону API и перенаправляет в SSO на URL авторизации по заголовку (redirectUrl), если redirectUrl был передан – сохраняет URL, где возникла ошибка 418;
-
сервер авторизации аутентифицирует конечного пользователя. Если пользователь активен, происходит перенаправление с кодом верификации, иначе – отображается форма авторизации SSO;
-
сервер авторизации отправляет конечного пользователя обратно клиенту с кодом авторизации (code);
-
Frontend Системы запрашивает backend Системы для авторизации пользователя по code;
-
Backend Системы запрашивает ответ в SSO, используя код авторизации в конечной точке токена (отправляется запрос POST с параметром code);
-
сервер авторизации отправляет ответ:
-
успешный – с кодом 200, который содержит данные пользователя;
-
неуспешный – любой код с описанием ошибки.
-
-
в случае успешной авторизации backend Системы возвращает token пользователя;
-
Frontend Системы возвращает пользователя на сохраненный URL, где возникла ошибка 418.
Для внутреннего провайдера «AW» с типом «Локальный (user_permissions)»:
-
при создании нового пользователя по умолчанию добавляются в карточку его учетной записи базовые группы, которые указаны в настройке провайдера с типом «Локальный (user_permissions)»;
-
все дополнительные доступы добавляются администратором Системы в карточке пользователя на вкладке «Группы» (см. п. Вкладка «Группы»).
Для внешних провайдеров с типами «OpenID», «OpenID Token» и «LDAP kerberos»:
-
когда в Систему через кросс-авторизацию переходит пользователь без учетной записи, Система проверяет настройку провайдера:
-
если нет «флажка» в поле «Разрешить создание новых пользователей через внешнее управление», то открывается сообщение об ошибке «Для указанного в запросе пользователя не создана учетная запись. Необходимо обратиться к Администратору Системы»;
-
если установлен «флажок» в поле «Разрешить создание новых пользователей через внешнее управление», то в Системе создается новая учетная запись пользователя с определенными параметрами: логин, электронная почта, группы.
-
-
если установлен «флажок» в поле «Разрешить создание новых пользователей через внешнее управление», Система проверяет, какие коды ролей (групп) передал провайдер для Системы (блок endpoint с идентификатором Системы в ИА):
-
если в блоке ролей имеются коды ролей, которые соответствуют кодам групп пользователей Системы (системным или пользовательским группам), то в карточку пользователя добавляются эти группы;
-
далее проверяется настройка базовых групп: если в настройках провайдера указаны базовые группы пользователя, то в учетную запись пользователя добавляются базовые группы из настройки.
-
-
когда в Систему через кросс-авторизацию переходит пользователь с учетной записью в Системе, то:
-
в учетной записи пользователя удаляются все настройки по доступным группам (даже те, которые были добавлены администратором Системы вручную);
-
далее группы записываются снова по тому же принципу, что и при создании учетной записи.
-
Для внешних провайдеров с типом «LDAP» при авторизации пользователя через страницу аутентификации Системы (когда в Системе активировано подключение к LDAP серверу) возможны следующие варианты:
-
если учетная запись пользователя не найдена в Системе, проводится попытка аутентификации через LDAP сервер. В случае успешной аутентификации пользователя через LDAP производится проверка настройки провайдера:
-
если нет «флажка» в поле «Разрешить создание новых пользователей через внешнее управление», отобразится сообщение об ошибке: «Для указанного в запросе пользователя не создана учетная запись. Необходимо обратиться к Администратору Системы»;
-
если установлен «флажок» в поле «Разрешить создание новых пользователей через внешнее управление», то в Системе создается новая учетная запись пользователя с установленным «флажком» в поле «Предварительная проверка через LDAP сервер» и определенными параметрами: логин, электронная почта. Проверяется настройка базовых групп: если в настройках провайдера указаны базовые группы пользователя, то в учетную запись пользователя добавляются базовые группы из настройки.
-
-
если учетная запись пользователя найдена в списке пользователей Системы, и у записи установлен «флажок» в поле «Предварительная проверка через LDAP сервер», то в случае успешной аутентификации пользователя через LDAP:
-
выполняется проверка, были ли выполнены какие-либо изменения в профиле пользователя на корпоративном сервере. При их наличии соответствующие изменения будут выполнены и с учетной записью пользователя в Системе;
-
проверяется настройка базовых групп: если в настройках провайдера указаны базовые группы пользователя, то в учетную запись пользователя дополнительно будут добавлены базовые группы из настройки.
-
Для внешних провайдеров с типом «Внешний REST»:
-
когда в Систему через кросс-авторизацию переходит пользователь без учетной записи, происходит проверка настройки провайдера:
-
если нет «флажка» в поле «Разрешить создание новых пользователей через внешнее управление», то открывается сообщение об ошибке: «Для указанного в запросе пользователя не создана учетная запись. Необходимо обратиться к Администратору Системы»;
-
если есть «флажок» в поле «Разрешить создание новых пользователей через внешнее управление», то в Системе создается новая учетная запись пользователя с определенными параметрами:
-
логин;
-
электронная почта;
-
тип пользователя из настроек провайдера;
-
группы (см. п. 2)).
-
-
-
если есть «флажок» в поле «Разрешить создание новых пользователей через внешнее управление», то Система проверяет, какие коды ролей (групп) передал провайдер для Системы (блок атрибутов, с маппингом на атрибут доступа схемы «user_roles»):
-
если в блоке ролей имеются коды ролей, которые соответствуют кодам групп пользователей Системы (системным или пользовательским группам), то в карточку пользователя записываются эти группы;
-
далее проверяется настройка базовых групп:
-
если в настройках провайдера указаны базовые группы пользователя, то в учетную запись пользователя добавляются базовые группы из настройки.
-
-
-
когда в Систему через кросс-авторизацию переходит пользователь с учетной записью в Системе, то происходят следующие действия:
-
в учетной записи пользователя удаляются все настройки по доступным группам (даже те, которые были добавлены администратором Системы вручную);
-
далее группы записываются снова, по тому же принципу, что и при создании учетной записи (см. п. 2)).
-