stringtranslate.com

Язык разметки утверждений безопасности

Язык разметки утверждений безопасности ( SAML , произносится как СЭМ-ЭЛ , / ˈsæməl / ) [ 1]открытый стандарт для обмена данными аутентификации и авторизации между сторонами, в частности, между поставщиком удостоверений и поставщиком услуг . SAML — это основанный на XML язык разметки для утверждений безопасности (заявлений, которые поставщики услуг используют для принятия решений по контролю доступа). SAML также:

Важным вариантом использования, к которому обращается SAML, является единый вход в веб-браузер (SSO). Единый вход относительно легко реализовать в домене безопасности (например, с помощью файлов cookie ), но расширение SSO на домены безопасности сложнее и привело к распространению несовместимых фирменных технологий. Профиль SSO веб-браузера SAML был определен и стандартизирован для содействия совместимости. [2]

Обзор

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

В основе утверждения SAML лежит субъект (принципал в контексте определенного домена безопасности), о котором что-то утверждается. Субъектом обычно (но не обязательно) является человек. Как и в Техническом обзоре SAML 2.0 [3] , термины субъект и принципал используются в этом документе взаимозаменяемо.

Перед доставкой утверждения на основе субъекта от IdP к SP, IdP может запросить некоторую информацию от принципала, например имя пользователя и пароль, чтобы аутентифицировать принципала. SAML определяет содержание утверждения, которое передается от IdP к SP. В SAML один поставщик удостоверений может предоставлять утверждения SAML многим поставщикам услуг. Аналогично, один SP может полагаться на утверждения от многих независимых IdP и доверять им. [ необходима цитата ]

SAML не определяет метод аутентификации у поставщика удостоверений. IdP может использовать имя пользователя и пароль или какую-либо другую форму аутентификации, включая многофакторную аутентификацию . Служба каталогов, такая как RADIUS , LDAP или Active Directory , которая позволяет пользователям входить в систему с именем пользователя и паролем, является типичным источником токенов аутентификации у поставщика удостоверений. [4] Популярные службы социальных сетей в Интернете также предоставляют службы удостоверений, которые теоретически могут использоваться для поддержки обменов SAML.

История

История SAML (2002–2005)

Технический комитет служб безопасности (SSTC) Организации по развитию стандартов структурированной информации (OASIS ), который впервые собрался в январе 2001 года, был учрежден «для определения структуры XML для обмена информацией об аутентификации и авторизации». [5] С этой целью в течение первых двух месяцев того года в SSTC была передана следующая интеллектуальная собственность:

Основываясь на этих первоначальных вкладах, в ноябре 2002 года OASIS объявил спецификацию Security Assertion Markup Language (SAML) 1.0 в качестве стандарта OASIS. [6]

Тем временем Liberty Alliance , крупный консорциум компаний, некоммерческих и государственных организаций, предложил расширение стандарта SAML под названием Liberty Identity Federation Framework (ID-FF). [7] Как и его предшественник SAML, Liberty ID-FF предложил стандартизированную, кросс-доменную, веб-ориентированную, единую структуру входа. Кроме того, Liberty описала круг доверия , где каждому участвующему домену доверяют точно документировать процессы, используемые для идентификации пользователя, тип используемой системы аутентификации и любые политики, связанные с полученными учетными данными аутентификации. Другие члены круга доверия затем могли бы изучить эти политики, чтобы определить, доверять ли такой информации. [8]

Пока Liberty разрабатывала ID-FF, SSTC начала работу над небольшим обновлением стандарта SAML. Полученная спецификация SAML 1.1 была ратифицирована SSTC в сентябре 2003 года. Затем, в ноябре того же года, Liberty внесла ID-FF 1.2 в OASIS, тем самым посеяв семена для следующей основной версии SAML. В марте 2005 года SAML 2.0 был объявлен стандартом OASIS. SAML 2.0 представляет собой конвергенцию Liberty ID-FF и фирменных расширений, предоставленных проектом Shibboleth , а также ранних версий самого SAML. Большинство реализаций SAML поддерживают v2.0, в то время как многие все еще поддерживают v1.1 для обратной совместимости. К январю 2008 года развертывания SAML 2.0 стали обычным явлением в правительственных, высших учебных заведениях и коммерческих предприятиях по всему миру. [8]

