Открыть сервис

SAML

SAML (Security Assertion Markup Language, язык разметки утверждений безопасности) — это открытый стандарт на основе XML для обмена данными аутентификации и авторизации между сторонами, в частности между поставщиком удостоверений (Identity Provider, IdP) и поставщиком услуг (Service Provider, SP). Стандарт позволяет реализовать механизм единого входа (Single Sign-On, SSO), при котором пользователь проходит аутентификацию один раз у поставщика удостоверений, а затем получает доступ к нескольким независимым приложениям (поставщикам услуг) без повторного ввода учётных данных. SAML разрабатывается и поддерживается консорциумом OASIS (Organization for the Advancement of Structured Information Standards).

История

Разработка SAML началась в 2001 году в рамках технического комитета OASIS Security Services (SAML). Первая версия стандарта, SAML 1.0, была утверждена в ноябре 2002 года. Она определяла базовые протоколы и форматы утверждений, но имела ограниченную поддержку и сложности в реализации.

В сентябре 2003 года вышла версия SAML 1.1, которая исправила ряд ошибок и уточнила спецификации. Однако широкое распространение стандарт получил только с выходом SAML 2.0 в марте 2005 года. Версия 2.0 объединила и расширила возможности предыдущих версий, а также учла опыт использования аналогичных протоколов, таких как Liberty Alliance Identity Federation Framework (ID-FF) и Shibboleth. SAML 2.0 стал де-факто стандартом для корпоративных систем единого входа и федеративных удостоверений.

В последующие годы стандарт развивался через выпуск дополнительных профилей и исправлений (errata). Актуальная версия спецификации — SAML V2.0 Errata Composite (2010 год с последующими обновлениями). Попытки создания версии 3.0 не привели к утверждению нового стандарта; вместо этого развитие идёт через публикацию отдельных профилей и расширений.

Архитектура и основные компоненты

Архитектура SAML основана на трёх основных ролях: субъект (обычно пользователь), поставщик удостоверений (IdP) и поставщик услуг (SP).

Ключевым элементом SAML является утверждение (assertion) — XML-документ, содержащий информацию о субъекте. Существует три основных типа утверждений:

  1. Утверждение аутентификации (Authentication Assertion) — подтверждает, что субъект был аутентифицирован определённым способом в определённое время.
  2. Утверждение атрибутов (Attribute Assertion) — содержит дополнительные атрибуты субъекта (например, роль, email, отдел).
  3. Утверждение авторизации (Authorization Decision Assertion) — содержит решение о том, разрешено ли субъекту выполнять определённое действие над ресурсом.

Утверждения могут быть подписаны цифровой подписью для обеспечения целостности и аутентичности, а также зашифрованы для конфиденциальности.

Протоколы и привязки

SAML определяет несколько протоколов для обмена сообщениями между IdP и SP. Наиболее распространённые:

Для передачи сообщений SAML используются различные привязки (bindings) к транспортным протоколам:

Профили

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

Применение

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

Безопасность

SAML 2.0 предусматривает ряд механизмов для обеспечения безопасности:

Несмотря на наличие механизмов защиты, неправильная реализация SAML может приводить к уязвимостям. Наиболее известные проблемы связаны с некорректной проверкой цифровых подписей (например, атака XML Signature Wrapping), неправильной обработкой XML-документов (атаки XXE) и недостаточной проверкой идентификаторов получателей (Audience Restriction).

Критика и альтернативы

SAML 2.0 подвергается критике за сложность реализации и избыточность спецификации. XML-формат утверждений и протоколов является громоздким по сравнению с более современными форматами, такими как JSON. Это увеличивает нагрузку на вычислительные ресурсы и усложняет отладку.

Основными альтернативами SAML являются:

В настоящее время SAML остаётся широко распространённым в корпоративном и государственном секторах, особенно в legacy-системах и федерациях, построенных до массового внедрения OIDC. Однако для новых проектов всё чаще выбирают OAuth 2.0 и OpenID Connect как более лёгкие и гибкие протоколы.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →