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


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

4 101

4 ответа:

оригинальный OpenID 2.0 vs SAML

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

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

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

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

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

OpenID Connect vs SAML

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

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

В настоящее время - , а это набор расширений к OAuth2 0.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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