SAML vs. OAuth: Which One Should I Use?

Jako część projektu PicketLink (http://www.picketlink.org ), dostaję pytania dotyczące różnych aspektów bezpieczeństwa, zaufania i zarządzania tożsamością.

Jednym z podstawowych pytań, które dostaję jest – „Jaka jest różnica pomiędzy SAML i OAuth?”. Mam nadzieję, że mogę wykorzystać ten artykuł do przedstawienia moich przemyśleń na ten ważny temat. Postaram się również wskazać różne przypadki użycia, w których każdy z nich jest preferowany.

Jaka jest wielka różnica pomiędzy SAML i OAuth?

Informacyjnie moimi słowami:

SAML (Security Assertion Markup Language) jest standardem parasolowym, który obejmuje profile, wiązania i konstrukcje do osiągnięcia Single Sign On (SSO), Federacji i Zarządzania Tożsamością.

OAuth (Open Authorization) jest standardem do autoryzacji zasobów. Nie zajmuje się uwierzytelnianiem.

Dla formalnych definicji,

Zgodnie ze stroną wikipedii na temat SAML:

Security Assertion Markup Language to oparty na XML otwarty standardowy format danych do wymiany danych uwierzytelniania i autoryzacji pomiędzy stronami, w szczególności pomiędzy dostawcą tożsamości a dostawcą usług.

Według OAuth.net

Otwarty protokół umożliwiający bezpieczną autoryzację w prostej i standardowej metodzie z poziomu aplikacji internetowych, mobilnych i desktopowych.

Jakie są inne różnice?

1. Format tokena lub wiadomości<

SAML wykorzystuje XML jako konstrukcję danych lub format tokena.

OAuth tokeny mogą być binarne, JSON lub SAML jak wyjaśniono w OAuth Bearer Tokens.

2. Transport

SAML posiada wiązania, które używają HTTP takie jak HTTP POST Binding, HTTP REDIRECT Binding itp.

Ale nie ma ograniczeń co do formatu transportu. Możesz użyć SOAP lub JMS lub dowolnego transportu, którego chcesz użyć do wysłania tokenów SAML lub wiadomości.

OAuth używa wyłącznie HTTP.

3. Zakres

Mimo że SAML został zaprojektowany do otwartego zastosowania, jest on zazwyczaj używany w scenariuszach Enterprise SSO –

  • w obrębie przedsiębiorstwa lub
  • przedsiębiorstwa do partnera lub
  • przedsiębiorstwa do chmury.

OAuth został zaprojektowany do użytku z aplikacjami w Internecie, głównie do delegowanej autoryzacji zasobów internetowych. OAuth został zaprojektowany dla Skali Internetowej.

Których wersji standardów powinienem użyć?

SAML v2.0 i OAuth v2.0 są najnowszymi wersjami standardów.

Kiedy powinienem użyć Których?

  • Jeśli Twój przypadek użycia obejmuje SSO (gdy przynajmniej jeden aktor lub uczestnik jest przedsiębiorstwem), użyj SAML.
  • Jeśli Twój przypadek użycia obejmuje zapewnienie dostępu (tymczasowego lub stałego) do zasobów (takich jak konta, zdjęcia, pliki itp.), użyj OAuth.
  • Jeśli potrzebujesz zapewnić dostęp do aplikacji partnera lub klienta do swojego portalu, użyj SAML.
  • Jeśli Twój przypadek użycia wymaga scentralizowanego źródła tożsamości, użyj SAML (Identity provider).
  • Jeśli Twój przypadek użycia dotyczy urządzeń mobilnych, wtedy OAuth2 z jakąś formą Bearer Tokens jest odpowiedni.

Chcę użyć zarówno SAML jak i OAuth. Can I?

Możesz użyć SAML do uwierzytelnienia. Gdy masz już token/oświadczenie SAML, możesz użyć go jako tokena okaziciela OAuth w nagłówku nagłówka okaziciela HTTP, aby uzyskać dostęp do chronionych zasobów.

Ostatnio mieliśmy wymóg od społeczności PicketLink wzdłuż tych linii.

https://docs.jboss.org/author/display/PLINK/REST+Service+to+convert+SAML+Tokens+Into+OAuth+Tokens

Jaka jest alternatywa dla SAML XML Token w świecie OAuth?

Spójrz na JSON Web Token (JWT): https://datatracker.ietf.org/doc/draft-ietf-oauth-json-web-token/

JWT Bearer Tokens mogą być używane z OAuth2.

W fundacji OpenID trwają prace nad OpenID Connect. http://openid.net/specs/openid-connect-basic-1_0-22.html

OpenID Connect to warstwa tożsamości na szczycie OAuth2, która może dostarczać informacje o profilu użytkowników z serwerów autoryzacyjnych (na podstawie uwierzytelnienia, które wykonała).

  • Projekt open source PicketLink na stronie http://www.picketlink.org
  • Teoria OAuth na stronie PicketLink.
  • IETF Web Authorization Working Group (http://datatracker.ietf.org/wg/oauth/charter/)
  • IETF OAuth2 (http://datatracker.ietf.org/doc/rfc6749/)
  • Google OAuth Document (https://developers.google.com/accounts/docs/OAuth2)
  • Microsoft Windows Live OAuth2 Document (http://msdn.microsoft.com/en-us/library/live/hh243647.aspx)
  • Amazon Web Services i SAML http://aws.typepad.com/aws/2013/11/aws-identity-and-access-management-using-saml.html
  • Salesforce SAML. https://help.salesforce.com/apex/HTViewHelpDoc?id=sso_saml.htm&language=en
  • Google Apps SAML. https://developers.google.com/google-apps/sso/saml_reference_implementation
  • OpenID Connect http://openid.net/specs/openid-connect-basic-1_0-22.html

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *