Настройка аутентификации и авторизации на примере Keycloak

Чтобы начать настройку аутентификации и авторизации с помощью Keycloak, перейдите на вкладку Login в настройках вашего существующего Realm.

Вкладка Login в настройках Realm

Далее установите переключатель Email as username (Email в качестве имени пользователя) в положение включено. Это важно, чтобы после успешной авторизации вам предоставлялось значение адреса электронной почты в атрибуте nameId. По умолчанию, адрес электронной почты используется как идентификатор.

Переключатель Email as username

Нажав на ссылку, экспортируйте настройки в формате XML для последующего импорта в Личный Кабинет MANGO OFFICE.

Экспорт настроек в формате XML

После сохранения настроек IdP (Identity Provider) в ЛК MANGO OFFICE, импортируйте полученный XML файл. Для этого нажмите на кнопку Загрузить файл metadata.xml на вкладке Настройка Identity-провайдера.

Кнопка Загрузить файл metadata.xml

Поле «Название провайдера» заполните самостоятельно, остальные поля подтянутся из файла metadata.xml. В ЛК ВАТС произведите сопоставление полей в соответствии с Шагом 2.

После успешного сохранения IdP в ЛК MANGO OFFICE скачайте файл с метаданными для последующего импорта в Keycloak. Для этого нажмите на кнопку Скачать файл metadata.xml на вкладке Данные Service-провайдера.

Кнопка Скачать файл metadata.xml

Вернитесь в Keycloak и перейдите на вкладку Clients. Затем импортируйте скачанный в шаге 5 файл с метаданными, нажав на кнопку Import client.

Вкладка Clients и кнопка Import client

После импорта настроек, заполните параметры «Valid Redirect URIs и Valid Post Logout Redirect URIs значением https://auth.mango-office.ru/*.

Параметры Valid Redirect URIs и Valid Post Logout Redirect URIs

Пролистайте окно вкладки Clients вниз до подраздела Access setting. Переведите переключатель Front Channel Logout в положение выключено, чтобы Keycloak не инициировал автоматический выход пользователя из приложений. Сохраните внесенные изменения.

Подраздел Access setting и переключатель Front Channel Logout

Перейдите на вкладку Client Scopes и добавьте новый маппер для сопоставления полей, настроенных в Шаге 2 настройки IdP в ЛК MANGO OFFICE.

Вкладка Client Scopes

Нажмите кнопку Add predefined mapper, чтобы добавить новый маппер.

Кнопка Add predefined mapper

Добавьте мапперу атрибуты (Роль и Имя).

Настройка атрибутов маппера

В разделе Clients на вкладке Dedicated scopes → Mappers нажмите кнопку Add mapper и в раскрывающемся списке выберите By configuration, чтобы создать новый маппер с ручной настройкой параметров.

Новый маппер

В открывшемся окне Configure a new mapper выберите тип маппера User Attribute. Этот тип используется для передачи пользовательского атрибута Keycloak в SAML-атрибут.

User Attribute

Заполните параметры маппера для передачи групп пользователя в SAML-ответе:

  • в поле Name укажите имя SAML-атрибута, которое используется в целевой системе;
  • в поле User Attribute укажите имя пользовательского атрибута, в котором в Keycloak будут храниться значения групп;
  • в поле Friendly Name укажите удобочитаемое имя атрибута, которое будет использоваться в SAML-утверждении;
  • в поле SAML Attribute Name укажите имя атрибута, ожидаемое сервис-провайдером;
  • в поле SAML Attribute NameFormat оставьте значение Basic или укажите формат, требуемый принимающей системой.

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

Откройте вкладку Mappers и убедитесь, что созданный маппер (в примере - http://schemas.xmlsoap.org/claims/Group) появился в списке.

Проверьте, что его тип указан как User Attribute, а категория – AttributeStatement Mapper.
Откройте маппер X500 givenName. Убедитесь, что заданы следующие параметры:

  • Mapper type – User Property;
  • Property – firstName;
  • Friendly Name – givenName;
  • SAML Attribute Name – urn:oid:2.5.4.42;
  • SAML Attribute NameFormat – urn:oasis:names:tc:SAML:2.0:attrname-format:uri.

Эта настройка обеспечивает передачу имени пользователя в SAML-ответе.
Перейдите в раздел Users, откройте карточку пользователя и выберите вкладку Attributes.

Добавьте атрибут с ключом http://schemas.xmlsoap.org/claims/Group. В поле значения укажите группы пользователя, например:

  • CN=Администратор, OU=Mango, OU=SecurityGroups

Сохраните изменения. Добавленные атрибуты будут передаваться через настроенный маппер в SAML-ответе при аутентификации пользователя.