SAML och OAuth: Jämförelse och skillnader

SAML (Security Assertion Markup Language) är en autentiseringsprocess. När du går till jobbet på morgonen och loggar in på din dator så har du sannolikt använt SAML.

OAuth (Open authorization) är en auktoriseringsprocess. Använd den för att hoppa från en tjänst till en annan utan att behöva ange nytt användarnamn och lösenord. Om du är inloggad på Google och använder dessa inloggningsdata för Hootsuite så har du använt OAuth.

Båda apparna kan användas för single sign on (SSO) på webben men SAML är normalt användarspecifik medan OAuth är app-specifik. Det går inte att ersätta den ena med den andra så istället för att jämföra dem ska vi diskutera hur de samarbetar.

Hur fungerar SAML?

SAML är en öppen standard som verifierar identitet och utför autentiseringar. I en typisk kontorsmiljö måste en anställd logga in för att få tillgång till någon del av företagets interna funktioner.

När en autentisering med SAML är klar kan användaren komma åt alla verktyg såsom företagets intranät, Microsoft Office och en webbläsare. SAML gör att användaren kan komma åt alla dessa resurser med en enda digital signatur.

Eller i företag med en striktare säkerhet tillåter SAML bara användaren att öppna en dörr eller låsa upp datorskärmen. Auktorisering krävs innan användaren kan göra något annat såsom att komma åt filer.

Nätverksadministratörer kan använda SAML för att hantera användarna från en central plats. Ett lösenord låser upp alla tjänster som en person behöver och den skyddar även företagets säkerhet.

SAML diagram

Ett typiskt arbetsflöde med SAML ser ut så här:

  • Förfrågan: En användare trycker på en "Logga in"-knapp.
  • Validering: SAML ansluter till identitetsleverantören för autentisering.
  • Inloggning: Användaren ser inloggningsskärmen och anger användarnamn och lösenord.
  • Token skapas: Om användaren anger korrekt information skickas ett SAML-token till tjänstleverantören vilket gör att användaren loggar in på servern.

Detta arbetsflöde gör att tjänstleverantören, webbläsaren och identitetsleverantören kan utbyta information. Användare märker oftast inte någon fördröjning eftersom hela processen typiskt bara tar någon sekund.

Hur fungerar OAuth?

Visserligen används "auth" för både autentisering och auktorisering men OAuth-protokollet avser endast auktorisering. Detta protokoll används för att överföra auktorisering från en tjänst till en annan samtidigt som användarnamn och lösenord skyddas.

OAuth kan därför sägas vara tidsbesparande i en miljö där en genomsnittlig anställd växlar mellan appar som är nödvändiga för jobbet hissnande 1 100 gånger per dag. Ibland vill anställda hoppa från en app till en annan utan att behöva logga in igen. OAuth gör det möjligt.

Tänk dig en anställd med ett aktivt Google-konto. Den personen kunde använda samma inloggningsdata för att komma åt:

  • Hootsuite
  • SurveyMonkey
  • HotJar
  • Microsoft 365
  • Salesforce
  • Marketo
  • Box

Den anställda behöver alla dessa webbaserade program för att kunna göra sitt jobb. Men samma person ryser vid tanken att behöva (komma ihåg) fem olika användarnamn och lösenord.

Att använda samma användarnamn och lösenord för alla utgör en säkerhetsrisk. Om inloggningsdata för en plats läcker ut så exponeras användarens viktiga data på alla plattformar. Men inloggning med validering från den första är en helt annan sak.

En del konsumenter oroar sig för datautvinning och de menar att verktyg som detta ger företag såsom Facebook för mycket makt. Varje gång en användare väljer en Facebook-inloggning för andra appar och webbplatser så får Facebook mer insyn i vad kunden gör. Och om Facebooks data läcker ut så kommer den personens övriga inloggningar också att riskeras.

Men flertalet anställda är tacksamma för möjligheten att spara tid när arbetet är stressigt.

OAuth option

Ett typiskt arbetsflöde med OAuth ser ut så här:

  • Förfrågan: En användare trycker på webb-platsens "Logga in"-knapp.
  • Val: Klienten väljer att använda inloggningsdata för auktorisering med tredje part.
  • Inloggning: Auktoriserings-servern skapar ett åtkomst-token som skickas till resurs-servern.
  • Anslutning: Efter verifiering av detta token beviljar resurs-servern åtkomst.

Under hela denna process skickas data fram och tillbaka mellan de två servrarna. OAuth använder vanligtvis JWT för token men kan också använda JavaScript Object Notation.

Oberoende av hur ett token skapas så är det alltid kodat, vanligtvis signerat men sällan krypterat när de skickas från ena servern till den andra.

OAuth och SAML: Likheter och skillnader

Både OAuth och SAML är protokoll som underlättar och standardiserar kommunikationen.

Många använder dessa verktyg för att undvika den ständigt växande listan över användarnamn och lösenord som hindrar åtkomst av kritiska resurser. För app-ägare så förenklar OAuth och SAML onboarding och möjligheten att delegera användarhantering. För administratörer innebär dessa verktyg snabb integration och centraliserad autentisering och auktorisering.

Men de två verktygen hanterar mycket olika funktioner som involverar:

  • Autentisering. Denna process involverar användarens identitet. SAML kan sägas vara nyckeln till ytterdörren. Den ger dig tillgång till lokalen.
  • Auktorisering. Denna process involverar användarens behörigheter. OAuth kan då sägas vara regelverket som säger vad du får, och inte får göra där.

En ytterligare liknelse kan vara en anställd under en vanlig arbetsdag. Personen loggar in en gång på morgonen med SAML. Den inloggningen ge tillgång till alla SAML-baserade appar. Inget mer behöver göras när användaren hoppar från en app till en annan.

När ska man använda SAML eller OAuth?

Både SAML och OAuth möjliggör för SSO vilket är viktigt för en produktiv personal. De är egentligen inte två alternativ utan mera som två tekniker som kan arbeta tillsammans.

I t.ex. en Microsoft-miljö kan OAuth hantera auktorisering och SAML hantera autentisering. Man kan använda båda samtidigt för att bevilja åtkomst (via SAML) och ge behörighet för tillgång av en skyddad resurs (via OAuth).

Man kan också eliminera båda verktygen. Vissa webb-platser kräver varken autentisering eller auktorisering.

Men flertalet företag med digitala system behöver någon sorts system för autentisering och auktorisering för att fungera effektivt. Användarna måste kunna logga in och navigera runt i företagets system när de arbetar.

Men vad är OIDC (OpenID Connect)?

OAuth kan vara viktigt om du utvecklar ett sekundärt verktyg för konsumenter såsom appar eller portaler. Användarna uppskattar kanske möjligheten att kunna använda dina verktyg utan att behöva skapa nya användarnamn och lösenord. Och OAuth kan hjälpa dina anställda om de vill använda verktyg som inte är kompatibla med SAML.

Men för att göra en riktig jämförelse med SAML så måste du undersöka skillnaderna mellan SAML, OAuth och OpenID Connect.

Arbeta med Okta

Okta är mest känt för sina SSO-tjänster som gör att du smidigt kan autentiseras för appar som du använder dagligen. Säker single sign-on använder ofta SAML-protokollet men Okta har även många andra alternativ för sina klienter såsom Sign-in Widget, Auth SDK (ett JavaScript-baserat bibliotek), Social Login och en autentiserings-API.

Lär dig mer om Oktas färdigbyggda identitetslösningar här.

Referenser

A Survey on Single Sign-On Techniques, (2012). Procedia Technology. 

Employees Switch Apps More Than 1,100 Times a Day, Decreasing Productivity, (december 2018). TechRepublic. 

Stop Synching Your Contacts with Facebook, (augusti 2019). Mashable. 

Authentication vs. Authorization, (september 2018). Medium.

Authentication vs. Authorization, (maj 2020). Microsoft.

Why SAML? (Security Assertion Markup Language), (juli 2018). Medium.

Understanding Authentication, Authorization, and Encryption. Boston University.