SAML vs федеративный вход с OAuth


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

7 87

7 ответов:

Они решают разные задачи.

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

OAuth это больше о делегировании доступа к чему-то. Вы в основном позволяете кому-то" действовать " как вы. Его наиболее часто используется для предоставления доступа api, которые могут что-то сделать от вашего имени.

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


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

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

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

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


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

посмотреть Это простое объяснение подведены здесь:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SAML для аутентификации-в основном используется в Единый Вход сценарий. OAuth предназначен для авторизации представлений ресурсов.

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

хорошая ссылка SAML против OAuth: какой из них я должен использовать?

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

нашел хорошую статью здесь

enter image description here

SAML (Security Assertion Markup Language) - это набор стандартов для достижения единого входа (SSO), Федерации и управления идентификацией.

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

OAuth (Open Authorization) является стандартом для авторизации ресурсов. Он не имеет дело с аутентификацией.

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