Security Assertion Markup Language

From CryptoWiki
Jump to: navigation, search

Язык разметки утверждений безопасности (англ. Security Assertion Markup Language, SAML) - основанный на XML открытый стандарт, разработанный OASIS и предназначенный для обмена данными об аутентификации и авторизации между защищенными доменами.

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

Спецификация языка определяет три роли: пользователь, Центр Идентификации (ЦИ) и Целевое приложение (ЦП). В сценарии, описываемом SAML пользователь запрашивает сервис у Целевого Приложения. Целевое приложение запрашивает и получает утверждение от Центра Идентификации. На основании этого утверждения Целевое Приложение принимает решение о предоставлении доступа к сервису.

Перед передачей утверждения Целевому Приложению, Центр Идентификации может запросить информацию о пользователе (например логин и пароль) для аутентификации. В соответствии со спецификацией данного протокола, один Центр Идентификации может создавать утверждения для нескольких целевых приложений. И наоборот, одно Целевое Приложение может доверять утверждениям нескольких независимых Центров Идентификации.

SAML не определяет конкретный метод аутентификации для Центра Идентификации. В качестве такого метода могут использоваться логин/пароль или другие, включая многофакторную аутентификацию.

Contents

Стандарты, использованные в SAML

Язык SAML построен на следующих существующих протоколах:

  • XML - Подавляющее большинство утверждений SAML представляется в виде совокупности XML-тегов
  • XML Schema - Все утверждения SAML описаны используя XML-схемы
  • XML Signature - SAML использует цифровую подпись(основанную на стандарте XMLDSig) для аутентификации и защиты сообщений
  • XML Encryption - SAML 2.0 предоставляет возможность использования шифрованных идентификаторов, шифрованных атрибутов и шифрованных утверждений, используя XML Encryption
  • HTTP - SAML использует протокол HTTP в качестве транспортного протокола
  • SOAP - SAML использует SOAP 1.1

Структура SAML

SAML определяет основанные на XML утверждения, протоколы, привязки и профили. Под термином SAML Core понимаются базовые синтаксис и семантика SAML утверждений, а также протоколы, используемые для передачи этих утверждений от одной системы к другой. Протоколы определяют, что передается, а не как (последнее определяется выбором привязки).

Привязка SAML определяет как запросы и ответы отображаются в стандартные сообщения или коммуникационные протоколы. Одной из важных привязок языка является SOAP-привязка.

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

Утверждения SAML

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

  1. Высказывания аутентификации
  2. Высказывания о атрибутах
  3. Высказывания о авторизации

Высказывания аутентификации подтверждают Целевому Приложению то, что пользователь прошел процедуру аутентификации на Центре Идентификации в надлежащее время, используя надлежащие методы аутентификации. Дополнительная информация (называемая контекстом аутентификации) может быть включена в такие высказывания

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

Высказывания о авторизации подтверждают, что пользователю разрешено выполнение действия A над ресурсом R.

Протоколы SAML

Протокол SAML описывает как конкретные элементы SAML инкапсулируются в запросы и ответы,а также правила обработки сущностей SAML.

Наиболее важным типом запросов являются вопросы(query). Целевое Приложение передает вопрос напрямую Центру Идентификации через защищенное соединение. В соответствии с тремя типами утверждений существует три типа вопросов:

  1. Вопросы о аутентификации
  2. Вопросы о атрибутах
  3. Вопросы о авторизации

Протоколы SAML 1.1

В версии SAML 1.1 не определено других протоколов, отличных от вопросов

Протоколы SAML 2.0

SAML 2.0 расширяет список используемых протоколов следующими:

  • Assertion Query and Request Protocol
  • Authentication Request Protocol
  • Artifact Resolution Protocol
  • Name Identifier Management Protocol
  • Single Logout Protocol
  • Name Identifier Mapping Protocol

Привязки SAML

Привязка - это способ отображения сообщений протоколов SAML в стандартные форматы сообщений и/или транспортные протоколы. Например, SOAP-привязка определяет, как сообщение SAML инкапсулируется в SOAP-пакет, которые принадлежит HTTP-сообщению.

Привязки SAML 1.1

SAML 1.1 определяет лишь одну SOAP-привязку

Привязки SAML 2.0

SAML 2.0 расширяет список привязок, добавляя следующие:

  • SAML SOAP Binding (основан на SOAP 1.1)
  • Reverse SOAP (PAOS) Binding
  • HTTP Redirect (GET) Binding
  • HTTP POST Binding
  • HTTP Artifact Binding
  • SAML URI Binding

Профили SAML

Профили описывают в деталях, как утверждения, протоколы и привязки объединяются для реализации того или иного сценария работы. Наиболее используемым является Web Browser SSO Profile

Профили SAML 1.1

SAML 1.1 определяет два вида Web Browser SSO - Browser/Artifact Profile и Browser/POST Profile

Привязки SAML 2.0

SAML 2.0 расширяет список профилей, добавляя следующие:

  • SSO Profiles
    • Web Browser SSO Profile
    • Enhanced Client or Proxy (ECP) Profile
    • Identity Provider Discovery Profile
    • Single Logout Profile
    • Name Identifier Management Profile
  • Artifact Resolution Profile
  • Assertion Query/Request Profile
  • Name Identifier Mapping Profile
  • SAML Attribute Profiles

Сценарий работы SAML

Основным сценарием работы SAML является Web Browser Single Sign-On. Пользователь, использующий клиентский агент (обычно это веб-браузер) запрашивает ресурсы, защищенные Целевым Приложением. Целевое Приложение, желая знать информацию о пользователе, генерирует аутентификационный запрос к Центру Идентификации через агента. Протокол работает следующим образом:

  1. Пользователь запрашивает ресурс у Целевого приложения. Целевое Приложение проверяет у себя наличие существующего контекста, ассоциированного с данным пользователем. Если такой контекст существует, переход на шаг 8
  2. Целевое Приложение определяет предпочитаемый для пользователя Центр Идентификации и перенаправляет браузер в службе Единого Входа Центра Идентификации.
  3. Браузер отправляет GET-запрос к службе Единого Вхожа на Центре Идентификации.
  4. Служба проверяет запрос и отвечает на него с помощью HTML-формы, содержащей SAMLResponce
  5. Браузер генерирует POST-запрос на службу обработки утверждений Целевого Приложения, содержащий данные из формы
  6. Служба создает контекст, связанный с данным пользователем и перенаправляет его на запрашиваемый ресурс
  7. Браузер пользователя в результате перенаправления снова запрашивает ресурс на Целевом Приложении
  8. Целевое Приложение отвечает браузеру, передавай запрошенный ресурс

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

Спецификация SAML рекомендует различные механизмы защиты:

  • SSL 3.0 или TLS для безопасности уровня транспорта
  • XML Singature и XML Encryption для безопасности уровня сообщений


Голатых А. В. 2013