В чем разница между OpenID и SAML? - PullRequest
122 голосов
/ 08 октября 2011

В чем разница между OpenID и SAML?

Ответы [ 5 ]

142 голосов
/ 08 октября 2011

Оригинальный OpenID 2.0 против SAML

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

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

Идентификации OpenID легко обойти по сети. В качестве разработчика вы можете просто принять пользователей из разных поставщиков OpenID. С другой стороны, поставщик SAML обычно должен быть заранее закодирован, и вы объединяете свое приложение только с выбранными поставщиками удостоверений. Можно сузить список принятых провайдеров идентификации OpenID, но я думаю, что это противоречит общей концепции OpenID.

С OpenID вы принимаете идентификационные данные, поступающие с произвольных серверов. Кто-то утверждает, что это http://someopenid.provider.com/john.smith. Как вы собираетесь сопоставить это с пользователем в вашей базе данных? Каким-то образом, например, сохраняя эту информацию с новой учетной записью и распознавая ее, когда пользователь снова заходит на ваш сайт. Обратите внимание, что никакой другой информации о пользователе (включая его имя или адрес электронной почты) нельзя доверять!

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

OpenID Connect против SAML

(раздел добавлен 07-2017, расширен 08-2018)

Этот ответ датируется 2011 годом, и тогда OpenID обозначал OpenID 2.0 . Позже, где-то в 2012 году была опубликована OAuth2.0 , а в 2014 году OpenID Connect (более подробная временная шкала здесь ).

Для тех, кто читает это в настоящее время - OpenID Connect - это не тот OpenID, исходный ответ относится к , скорее это набор расширений для OAuth2.0.

Хотя этот ответ может пролить некоторый свет с концептуальной точки зрения, очень краткая версия для тех, кто идет с фоном OAuth2.0, заключается в том, что OpenID Connect на самом деле является OAuth2.0, но добавлен стандартный способ запроса информации о пользователе после получения токена доступа.

Обращаясь к исходному вопросу - в чем главное отличие OpenID Connect (OAuth2.0) от SAML, как строится доверительное отношение между приложением и поставщиком удостоверений:

  • SAML строит доверительные отношения на цифровой подписи, токены SAML, выдаваемые поставщиком удостоверений, являются подписанными XML, приложение проверяет саму подпись и сертификат, который она предоставляет. Информация о пользователе включена в токен SAML, помимо прочего.

  • OAuth2 строит доверительные отношения на прямом HTTP-вызове из приложения к идентификатору. Запрос содержит токен доступа (полученный приложением во время прохождения протокола), а ответ содержит информацию о пользователе.

  • OpenID Connect дополнительно расширяет это, чтобы сделать возможным получение идентификатора без этого дополнительного шага, связанного с вызовом из приложения поставщику идентификационных данных. Идея основана на том факте, что поставщики OpenID Connect на самом деле выдают два токена, access_token, тот же OAuth2.0 выдает и новый, id_token, который является JWT токен, подписанный провайдером идентификации. Приложение может использовать токен идентификатора для установления локального сеанса на основе утверждений, включенных в токен JWT, но токен идентификатора нельзя использовать для дальнейших запросов других служб, такие вызовы сторонним службам должны по-прежнему использовать токен доступа. Тогда вы можете рассматривать OpenID Connect как гибрид между SAML2 (подписанный токен) и OAuth2 (токен доступа), поскольку OpenID Connect включает в себя и то, и другое.

83 голосов
/ 12 октября 2011

OpenID и SAML2 основаны на одной и той же концепции федеративной идентификации. Ниже приведены некоторые из различий между ними ..

  1. SAML2 поддерживает единый выход, но OpenID не
  2. Поставщики услуг SAML2 связаны с поставщиками удостоверений SAML2, но проверяющие стороны OpenID не связаны с поставщиками OpenID. OpenID имеет протокол обнаружения, который динамически обнаруживает соответствующий поставщик OpenID, как только задан OpenID. SAML имеет протокол обнаружения на основе службы обнаружения Identity Provider Протокол.
  3. В SAML2 пользователь подключен к IdP SAML2 - ваш идентификатор SAML2 действителен только для IdP SAML2, который его выдал. Но с OpenID у вас есть свой идентификатор и вы можете сопоставить его с любым провайдером OpenID по вашему желанию.
  4. SAML2 имеет разные привязки, в то время как OpenID имеет только привязку HTTP
  5. SAML2 может быть инициирован либо поставщиком услуг (SP), либо поставщиком удостоверений (IdP). Но OpenID всегда запускается SP.
  6. SAML 2 основан на XML, а OpenID - нет.
  7. Большинство приложений, разработанных за последние 3 года, поддерживали только OpenID Connect.
  8. 92% запросов на аутентификацию 8B +, отправленных Microsoft Azure AD в мае 2018 года, были получены из приложений с поддержкой OpenID Connect.
9 голосов
/ 23 марта 2017

Если оставить в стороне технические детали, так как я довольно поздно для вечеринки, я понимаю, что самая большая разница между SAML и другими стандартами аутентификации (в том числе OpenID) заключается в том, что

SAML требует, чтобы поставщик удостоверений (IDP) и поставщик услуг (SP) заранее знали друг друга, с предварительно настроенной , статической аутентификацией и авторизация. OpenId (+ Connect) не имеет такого требования.

Это важно для ВПЛ, которым нужен полный контроль над доступом к данным. Частью стандарта является настройка того, что предоставляется конкретным SP.

Например, банк может не захотеть, чтобы его пользователи имели доступ к каким-либо услугам, кроме некоторых предопределенных (из-за правил или других строгих правил безопасности).

Это не означает, что IDP OpenId не может применять такое ограничение. Реализация OpenID может контролировать доступ, но это не цель OpenID.

За исключением предопределенной, строгой, статической разницы в управлении доступом, концептуально (не технически), OpenID Connect и SAML аналогичны.

Итог: если вы SP, вы должны поддерживать то, что требуется вашим клиентам:

  1. Если ваш клиент является индивидуальным конечным пользователем (например, с использованием их идентификатора Google), забудьте о SAML. Используйте OpenID Connect.
  2. Если ваш клиент - это банк, который хочет, чтобы его сотрудники использовали вашу услугу и экспортировали только статический список данных, которые он будет предоставлять вашей службе, банк, вероятно, попросит вас поддержать SAML. У банка может быть реализация OpenID с ограничением клиента, и это будет ваш счастливый день:)
2 голосов
/ 21 января 2019

Как SAML, так и OpenID могут выступать в качестве провайдера идентификации (сокращенно IdP), то есть децентрализованного протокола аутентификации (идентификация единого входа).

S ecurity A ssertion M arkup L anguage ( SAML ) - это набор профилей для обмена данными аутентификации и авторизации между доменами безопасности.В модели домена SAML поставщик удостоверений представляет собой особый тип полномочий проверки подлинности.В частности, провайдер идентификации SAML - это системный объект, который выдает утверждения аутентификации в сочетании с профилем единого входа SAML.Проверяющая сторона, которая использует эти утверждения проверки подлинности, называется поставщиком услуг SAML. Источник

O ручка ID C onnect ( OIDC ) - уровень аутентификации навершина OAuth 2.0, структура авторизации.Стандарт контролируется Фондом OpenID.OAuth предназначен для протокола авторизации, а не протокола аутентификации и OpenID, специально разработанного в качестве протокола аутентификации.OIDC использует простые веб-токены JSON (JWT), их проще использовать с помощью JavaScript.

Сценарий использования:

Используйте OAuth, если ваши пользователи могут простохотите войти через Facebook или Twitter.Используйте OpenID, если ваши пользователи - это шейные борода, у которых есть собственные поставщики OpenID, потому что они «не хотят, чтобы кто-то другой обладал их личностью».

enter image description here
Источник

1 голос
/ 28 февраля 2013

@ Prabath: OpenID поддерживает единый вход.

В зависимости от вопроса: OpenID обеспечивает аутентификацию пользователя через централизованных поставщиков удостоверений (IdP) на нескольких доверенных веб-сайтах или проверяющих сторонах (RP). Когда пользователь проходит аутентификацию, он или она может свободно перемещаться между несколькими веб-сайтами с поддержкой OpenID без повторного ввода его учетных данных.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...