3.4. SAML - Avanpost FAM/MFA+

Общие сведения

SAML 2.0 (Security Assertion Markup Language) — это язык разметки для обмена данными аутентификации и авторизации между сторонами. SAML позволяет реализовать систему единого входа (Single Sign-On, SSO), с помощью которой можно переключаться между приложениями без повторной аутентификации. Avanpost FAM реализует функциональность SAML Identity Provider и предоставляет для приложений и систем набор HTTP-методов в соответствии с протоколом SAML 2.0.

SAML 2.0 может использоваться для подключения следующих типов приложений:

  • Корпоративные системы с поддержкой SAML 2.0 (Atlassian Jira, Confluence и т.д.).
  • SaaS-решения (Slack, GitHub и т.д.).
  • Другие Identity Provider с поддержкой аутентификации SAML 2.0 через сторонние провайдеры аутентификации (ADFS, собственные встроенные провайдеры аутентификации, доверенные провайдеры партнёров и т.д.).

Приложение, подключенное по SAML, может пользоваться следующими функциями Системы:

  • Централизованная аутентификация в приложение через единое удостоверение пользователя в Системе.
  • Многофакторная аутентификация в приложение с использованием:
    • Пароля;
    • Внешних провайдеров аутентификации (Google, Яндекс, ЕСИА);
    • Одноразового кода, доставляемого через SMS и E-mail;
    • Одноразовых кодов, формируемых программными TOTP-генераторами (Google Authenticator, Microsoft Authenticator, Яндекс.Ключ и других);
    • Мессенджера Telegram;
    • Биометрии FIDO2 WebAuthn и токенов FIDO U2F;
    • Мобильного приложения PayControl;
    • Сертификатов;
    • Других факторов, подключенных к Системе.
  • Управление доступом пользователей в приложение на этапе аутентификации через Систему.

В Систему встроен сервер SAML 2.0, функционирующий в роли Identity Provider. Для подключения приложения к Системе по SAML 2.0 требуется:

  1. Зарегистрировать и настроить приложение в Системе. На каждое SAML-приложение требуется создать отдельное приложение через административную консоль Системы.
  2. Выполнить настройку параметров SAML IDP в приложении. 

Система не поддерживает устаревшие версии SAML 1.0/SAML 1.1. Поставщики услуг после настройки будут перенаправлены на URL-адрес считывателя службы обнаружения IDP SAML во время единого входа.

Настройка

  1. Создать SAML-приложение в Системе:

  1. После создания приложения настроить параметры в соответствии с таблицей (Приложение В. Таблица настраиваемых атрибутов).

Можно также произвести настройку Discovery-методом. При загрузке файла по адресу https://${baseUrl}/.well-known/samlidp.xml, где ${baseURL} базовый адрес сервера Системы, нужно получить файл SAML IdP Metadata XML следующего вида:

<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor validUntil="2024-08-13T07:37:40.675Z" entityID="https://test.my.company.com" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"> 
<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol" WantAuthnRequestsSigned="false"> 
<md:KeyDescriptor use="signing"> <ds:KeyInfo> 
<ds:X509Data> 
<ds:X509Certificate>encoded_certificate</ds:X509Certificate> 
</ds:X509Data> </ds:KeyInfo> 
</md:KeyDescriptor> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat> 
<md:SingleLogoutService Location="https://test.my.company.com/adfs/ls/IDPLogout" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"/> 
<md:SingleSignOnService Location="https://test.my.company.com/idp/endpoint/HttpRedirect" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"/> 
</md:IDPSSODescriptor>
</md:EntityDescriptor>

После этого приложение должно автоматически настроить параметры интеграции.

Приложение А. Endpoint'ы SAML 2.0 

Доступные IdP endpoint'ы протокола SAML 2.0, предоставляемые Avanpost FAM:

ПараметрОписаниеЗначение
SAML 2.0 DiscoveryУказывает расположение XML-документа с параметрами

Адрес /.well-known/samlidp.xml

Адрес сервера аутентификации (SingleSignOnService в SAML 2.0)Указывается адрес сервера аутентификации Системы SingleSignOnService

Адрес /saml2 на сервере Системы в виде https://${baseUrl}/saml2, где ${baseURL} - базовый адрес сервера Системы.

Адрес завершения сессии (SingleLogoutService в SAML 2.0)Указать адрес сервера аутентификации Системы SingleLogoutServiceАдрес /saml2/logout на сервере Системы в виде https://${baseUrl}/saml2/logout, где ${baseURL} - базовый адрес сервера Системы.

Проверка работы

После выполнения настройки можно выполнить проверку интеграции путём прохождения аутентификации в приложение.

Для этого пользователь должен иметь доступ к приложению (доступ к приложениям в Системе выдаётся посредством групп) и у него должны быть указаны корректные значения атрибутов профиля пользователя в соответствии с требованиями подключаемого приложения и выполненными интеграционными настройками.

Приложение В. Таблица настраиваемых атрибутов

АтрибутОписаниеОбязательность
LogoutАдрес сервиса на стороне приложения, отвечающего за прекращение сессий в запросе формата SAML LogoutRequest.Нет
ACSAssertion Consumer Service (Assertion Consumert Service URL в соответствии со спецификацией SAML Core 2.0) – адрес сервиса на стороне приложения, на который должен быть отправлен ответ. Да
Базовый URLАдрес, на который пользователь будет перенаправляться при переходе из личного кабинета.Нет
Значение NameIDПередаваемое значение в идентификатор имени (NameID в SAMLResponse) в соответствии с требованиями целевого приложения. Выбирается из основного или дополнительного атрибута.Да
Issuer

Уникальный идентификатор приложения (Issuer в соответствии со спецификацией SAML 2.0)

Да
NameID Format

Формат передачи формата идентификатора имени (NameID в SAMLResponse) в соответствии с требованиями целевого приложения:

  • Не указан (Unspecified в SAML 2.0) – формат urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified;
  • Адрес электронной почты (emailAddress в SAML 2.0) – формат urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress;
  • Постоянный (Persistent в SAML 2.0) –формат urn:oasis:names:tc:SAML:2.0:nameid-format:persistent;
  • Полное имя в домене (WindowsDomainQualifiedName в SAML 2.0) – формат urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName.
Да

Обсуждение