SAML vs. OAuth: Welke moet ik gebruiken?

Als onderdeel van project PicketLink (http://www.picketlink.org ), krijg ik vragen over verschillende aspecten van beveiliging, vertrouwen en identity management.

Eén van de belangrijkste vragen die ik krijg is – “Wat is het verschil tussen SAML en OAuth?”. Ik hoop dat ik dit artikel kan gebruiken om mijn gedachten over dit belangrijke onderwerp te geven. Ik zal ook proberen te wijzen op verschillende use cases waar elk van beide de voorkeur heeft.

Wat is het grote verschil tussen SAML en OAuth?

Informatief in mijn eigen woorden:

SAML (Security Assertion Markup Language) is een overkoepelende standaard die profielen, bindingen en constructen omvat om Single Sign On (SSO), Federation en Identity Management te bereiken.

OAuth (Open Authorization) is een standaard voor autorisatie van bronnen. Het gaat niet over authenticatie.

Voor formele definities,

Volgens de wikipedia pagina over SAML:

Security Assertion Markup Language is een op XML gebaseerd open standaard dataformaat voor het uitwisselen van authenticatie- en autorisatiegegevens tussen partijen, in het bijzonder tussen een identity provider en een service provider.

volgens OAuth.net

Een open protocol om veilige autorisatie op een eenvoudige en standaardmethode mogelijk te maken vanuit web-, mobiele en desktoptoepassingen.

Wat zijn de andere verschillen?

1. Token- of berichtformaat<

SAML gaat uit van XML als het gegevensconstruct of tokenformaat.

OAuth-tokens kunnen binair, JSON of SAML zijn, zoals wordt uitgelegd in OAuth Bearer Tokens.

2. Transport

SAML heeft Bindings die HTTP gebruiken, zoals HTTP POST Binding, HTTP REDIRECT Binding enz.

Maar er is geen beperking voor het transportformaat. Je kunt SOAP of JMS of welk transport dan ook gebruiken om SAML tokens of berichten te versturen.

OAuth gebruikt HTTP exclusief.

3. Scope

Ondanks dat SAML is ontworpen om openlijk te worden toegepast, wordt het typisch gebruikt in Enterprise SSO scenario’s –

  • binnen een enterprise of
  • enterprise to partner of
  • enterprise to cloud scenario’s.

OAuth is ontworpen voor gebruik met applicaties op het internet, primair voor gedelegeerde autorisatie van internet bronnen. OAuth is ontworpen voor Internet Scale.

Welke versies van de standaarden moet ik gebruiken?

SAML v2.0 en OAuth v2.0 zijn de laatste versies van de standaarden.

Wanneer moet ik welke gebruiken?

  • Als uw usecase SSO betreft (wanneer ten minste één actor of deelnemer een onderneming is), gebruik dan SAML.
  • Als uw usecase betrekking heeft op het verlenen van toegang (tijdelijk of permanent) tot bronnen (zoals accounts, foto’s, bestanden etc), gebruik dan OAuth.
  • Als je toegang moet verlenen tot een partner- of klantapplicatie voor je portal, gebruik dan SAML.
  • Als je usecase een gecentraliseerde identiteitsbron vereist, gebruik dan SAML (Identity provider).
  • Als je usecase mobiele apparaten betreft, dan is OAuth2 met een vorm van Bearer Tokens geschikt.

Ik wil zowel SAML als OAuth gebruiken. Kan dat?

Je kunt SAML gebruiken voor authenticatie. Als je eenmaal een SAML token/assertion hebt, kun je dat gebruiken als OAuth bearer token in de HTTP bearer header om toegang te krijgen tot beschermde bronnen.

Recentelijk hebben we een verzoek van de PicketLink gemeenschap in deze richting gehad.

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

Wat is het alternatief voor SAML XML-tokens in de OAuth-wereld?

Kijk eens naar JSON Web Token (JWT): https://datatracker.ietf.org/doc/draft-ietf-oauth-json-web-token/

JWT Bearer Tokens kunnen worden gebruikt met OAuth2.

Er wordt gewerkt bij de OpenID foundation met OpenID Connect. http://openid.net/specs/openid-connect-basic-1_0-22.html

OpenID Connect is een identiteitslaag bovenop OAuth2 die profielinformatie van gebruikers kan verstrekken van de autorisatieservers (op basis van de authenticatie die is uitgevoerd).

  • PicketLink Open Source Project op http://www.picketlink.org
  • OAuth Theorie op PicketLink site.
  • 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 en 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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *