Что такое язык разметки деклараций безопасности (SAML)?

SAML (Security Assertion Markup Language) — открытый стандарт на основе XML. Он позволяет поставщику удостоверений (IdP) безопасно передавать поставщику услуг (SP) данные для аутентификации и авторизации пользователя. SAML входит в число основных технологий, благодаря которым пользователю достаточно авторизоваться один раз. После этого он может работать с различными приложениями без повторного ввода учетных данных.

Для чего используется SAML?

SAML обычно используется там, где пользователям нужен безопасный и удобный доступ к нескольким приложениям. Наиболее распространенные сценарии использования:

  • Единый вход (SSO): один вход в систему предоставляет доступ к нескольким приложениям, поэтому пользователю не приходится повторно вводить учетные данные для каждого сервиса.
  • Федеративная идентификация: SAML позволяет организации доверять удостоверениям, выданным партнерской или материнской компанией. Благодаря этому пользователи из доверенного домена могут получать доступ без создания отдельных учетных записей.
  • Управление корпоративным доступом: ИТ-отделы централизованно управляют доступом к приложениям. Все запросы на вход проходят через единого поставщика удостоверений (IdP), что позволяет применять согласованные политики безопасности, такие как многофакторная аутентификация (MFA), сразу во всех системах.

В каждом из сценариев IdP создает подписанное XML-утверждение, которое через браузер пользователя передается поставщику услуг. Так данные аутентификации безопасно передаются между системами, а пользователю не приходится входить повторно.

Ключевые компоненты SAML

В обмене данными по протоколу SAML участвует несколько компонентов. Следующие базовые термины помогут лучше понять процесс аутентификации.

  • Субъект — пользователь, который проходит аутентификацию. Обычно это человек, пытающийся открыть конкретное приложение.
  • Поставщик удостоверений (IdP) — система, которая проверяет пользователя и выдает декларацию для входа. Примерами служат Microsoft Entra ID или Okta.
  • Поставщик услуг (SP) — приложение или сайт, к которому обращается пользователь. SP не управляет учетными данными сам, а доверяет проверку личности поставщику удостоверений.
  • Декларация SAML — подписанное XML-сообщение. IdP отправляет его поставщику услуг, чтобы передать информацию о пользователе и его правах доступа (подробнее об этом ниже).
  • Метаданные — параметры конфигурации, которыми обмениваются стороны. Они включают конечные точки, сертификаты и другие параметры, помогающие IdP и SP установить доверие и настроить связь.
  • Сертификат подписи — цифровой сертификат с открытым ключом. С его помощью поставщик услуг проверяет подпись декларации. Это гарантирует, что данные не изменили при передаче, и подтверждает доверие между SP и IdP.

Как работает аутентификация SAML?

При аутентификации SAML поставщик удостоверений (IdP) передает поставщику услуг (SP) подписанное утверждение, подтверждающее личность пользователя. Чаще всего используется сценарий, инициированный поставщиком услуг. Он начинается, когда пользователь открывает сайт или приложение, которым хочет воспользоваться. Если приложение использует для входа внешний IdP, браузер пользователя перенаправляется к нему вместе с запросом на SAML-аутентификацию. Затем IdP проверяет учетные данные пользователя и выполняет аутентификацию. Если у пользователя уже есть активный сеанс, этот этап пропускается. После успешной проверки IdP создает подписанное утверждение и через браузер передает его обратно поставщику услуг. Наконец, SP проверяет подпись утверждения, убеждается в его подлинности и предоставляет пользователю доступ без отдельного входа. Хотя чаще всего SAML-аутентификацию инициирует поставщик услуг, существует и сценарий, инициированный IdP. В этом случае пользователь начинает вход у поставщика удостоверений, например нажав плитку приложения на корпоративной панели.

Что такое утверждение SAML?

Утверждение SAML — подписанный XML-документ, который поставщик удостоверений (IdP) отправляет поставщику услуг (SP), чтобы подтвердить сведения о пользователе. Каждое утверждение может содержать один или несколько типов сведений. Именно на них SP опирается, когда решает, предоставлять ли пользователю доступ. Существует три типа утверждений.

  • Утверждения об аутентификации подтверждают личность пользователя, время входа и способ авторизации (например, использование MFA).
  • Утверждения об атрибутах передают дополнительные сведения, такие как должность или отдел пользователя. С помощью этих атрибутов SP определяет, что человек может видеть и делать в системе.
  • Утверждения о решении по авторизации указывают, разрешен ли доступ к конкретному ресурсу. Этот тип утверждений используется редко, поскольку более сложные задачи авторизации обычно решаются с помощью расширяемого языка разметки контроля доступа (XACML).

SAML и другие стандарты аутентификации

SAML часто упоминают вместе с другими протоколами управления идентификацией и доступом, однако они решают разные задачи. Главная цель SAML — аутентификация. Протокол проверяет личность пользователя и решает, пускать ли его на сайт или в приложение. Именно фокус на аутентификации отличает его от OAuth — протокола авторизации, который выдает приложениям права на доступ к конкретным ресурсам. SAML и OAuth не конкурируют, а дополняют друг друга. SAML подтверждает личность, а OAuth предоставляет доступ.

Протокол OpenID Connect (OIDC) больше похож на SAML, так как оба стандарта аутентифицируют пользователей и поддерживают технологию единого входа (SSO). При этом OIDC работает поверх OAuth и использует веб-токены JSON (JWT), что делает его удобным для современных веб- и мобильных приложений. SAML, в свою очередь, опирается на XML. Этот подход по-прежнему широко востребован в корпоративных системах SSO, хотя для новых приложений все чаще по умолчанию выбирают OIDC. Для сравнения, облегченный протокол доступа к каталогам (LDAP) — это более старый протокол каталогов, созданный для локальной инфраструктуры еще до эпохи облачных технологий. LDAP не заменяет SAML, а часто работает в связке с ним. Поставщик удостоверений (IdP) SAML использует LDAP как базу учетных данных пользователей.

SAMLOAuthOIDCLDAP
Что делаетАутентификация и SSOАвторизацияАутентификация (через OAuth)Доступ к каталогам
ФорматПодписанное XML-утверждениеТокен доступаJWTЗапросы к каталогам
Лучше всего подходит дляЕдиного входа в корпоративные веб-приложенияДелегированного доступа к APIМобильных и облачных приложенийЛокальных каталогов

SAML

Что делаетАутентификация и SSO
ФорматПодписанное XML-утверждение
Лучше всего подходит дляЕдиного входа в корпоративные веб-приложения

OAuth

Что делаетАвторизация
ФорматТокен доступа
Лучше всего подходит дляДелегированного доступа к API

OIDC

Что делаетАутентификация (через OAuth)
ФорматJWT
Лучше всего подходит дляМобильных и облачных приложений

LDAP

Что делаетДоступ к каталогам
ФорматЗапросы к каталогам
Лучше всего подходит дляЛокальных каталогов

Преимущества и недостатки SAML

SAML дает множество преимуществ, но перед внедрением важно учесть и его ограничения.

Преимущества SAML

Пользователям больше не нужно управлять десятками паролей. Единый вход сокращает поверхность атаки и снижает риск кражи учетных данных. Вся аутентификация проходит через единого поставщика удостоверений (IdP). Это дает организациям централизованный контроль. Команды безопасности могут настроить многофакторную аутентификацию (MFA) в одном месте и применить ее сразу ко всем подключенным приложениям. Централизованный подход разгружает службу поддержки. Пользователи реже теряют данные для входа, поэтому количество запросов на сброс паролей резко падает.

Недостатки SAML

Протокол надежен только при безошибочной настройке. Чтобы защитить сообщения и данные при передаче, SAML опирается на стандарты XML Signature, XML Encryption и TLS. Ошибки конфигурации, например неверная проверка подписей, создают серьезные уязвимости. Структура на основе XML уступает в гибкости современным форматам токенов. Из-за этого SAML сложнее внедрять в мобильные и одностраничные приложения.

Отказаться от согласия с использованием cookie-файловМы ценим вашу конфиденциальность

Мы используем файлы cookie на нашем веб-сайте, чтобы предоставить вам наилучшие возможности при просмотре веб-страниц, предоставлять персонализированную рекламу наших продуктов и контента, а также анализировать трафик веб-сайта. Чтобы узнать больше, ознакомьтесь с нашей Политикой конфиденциальности.

Подпишитесь на бесплатный пробный период

Купить сейчас