Перед экспертами Центра информационных технологий РТ была поставлена задача реализовать интеграцию веб-приложения Axon с SSO средствами протокола SAML 2.0. В качестве SSO выступает продукт Avanpost FAM, а в качестве конечного веб-приложения – Informatica Axon Data Governance. В статье описываем основные этапы настройки, рассказываем, что из себя представляет данный протокол, и как была решена задача. SAML – это стандарт для обмена утверждениями о безопасности между веб-сервисами, основанный на языке xml. Версия 2.0 является последней версией протокола SAML и была выпущена в 2005 году. Основная цель SAML – обеспечение безопасного обмена информацией между различными системами, используя единый формат сообщений и утверждений о безопасности. Стандарт позволяет работать конечному веб-приложению без выполнения собственной аутентификации и передачи идентификационных данных, за счет использования функций SSO. Поставщик SAML – это система, которая помогает пользователям получать доступ к необходимому сервису. SAML передает идентификационные данные между двумя сторонами: IdP и SP. Поставщик идентификационных данных (IdP) выполняет аутентификацию и передает уровень идентификации и авторизации пользователя поставщику сервисов. IdP выполняет аутентификацию пользователя, а SP разрешает доступ на основе ответа, предоставленного IdP. Поставщик услуг (SP) требует аутентификации у IdP для предоставления авторизации пользователю, и, поскольку обе системы используют один и тот же язык, пользователю требуется войти в систему только один раз. Утверждение SAML (SAML Assertion) – это XML-документ, который IdP отправляет SP, документ содержит статус авторизации пользователя. Тремя разными типами утверждений SAML являются решения по аутентификации, атрибутам и авторизации. SAML работает путем передачи информации о пользователях, входе в систему и атрибутах между поставщиком идентификации (IdP) и поставщиком услуг (SP). Каждый пользователь выполняет аутентификацию один раз в IdP, тем самым создает глобальную сессию, и затем может беспрепятственно расширить свой сеанс аутентификации потенциально на несколько веб-приложений. В каждом веб-приложении создается своя локальная сессия, которая формируется на основе данных полученных из запроса на аутентификацию из глобальной сессии. IdP передает SP утверждение SAML при попытке пользователя получить доступ к этим веб-приложениям. Перед началом интеграции следует проработать основную модель взаимодействия между пользователем, IdP и SP.  В нашем проекте поставщиком идентификационных данных (IdP) является Аванпост FAM, а поставщиком услуг (SP) – веб-приложение бизнес-глоссарий компании Informatica. Исходя из представленной модели, выделим следующие шаги взаимодействия: Пользователь обращается к SP, и запрашивает у сервиса метод аутентификации. SP формирует SAML-Request и перенаправляет пользователя на IdP. Пользователь вводит данные аутентификации, после чего IdP отправляет SAML-Response на основе SAML-Assertion. SP принимает ответ от IdP, и на основе его решает, авторизовать пользователя или нет. Однако, чтобы данная модель работала, и пользователь получал доступ к конечной системе, нужно правильно настроить пользовательские атрибуты, которые должны быть одинаковы на IdP и SP.  Такими основными атрибутами в нашем случае будут являться: firstName – имя; lastName – фамилия; email – эл. почта Все эти атрибуты, а также X509 сертификаты поставщика услуг и поставщика идентификационных данных будут заранее сконфигурированы и переданы между системами в формате xml в момент обращения пользователя к IdP, для прохождения аутентификации. Заполненные пользователем ключевые атрибуты от IdP передаются в подписанный SAML Assertion, затем данные содержащиеся внутри утверждения передаются в SP, который потом «маппит» их на те, которые у него есть в системе, тем самым предоставляя доступ. На основании документации по Avanpost FAM, для интеграции информационных систем по SAML, необходимо внутри ОС, где установлен дистрибутив продукта, установить средства проверки подписи XML и добавить в config.json самого IdP путь к шаблону для SAML-Response: sudo {yum/apt/packman} install xmlsec1 xmlsec1-openssl –y . . . "saml_response": "public/templates/samlresponse.html", . . . Также необходимо создать соответствующее приложение, и прописать в него следующие параметры: Для того, чтобы пользователь мог получить доступ к конечному веб-приложению, в Аванпост FAM необходимо создать и включить данного пользователя и созданное приложение в одну группу. После создания приложения на вкладке Attributes необходимо задать атрибуты и соответствующие значения для них. На стороне поставщика услуг (SP) заходим под локальной учетной записью администратора. В настройках «SAML Configuration» необходимо сконфигурировать следующие параметры: Далее необходимо применить данные настройки путем перезагрузки служб внутри самой ОС, на которой установлен дистрибутив данного продукта. Разработчиками ПО уже предусмотрен определенный скрипт, для автоматизации процесса перезапуска, давайте запустим его: sh /axon72/axonhome/third-party-app/scripts/paramsync Теперь давайте проверим работоспособность нашей интеграции. Для наглядности будем использовать SAML-tracer (можно скачать как расширение в любом популярном браузере). Зайдем на страницу поставщика услуг (SP) и нажмем Login Нас перекинет на страницу поставщика идентификационных данных (IdP) В SAML-tracer видим следующий запрос, отправленный SP в сторону IdP: Из данного запроса можно понять, что SP отправил пользователя на IdP и передал ему формат атрибута, который тот должен будет отправить обратно с другими данными в SAML Assertion, после обмена конфигурациями. После ввода данных аутентификации нас перекидывает обратно на SP, однако сейчас мы уже авторизованы. В этом можно убедиться просмотрев данные в SAML-tracer или в самом интерфейсе веб-приложения: IdP в ответе прислал данные по аутентификации в рамках тех атрибутов, которые мы настраивали при создании приложения. Также виден уникальный ID нашей сессии и время ее начала. В более подробной форме ответа можно также увидеть обмен сертификатами, статус аутентификации и метод самой аутентификации, который мы задали: Сегодня мы попытались рассказать, а также продемонстрировать основные этапы, необходимые для успешной интеграции приложения с использованием SAML 2.0, а также рассмотрели в общих чертах и на примере сам принцип работы SAML 2.0, хотя данный тип аутентификации уже довольно старый.  Тем не менее иногда встречаются продукты, которые поддерживают исключительно SAML, поэтому в некоторых случаях знания по его интеграции могут очень пригодиться.  Спасибо за внимание.  Цифровая команда Татарстана