Версии

Начиная с версии 1.0, SAML претерпел одну незначительную и одну существенную ревизию.

В сентябре 2003 года Альянс Свободы представил свою структуру Федерации идентичности (ID-FF) в OASIS SSTC:

Версии 1.0 и 1.1 SAML похожи, хотя и существуют небольшие различия., [9] Однако различия между SAML 2.0 и SAML 1.1 существенны. Хотя оба стандарта рассматривают один и тот же вариант использования, SAML 2.0 несовместим со своим предшественником.

Хотя ID-FF 1.2 был внесен в OASIS как основа SAML 2.0, между SAML 2.0 и ID-FF 1.2 есть некоторые важные различия. В частности, эти две спецификации, несмотря на их общие корни, несовместимы. [8]

Дизайн

SAML построен на ряде существующих стандартов:

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

Привязка SAML определяет, как запросы и ответы SAML отображаются на стандартные протоколы обмена сообщениями или связи. Важной (синхронной) привязкой является привязка SAML SOAP.

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

Утверждения

Утверждение SAML содержит пакет информации о безопасности:

<saml:Утверждение ...> .. </saml:Утверждение>

Грубо говоря, полагающаяся сторона интерпретирует утверждение следующим образом:

Утверждение A было выдано в момент времени t эмитентом R в отношении субъекта S при условии, что условия C действительны.

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

  1. Заявления об аутентификации
  2. Атрибутивные заявления
  3. Заявления о решениях по авторизации

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

Атрибутное утверждение утверждает, что принципал связан с определенными атрибутами. Атрибут — это просто пара имя-значение . Доверяющие стороны используют атрибуты для принятия решений по контролю доступа.

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

Протоколы

Ответ протокола SAML

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

Самый важный тип запроса протокола SAML называется запросом . Поставщик услуг делает запрос напрямую поставщику удостоверений по защищенному обратному каналу. Таким образом, сообщения запроса обычно привязаны к SOAP.

В соответствии с тремя типами утверждений существует три типа запросов SAML:

  1. Запрос аутентификации
  2. Запрос атрибута
  3. Запрос решения об авторизации

Результатом запроса атрибута является ответ SAML, содержащий утверждение, которое само содержит утверждение атрибута. Пример запроса/ответа атрибута см . в теме SAML 2.0.

Помимо запросов, SAML 1.1 не определяет никаких других протоколов.

SAML 2.0 значительно расширяет понятие протокола . Следующие протоколы подробно описаны в SAML 2.0 Core:

Большинство из этих протоколов являются новыми в SAML 2.0 .

Переплеты

SAML через SOAP через HTTP

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

SAML 1.1 определяет только одну привязку, SAML SOAP Binding. Помимо SOAP, в SAML 1.1 Web Browser SSO неявно присутствуют предшественники HTTP POST Binding, HTTP Redirect Binding и HTTP Artifact Binding. Однако они не определены явно и используются только в сочетании с SAML 1.1 Web Browser SSO. Понятие привязки не было полностью разработано до SAML 2.0.

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

Такая реорганизация обеспечивает колоссальную гибкость: если взять в качестве примера только единый вход веб-браузера, поставщик услуг может выбрать одну из четырех привязок (HTTP Redirect, HTTP POST и две разновидности HTTP Artifact), тогда как поставщик удостоверений имеет три варианта привязки (HTTP POST плюс две формы HTTP Artifact), что в общей сложности дает двенадцать возможных вариантов развертывания профиля единого входа веб-браузера SAML 2.0.

Профили

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

SAML 1.1 определяет две формы единого входа веб-браузера, профиль браузера/артефакта и профиль браузера/POST. Последний передает утверждения по значению, тогда как браузер/артефакт передает утверждения по ссылке . Как следствие, браузер/артефакт требует обмена SAML по обратному каналу через SOAP. В SAML 1.1 все потоки начинаются с запроса у поставщика удостоверений для простоты. Были предложены фирменные расширения для базового потока, инициированного IdP ( например, Shibboleth ).

Профиль единого входа веб-браузера был полностью переработан для SAML 2.0. Концептуально, SAML 1.1 Browser/Artifact и Browser/POST являются особыми случаями единого входа веб-браузера SAML 2.0. Последний значительно более гибок, чем его аналог SAML 1.1, благодаря новому дизайну привязки "plug-and-play" SAML 2.0. В отличие от предыдущих версий, потоки браузера SAML 2.0 начинаются с запроса у поставщика услуг. Это обеспечивает большую гибкость, но потоки, инициированные поставщиком услуг, естественным образом приводят к так называемой проблеме обнаружения поставщика удостоверений , которая сегодня является предметом многих исследований. Помимо единого входа веб-браузера, SAML 2.0 вводит множество новых профилей:

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

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

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

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

Использовать

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

Единый вход с использованием SAML в веб-браузере
1. Запросить целевой ресурс у SP (только SAML 2.0)
Принципал (через пользовательский агент HTTPs) запрашивает целевой ресурс у поставщика услуг:
https://sp.example.com/myresource
Поставщик услуг выполняет проверку безопасности от имени целевого ресурса. Если допустимый контекст безопасности у поставщика услуг уже существует, пропустите шаги 2–7.
2. Перенаправление в службу единого входа (SSO) на IdP (только SAML 2.0)
Поставщик услуг определяет предпочтительного поставщика удостоверений пользователя (неуказанным способом) и перенаправляет агента пользователя в службу единого входа (SSO) у поставщика удостоверений:
https://idp.example.org/SAML2/SSO/Redirect?SAMLRequest=request
Значение параметра SAMLRequest(обозначенное заполнителем requestвыше) представляет собой кодировку Base64 сжатого <samlp:AuthnRequest> элемента.
3. Запросите услугу SSO у IdP (только SAML 2.0)
Пользовательский агент отправляет запрос GET в службу SSO по URL из шага 2. Служба SSO обрабатывает AuthnRequest(отправлено через SAMLRequestпараметр запроса URL) и выполняет проверку безопасности. Если у пользователя нет допустимого контекста безопасности, поставщик идентификации идентифицирует пользователя (подробности опущены).
4. Ответьте с помощью формы XHTML
Служба SSO проверяет запрос и отвечает документом, содержащим форму XHTML:
 < метод формы  = "post" действие = "https://sp.example.com/SAML2/SSO/POST" ... > < тип ввода = "скрытый" имя = "SAMLResponse" значение = "ответ" />        ... < тип ввода  = "отправить" значение = "Отправить" /> </ форма >   
Значение элемента SAMLResponse(обозначенное заполнителем responseвыше) представляет собой кодировку элемента base64 <samlp:Response>.
5. Запросите услугу Assertion Consumer Service в SP
Пользовательский агент отправляет запрос POST в службу потребителя утверждений у поставщика услуг. Значение параметра SAMLResponseберется из формы XHTML на шаге 4.
6. Перенаправление на целевой ресурс
Служба потребителя утверждений обрабатывает ответ, создает контекст безопасности у поставщика услуг и перенаправляет агента пользователя на целевой ресурс.
7. Повторно запросите целевой ресурс у SP.
Пользовательский агент запрашивает целевой ресурс у поставщика услуг (снова):
https://sp.example.com/myresource
8. Ответьте запрошенным ресурсом
Поскольку контекст безопасности существует, поставщик услуг возвращает ресурс пользовательскому агенту.

В SAML 1.1 поток начинается с запроса к службе межсайтовой передачи поставщика удостоверений на шаге 3.

В примере потока выше все изображенные обмены являются обменами по фронтальному каналу , то есть HTTP-агент пользователя (браузер) взаимодействует с сущностью SAML на каждом шаге. В частности, нет никаких обменов по обратному каналу или прямых коммуникаций между поставщиком услуг и поставщиком удостоверений. Обмены по фронтальному каналу приводят к простым потокам протоколов, где все сообщения передаются по значению с использованием простой привязки HTTP (GET или POST). Действительно, поток, описанный в предыдущем разделе, иногда называют профилем SSO облегченного веб-браузера .

В качестве альтернативы, для повышения безопасности или конфиденциальности, сообщения могут передаваться по ссылке . Например, поставщик удостоверений может предоставить ссылку на утверждение SAML (называемое артефактом ) вместо передачи утверждения напрямую через пользовательский агент. Впоследствии поставщик услуг запрашивает фактическое утверждение через обратный канал. Такой обмен по обратному каналу определяется как обмен сообщениями SOAP (SAML через SOAP через HTTP). В общем случае любой обмен SAML по защищенному обратному каналу осуществляется как обмен сообщениями SOAP.

На обратном канале SAML указывает использование SOAP 1.1. Однако использование SOAP в качестве механизма привязки является необязательным. Любое конкретное развертывание SAML выберет любые подходящие привязки.

Смотрите также

Ссылки

  1. ^ "Что такое SAML? - Определение слова из компьютерного словаря Webopedia". Webopedia.com. 25 июня 2002 г. Получено 21 сентября 2013 г.
  2. ^ Дж. Хьюз и др. Профили для языка разметки утверждений безопасности OASIS (SAML) 2.0. Стандарт OASIS, март 2005 г. Идентификатор документа: saml-profiles-2.0-os http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf (последний рабочий проект этой спецификации с исправлениями см.: https://www.oasis-open.org/committees/download.php/56782/sstc-saml-profiles-errata-2.0-wd-07.pdf)
  3. ^ Н. Рагузис и др. Security Assertion Markup Language (SAML) 2.0 Technical Overview. Проект 02 комитета OASIS, март 2008 г. Идентификатор документа: sstc-saml-tech-overview-2.0-cd-02 https://wiki.oasis-open.org/security/Saml2TechOverview
  4. ^ "SAML: Секрет централизованного управления идентификацией". InformationWeek.com. 2004-11-23 . Получено 2014-05-23 .
  5. ^ Малер, Ив (9 января 2001 г.). «Протокол заседания от 9 января 2001 г. Службы безопасности TC Telecon». security-services at oasis-open (список рассылки) . Получено 7 апреля 2011 г.
  6. ^ "История SAML". SAMLXML.org. 2007-12-05 . Получено 2014-05-22 .
  7. ^ Конор П. Кэхилл. "Обзор технологий Liberty" (PDF) . Liberty Alliance . Получено 25 августа 2017 г.
  8. ^ abc "Google, NTT и US GSA развертывают SAML 2.0 для управления цифровой идентификацией". Oracle Journal. 2008-01-29 . Получено 2014-05-22 .
  9. ^ P. Mishra; et al. (май 2003 г.), Различия между OASIS Security Assertion Markup Language (SAML) V1.1 и V1.0 (PDF) , OASIS, sstc-saml-diff-1.1-draft-01 , получено 7 апреля 2011 г.
  10. ^ "Как взломать XML-шифрование" (PDF) . Ассоциация вычислительной техники . 19 октября 2011 г. . Получено 31 октября 2014 г. .
  11. ^ "RUB Researchers break W3C standard". Рурский университет в Бохуме . 19 октября 2011 г. Архивировано из оригинала 24.11.2011 . Получено 29 июня 2012 г.
  12. ^ МЫЛО 1.1

Внешние ссылки