SAML (Security Assertion Markup Language, язык разметки декларации безопасности) и OAuth (Open Authorization, открытая авторизация) – два наиболее распространенных протокола аутентификации и авторизации пользователей. Оба они помогают управлять идентификацией и доступом с помощью токенов, но они служат разным целям и работают в разных контекстах. В этой статье объясняются ключевые сходства и различия между SAML и OAuth, а также конкретные случаи использования, в которых они чаще всего применяются.
Начало работы: Полезная аналогия
Основное различие между SAML и OAuth заключается в характере токенов, которые они используют. SAML выдает большой XML-токен, имеющий официальный вид. Он имеет печать, нотариально заверен и выглядит как официальный документ. OAuth, наоборот, как бы бросает маленький токен JWT и говорит: «Этот «ключик» даст вам доступ к VIP-секции на несколько часов. Только не потеряйте его».
Вот удобный способ визуализировать эту разницу. SAML – это как попасть на эксклюзивную вечеринку, где человек сомневается, пустят ли его вообще. К счастью, гипотетический друг этого человека подходит к двери и говорит: «Этот человек со мной, он классный», поэтому хозяин впускает его без вопросов, ему можно оставаться столько сколько угодно.
OAuth больше похож на то, что кто-то одалживает свою машину. Они не дают доступ к своему дому, банковскому счету или велосипеду – только к машине. Аналогично, OAuth авторизует определенные действия, не раскрывая всю информацию. Например, когда нужно нажать на «Войдите с помощью Facebook» или «Войдите с помощью Google». Facebook или Google предоставляет приложению, к которому нужно получить доступ, достаточно информации для выполнения работы. Как, например, имя и адрес электронной почты – но не всю историю жизни. В частности, OAuth не делится паролем с приложением. Вместо этого он предоставляет специальный вебтокен, который говорит: «Этому человеку разрешено делать X, Y и Z».
Детальный обзор: SAML (язык разметки декларации безопасности)
Как уже отмечалось, SAML – это как друг, который ручается за то, что желающий попадет на вечеринку. С помощью SAML происходит запрос на доступ не к «вечеринке», а к приложению или сервису, а «друг» – это поставщик идентификационных данных (например, Google или внутренняя система компании), который сообщает сервису, что он уже аутентифицировал человека, поэтому сервис должен удовлетворить его запрос на доступ.
Основной вариант использования
Основным преимуществом SAML является обеспечение единого входа (SSO), что позволяет пользователям аутентифицироваться один раз, а затем получать доступ к нескольким системам без необходимости повторного входа или использования отдельных учетных записей.
Соответственно, SAML идеально подходит для сред, где SSO является критически важным, например, для крупных предприятий в сфере образования, здравоохранения и государственного сектора. Если требуется управление пользователями в нескольких приложениях в разных доменах с упрощенной аутентификацией, не заставляя пользователей входить в систему несколько раз, то SAML является идеальным протоколом.
Как работает SAML
SAML содержит три основных компонента:
- Пользователь – лицо, которое пытается получить доступ
- Поставщик услуг – хост приложения или услуги, к которой пользователь хочет получить доступ
- Поставщик идентификационных данных – организация, которая аутентифицирует пользователя
Эти компоненты взаимодействуют следующим образом:
- Пользователь пытается получить доступ к приложению или сервису.
- Поставщик услуг перенаправляет пользователя к поставщику идентификационных данных для аутентификации.
- Поставщик идентификационных данных проверяет, прошел ли пользователь уже аутентификацию (а если нет, то выполняет шаг аутентификации), и отправляет обратно XML-токен, подтверждающий личность пользователя.
- На основе XML-токенов поставщик услуг предоставляет пользователю доступ к приложению или сервису.
Ключевые особенности SAML
- Федеративная идентификация – позволяет идентификации быть общей для разных доменов
- SSO – обеспечивает бесперебойную аутентификацию в различных системах
- Корпоративное использование – используется преимущественно в средах B2B, где критически важно обеспечить безопасный обмен идентификацией между внутренними и сторонними приложениями
- На основе XML – в значительной степени полагается на XML для коммуникации между сторонами
Преимущества использования SAML
- Уменьшение риска компрометации учетной записи – поскольку пользователям нужен только один набор учетных данных, они с большей вероятностью будут выбирать надежные пароли и смогут их запомнить, не прибегая к рискованным обходным путям вроде их записи.
- Уменьшенная ІТ-нагрузка – меньшее количество сбросов паролей и обращений в службу поддержки, связанных с проблемами входа. Это экономит время как для пользователей, так и для ІТ-персонала.
- Уменьшение риска кражи паролей – пароли не передаются между пользователем и поставщиком услуг.
Детальный обзор: OAuth
Как уже упоминалось, OAuth – это как друг, который позволяет использовать свой автомобиль, но не любые другие вещи, принадлежащие ему. Аналогично, OAuth предоставляет ограниченный набор разрешений на доступ, не сообщая пароль пользователя. Например, OAuth позволяет авторизовать стороннее приложение или веб-сайт для доступа к фотографии пользователя на Facebook, не раскрывая никакой другой информации, которую Facebook хранит о нем, включая учетные данные для входа в систему.
Как работает OAuth
Основными компонентами OAuth являются:
- Клиент – приложение, которое запрашивает доступ к ресурсу от имени пользователя
- Владелец ресурса – пользователь или система, которая владеет запрашиваемыми данными или приложением и может предоставить доступ к ним
- Сервер авторизации – сервер, который выдает токены после согласия пользователя
- Сервер ресурса – API или сервис, который хранит ресурс
Как это происходит:
- Пользователь хочет предоставить клиентскому приложению доступ к определенным данным о нем, которые хранятся у владельца ресурса.
- Клиент запрашивает авторизацию у соответствующего сервера авторизации.
- Сервер авторизации аутентифицирует клиента, получает согласие от владельца ресурса на доступ и отправляет токен доступа клиенту.
- Используя токен доступа, клиент запрашивает доступ к нужному ресурсу у сервера ресурсов.
Варианты использования OAuth
OAuth лучше всего подходит для приложений, ориентированных на потребителя, а также для ситуаций, когда сторонним приложениям нужен ограниченный доступ к данным пользователя. Например, если пользователь создает мобильное приложение, которому нужен доступ к данным из внешнего API, OAuth предоставляет безопасный и стандартизированный способ предоставить этот доступ без компрометации учетных данных пользователя.
Ключевые особенности OAuth
- Ориентирован на авторизацию – предназначен для предоставления доступа сторонним пользователям к ресурсам без совместного использования учетных данных
- API-ориентированный – широко используется для защиты доступа к API, особенно в мобильных, веб и облачных приложениях
- Базированный на токенах – использует токены доступа (обычно в формате JSON), чтобы разрешить или запретить доступ
- Ориентированный на потребителя – обычно используется в B2C приложениях, таких как Facebook и Google.
Преимущества использования OAuth
- Сниженный риск взлома – OAuth использует токены, которые предоставляют доступ только к определенным ресурсам на ограниченное время.
- Гибкость – OAuth можно использовать с мобильными устройствами, настольными компьютерами, веб-браузерами и устройствами IoT.
- Повышение уровня удовлетворенности клиентов – организации могут использовать доверенные сторонние системы авторизации, такие как Google или Facebook, для предоставления доступа к собственным ресурсам, что упрощает работу с клиентами.
Сравнительный анализ: SAML против OAuth
Сходство между SAML и OAuth
- И OAuth, и SAML обеспечивают единый вход, чтобы пользователи могли аутентифицироваться один раз и получить доступ к нескольким сервисам.
- Оба протокола позволяют обмениваться идентификационной информацией между различными системами, приложениями или организациями.
- Оба протокола повышают удобство и безопасность пользователей, устраняя необходимость делиться или хранить учетные данные в сторонних сервисах.
Различия между SAML и OAuth
- OAuth использует простые токены на основе JSON, тогда как SAML использует многословные токены на основе XML.
- OAuth обычно используется для потребительских веб-приложений и мобильных приложений, тогда как SAML в основном используется для SSO и федеративной идентификации на корпоративном уровне.
- Токены OAuth используются для авторизации доступа к API, в то время как утверждения SAML используются для установления аутентификации между системами.
Параллельное сравнение
| Особенность | SAML | OAuth |
| Предназначение | Аутентификация | Беспарольная авторизация |
| Акцент | Единый доступ (SSO) | Доступ к API |
| Формат токенов | XML | JSON |
| Ключевой случай использования | Корпоративные и B2B среды | Потребительские веб и мобильные приложения |
| Сложность | Более сложный | Более лёгкий и гибкий |
Сосуществование протоколов
SAML и OAuth могут работать вместе в системах, требующих как аутентификации, так и авторизации. Например, сотрудник может войти в корпоративную систему с помощью SAML, но затем система выдает токен доступа OAuth, чтобы позволить ему взаимодействовать с внешними сервисами или API, такими как Microsoft Graph или Google Drive.
Проблемы безопасности и лучшие практики
Кража токенов и повторные атаки
Поскольку токены OAuth обычно долговременные, они уязвимы к перехвату злоумышленниками, которые могут использовать их для доступа к критически важным данным или системам. Например, токены OAuth могут быть перехвачены с помощью таких методов, как атаки типа Man-in-the-Middle (метод киберпреступления, при котором злоумышленник тайно перехватывает и/или модифицирует данные, передаваемые между пользователем и сервером), или похищены из недостаточно защищенного хранилища.
Чтобы минимизировать эти риски, организации могут использовать кратковременные токены доступа и всегда использовать HTTPS, который обеспечивает шифрование TLS.
XML Signature Wrapping (XSW)
XML-подпись – это цифровая подпись, которая добавляется к XML-документу, например, токен SAML. Действительная подпись указывает на то, что документ происходит из надежного источника и не был подделан. Злоумышленники могут использовать этот механизм проверки, вставляя вредоносные данные в SAML-токен, сохраняя при этом действительную подпись.
Чтобы противостоять этим атакам, организации могут требовать надежные цифровые подписи и шифровать токены SAML, чтобы защитить их целостность и конфиденциальность.
Будущие тенденции и развитие
Организации быстро отходят от традиционной аутентификации с помощью пароля в пользу таких методов, как многофакторная аутентификация (MFA) и беспарольные варианты, такие как passkeys. В более широком смысле, они принимают модели безопасности Zero Trust, которые подчеркивают необходимость «никогда не доверять, всегда проверять». Кроме того, они используют искусственный интеллект (ИИ) и машинное обучение (ML, machine learning), чтобы расширить свои возможности обнаружения угроз.
Вывод
Хотя SAML и OAuth играют важную роль в управлении доступом к приложениям и данным, они решают разные задачи: SAML фокусируется на подтверждении личности пользователя и обычно используется для SSO в корпоративных средах, тогда как OAuth предназначен для детализированной беспарольной авторизации для безопасного доступа к API и ресурсам в веб и мобильных приложениях. Оба протокола поддержат усилия по созданию более плавного и простого пользовательского интерфейса, сохраняя при этом высокий уровень безопасности.







