Какие различия между SAML и OIDC?
В этой статье мы предоставляем обзор протоколов SAML и OIDC, а также их типичных потоков аутентификации. Мы сравниваем характерные различия, плюсы и минусы каждого протокола. Кроме того, на основе потенциальных пользовательских сценариев мы предлагаем рекомендации по выбору между этими двумя протоколами.
OpenID Connect (OIDC) и Security Assertion Markup Language (SAML) — это протоколы аутентификации, которые позволяют поставщикам удостоверений (IdP) реализовывать аутентификацию пользователей и управление доступом. Каждый протокол определяет свой собственный механизм поддержания идентификации аутентифицированных пользователей, которая затем используется для предоставления или запрета доступа к защищенным приложениям.
Что такое SAML и OIDC?
IdP поддерживают базы данных с информацией об идентичности пользователей. Поставщики услуг (SP) полагаются на эту информацию для аутентификации пользователей, иногда позволяя использовать одну аутентификацию для нескольких приложений (единственная точка входа). OIDC и SAML — это стандарты, которые определяют, как эта информация об идентичности пользователей перемещается между этими двумя сторонами. Их конечная цель одна: аутентификация пользователя. Однако фундаментальные подходы, которые они используют для достижения этой цели, различаются.
SAML
Текущая версия стандарта SAML 2.0 существует с 2005 года. Она использует XML для форматирования информации об идентичности, запросов и ответов. XML — это зрелый стандарт для форматирования документов так, чтобы они были понятны как людьми, так и компьютерами. Для передачи или получения информации, закодированной в XML, он использует базовые запросы SOAP или HTTP. В соответствии с протоколом SAML обслуживающее лицо, запрашивающее информацию об идентичности, является поставщиком услуг (SP).
Прежде чем мы введем типичный процесс аутентификации SAML, нам нужно понять элементы, на которых основывается аутентификация SAML. Прежде чем IdP и SP смогут распознать друг друга и завершить процесс аутентификации, им нужно "обменяться" необходимой информацией, что обычно осуществляется через метаданные в формате XML. Обмененной информацией является:
- Публичные ключи, поскольку IdP и SP создают свои собственные пары приватных и публичных к лючей и обмениваются ими для подписи или шифрования коммуникаций. С развитием безопасности сетевых коммуникаций, в большинстве случаев сейчас достаточно только подписи запросов, опуская этап шифрования.
- Конечные точки, используемые SP для отправки запросов на аутентификацию SAML к IdP и для получения заверений SAML в ответ на запросы на аутентификацию от IdP.
- Поддерживаемые форматы атрибутов XML, используемые IdP для передачи необходимой информации о пользователе SP после завершения аутентификации.
Как только IdP и SP учтут вышеперечисленную информацию, они смогут приступать к процессу авторизации (типичный поток аутентификации, инициируемый SP):
OIDC
OIDC — это современный протокол, который улучшает рамки OAuth 2.0. Он использует веб-токены на основе JSON (JWT) для создания полезных данных. JWT, признанный индустриальным стандартом, устанавливает правила для безопасного обмена и представления утверждений между сущностями. Эти утверждения, по сути, зашифрованные данные пользователей, очень важны для проверки и управления идентичностью. OIDC в основном использует повсеместно HTTPS для передачи данных.
Как широко признано, протокол OIDC поддерживает различные потоки, включая поток кода авторизации, неявный поток и гибридный поток. В следующем примере мы рассмотрим наиболее безопасный и типичный из них: поток кода авторизации. Это также поток, используемый Logto.
Отличительные аспекты OIDC и SAML
- Учитывая свое более позднее развитие, OIDC лучше подходит для аутентификации современных приложений по сравнению со старым стандартом SAML.
- Исторически, SAML предшествует OIDC и был интегрирован в множество устоявшихся корпоративных систем.
- В отличие от более громоздких XML-документов SAML, JWT OIDC более компактны и проще в обработке.
- Конфигурация OIDC в целом проще, чем SAML.
- Ключевой особенностью OIDC является наличие "областей", позволяющих IdP управлять различными разрешениями. Приложения могут запрашивать конкретные разрешения у IdP, которые предоставляются после одобрения пользователем. Эта особенность OIDC предоставляет IdP более точный контроль над разрешениями.
Как выбрать между OIDC и SAML?
Оба OIDC и SAML являются надежными системами аутентификации, каждая из которых имеет свои уникальные сильные стороны. Выбор зависит от конкретных требований вашей организации.
- Для быстрой и эффективной развертывания платформы идентификации OIDC предпочтительнее SAML. Реализация OIDC проще, избегая сложной обработки XML, необходимой для синтаксического анализа метаданных, обработки запросов на аутентификацию и анализа заверений SAML.
- OIDC идеально подходит для сред с обширными взаимодействиями API и сложными механизмами разрешений, предлагая более адаптируемый и эффективный контроль над разрешениями и лучший опыт разработки.
- При интеграции с установленными системами на основе SAML, выбор SAML обеспечивает более плавную совмещение систем и уменьшает усилия, необходимые для сопряжения различных протоколов.
Существуют ли хорошие решения на рынке?
Logto, популярное решение для управления идентичностью среди разработчиков, недавно внедрило ф ункциональность Enterprise SSO. Оно поддерживает оба протокола, SAML и OIDC, вместе с интеграциями из коробки для популярных IdP, таких как Google Workspace и Microsoft Entra ID (ранее Azure AD). С помощью Logto вы можете обойти сложность самостоятельной реализации SSO. Несколько простых шагов конфигурации позволяют включить поддержку SSO в вашей системе идентичности, позволяя вам выбрать подходящий протокол для удовлетворения ваших бизнес-потребностей.