SAML против федеративного входа с OAuth - PullRequest
94 голосов
/ 15 мая 2010

В чем разница между SAML и федеративным входом в систему с OAuth? Какое решение имеет больше смысла, если компания хочет использовать стороннее веб-приложение, а также хочет иметь единый вход и быть центром аутентификации?

Ответы [ 7 ]

124 голосов
/ 04 августа 2011

Они решают разные проблемы.

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

OAuth больше о делегировании доступа к чему-либо. Вы в основном позволяете кому-то «действовать» как вы. Чаще всего он используется для предоставления доступа к API, которые могут что-то делать от вашего имени.

Это две совершенно разные вещи.


Некоторые примеры, которые могут помочь.

О, подумай о твиттере. Допустим, вы используете Google Buzz и Twitter, и вы хотите написать приложение, которое позволит синхронизировать их. Вы можете установить доверие между вашим приложением и Twitter. Когда вы впервые связываете приложение с твиттером, вы делаете классический запрос на вход в твиттер, а затем появляется окно подтверждения с вопросом «Хотите ли вы предоставить доступ к« имени вашего приложения »?» как только вы нажмете «да», доверие будет установлено, и теперь ваше приложение может действовать как вы в Twitter. Он может читать ваши сообщения, а также создавать новые.

SAML - для SAML подумайте о некоем «соглашении» между двумя несвязанными системами членства. В нашем случае мы можем использовать US Airways и Hertz. Не существует общего набора учетных данных, которые могут перенести вас с одного сайта на другой, но предположим, что Hertz хочет предложить «сделку» US Airways. (Конечно, я знаю, что это крайний пример, но потерпите меня). После покупки рейса они предложат бесплатный прокат автомобиля своим членам. US Airways и Hertz установили бы некоторую форму доверия и способ идентификации пользователя. В нашем случае нашим «федеративным идентификатором» будет адрес электронной почты, и это будет один из способов доверия, которым Герц доверяет, чтобы поставщик идентификационных данных US Airways предоставил токен точным и безопасным образом. После бронирования рейса поставщик идентификационных данных US Airways сгенерирует токен и укажет способ аутентификации пользователя, а также «атрибуты» о человеке, в нашем случае наиболее важным атрибутом будет его уровень статуса в US Airways. После того, как токен заполнен, он передает его через какой-либо тип ссылки или кодируется в URL-адресе, а когда мы добираемся до Герца, он смотрит на токен, проверяет его и теперь может предоставить бесплатный прокатный автомобиль.

Проблема с этим примером SAML в том, что это только один специализированный вариант из многих. SAML является стандартом, и его можно реализовать почти слишком многими способами.


В качестве альтернативы, если вас не волнует авторизация, вы можете почти утверждать, что подтверждение аутентификации через SAML и OpenID .

36 голосов
/ 14 июня 2014

Взгляните на это простое объяснение , резюмированное здесь:

Многие люди не понимают различий между SAML и OpenID. и OAuth, но на самом деле все очень просто. Хотя есть некоторые перекрытие, вот очень простой способ отличить три.

OpenID - единый вход для потребителей

SAML - единый вход для корпоративных пользователей

OAuth - API-авторизация между приложениями

Для людей, которым комфортно работать с шаблонами проектирования ОО, я думаю, что есть хорошее следствие шаблонов оберток . Представьте себе Фасад , Декоратор и Прокси . По сути, это все одно и то же, они просто обертки ... Разница заключается в намерении каждого шаблона .

Точно так же SAML, OAuth и OpenID все способствуют различным намерениям через общий базовый механизм , который для некоторых является перенаправлением к поставщику услуг / органу идентификации приватное взаимодействие с последующим перенаправлением на исходное стороннее приложение.

Оглядываясь в сети, вы обнаруживаете совпадение между возможностями протоколов. Аутентификация через OAuth вполне разумна. SSO поверх OAuth может не иметь большого смысла, поскольку SAML и OpenID специально ориентированы на федеративную идентификацию.

К самому вопросу в корпоративном контексте SAML звучит более подходящим, чем OAuth для SSO . Держу пари, если вы посмотрите на сторонние приложения, которые вы хотите интегрировать с вашими корпоративными удостоверениями, вы обнаружите, что они уже разработаны для интеграции с SAML / LDAP / Radius и т. Д. IMO OAuth больше подходит для интернет-взаимодействия между приложениями или, возможно, приложениями, составляющими сервис-ориентированную архитектуру, в большой корпоративной среде.

Правила авторизации могут быть указаны в корпоративной среде и другими способами. LDAP является распространенным инструментом для этого. Организация пользователей в группы и объединение привилегий приложений против членства в группах является широко распространенным подходом. Точно так же LDAP также может использоваться для аутентификации. Active Directory - отличный пример, хотя я предпочитаю OpenLDAP.

2 голосов
/ 03 июля 2018

найдено Хорошая статья здесь

enter image description here

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

Пример : пользователь (основной участник) проходит проверку подлинности на веб-сайте бронирования авиабилетов, AirFlyer (поставщик удостоверений), для которого настроен единый вход через SAML с веб-сайтом бронирования трансферов, Shuttler (поставщик услуг). После проверки подлинности на Flyer, пользователь может заказать челноки на Shuttler, не требуя проверки подлинности

OAuth (Open Authorization) - это стандарт для авторизации ресурсов. Это не касается аутентификации.

Пример : мобильное приложение для обмена фотографиями (потребитель OAuth), которое позволяет пользователям импортировать фотографии из своей учетной записи Instagram (поставщик OAuth), которое отправляет временный токен доступа или ключ к приложению для обмена фотографиями, срок действия которого истекает через некоторое время. ч.

2 голосов
/ 14 марта 2014

Они обрабатывают тонкий случай использования

  • SAML - передача учетных данных (например, SSO) пользователя различным поставщикам услуг (например, веб или веб-служба)
  • OAuth - Пользователь, делегирующий приложение для доступа к ресурсу от имени его / ее
2 голосов
/ 25 августа 2010

SAML имеет множество «профилей», позволяющих другим пользователям «входить» на ваш сайт. SAML-P или SAML Passive очень распространены и довольно просты в настройке. WS-Trust аналогичен и допускает федерацию среди веб-сайтов.

OAuth предназначен для авторизации. Вы можете прочитать больше здесь:

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

1 голос
/ 15 августа 2016

SAML для аутентификации - в основном используется в сценарии Single Sign On . OAuth для авторизации представлений ресурсов.

JSON Web Token (JWT) является альтернативой для SAML XML-токенов. JWT можно использовать с OAuth

Хорошая справка: SAML против OAuth: какую мне использовать?

0 голосов
/ 14 февраля 2018

Термины федерация действительно означают идентификаторы соединений между системами. Это связано с SSO, но они не совсем такие же. Я нашел этот пост в блоге действительно полезным с точки зрения того, что на самом деле означает федерация.

...