SAML (Security Assertion Markup Language) — язык разметки декларации безопасности, играющий ключевую роль в обеспечении сетевой безопасности. Он позволяет получить доступ к нескольким приложениям, используя один набор учетных данных для авторизации. Это достигается путем обмена аутентификационной информацией в определенном формате между участниками, например, между системой управления доступом и веб-приложением. Таким образом, можно входить в разные системы под одним и тем же логином и паролем, управляемыми из единого центра.
SAML: Подробное рассмотрение
SAML — открытый стандарт обмена данными аутентификации, основанный на языке XML. Веб-приложение использует SAML для передачи аутентификационных данных между сторонами процесса: системой управления доступом и провайдером услуг (системой, в которую пользователь хочет войти). Стандарт появился для упрощения аутентификации пользователей, которым нужен доступ к нескольким независимым веб-приложениям в разных доменах.
Важно понимать разницу между аутентификацией и авторизацией. Аутентификация определяет, действительно ли пользователь является тем, за кого себя выдает. Авторизация же определяет, какие действия пользователь может выполнять в системе, каковы его права доступа. SAML решает задачу аутентификации, избегая необходимости хранения паролей непосредственно в каждом приложении.
Как работает SAML
SAML работает путем обмена пользовательской информацией (логины, состояние аутентификации, идентификаторы и другие данные) между системой управления доступом и провайдером услуг. Когда пользователь запрашивает доступ к сайту, SAML передает аутентификационные данные провайдеру услуг, который затем предоставляет доступ пользователю.
Часто SAML используется в корпоративных средах с множеством различных систем. В таких случаях появляется Identity Provider (IdP) — сервис, управляющий общей аутентификацией всех сервисов. IdP связан со всеми корпоративными системами и, получив запрос на авторизацию, запрашивает у пользователя учетные данные. При успешной проверке IdP формирует ответ (в формате SAML), подписывает его цифровой подписью и отправляет в запрашиваемую систему. Получив этот ответ, система предоставляет пользователю доступ.
SAML и SSO (Single Sign-On)
SSO — технология единого входа, использующая SAML в качестве инструмента. Она позволяет пользователям авторизоваться сразу в нескольких приложениях, вводя логин и пароль только один раз.
Разница между SAML и SSO: SAML — открытый стандарт для обмена данными аутентификации, а SSO — концепция, позволяющая пользователю войти в систему один раз и получить доступ ко всем ресурсам без повторной аутентификации. SAML SSO описывает сценарий, где протокол SAML используется для реализации единого входа.
SAML и OAuth 2.0
SAML и OAuth 2.0 — протоколы, используемые для предоставления доступа. Основное отличие: SAML используется для аутентификации, а OAuth 2.0 — для авторизации. В аналогии с авиаперелетом, паспорт — это SAML (подтверждение личности), а билет — OAuth 2.0 (токен, определяющий права доступа).
SAML — мощный инструмент для обеспечения безопасности и упрощения доступа к многочисленным приложениям. Для полного понимания рекомендуется изучить дополнительные материалы о SAML, SSO, OAuth 2.0 и OpenID Connect. Эти протоколы могут комбинироваться, и их различия лежат в цели использования, типе утверждений, сценарии использования и формате данных.