I dagens digitala era är det av yttersta vikt att effektivisera hanteringen av lösenord. När företag fortsätter sin digitala transformation använder de anställda alltmer samarbetsverktyg, kommunikationsplattformar och molnbaserade lagringslösningar.
Detta skapar en utmaning för utvecklare: hur kan man säkerställa att anställda får säker tillgång till interna applikationer och data som lagras i molnet? För många är lösningen SAML-autentisering!
Vad är SAML?
Security Assertion Markup Language, eller SAML, är en öppen standard som förenklar autentiseringsprocesser. Den baseras på XML (Extensible Markup Language) och standardiserar kommunikationen mellan de enheter som behöver autentiseras och webbtjänsten eller applikationen. Enkelt uttryckt möjliggör SAML användningen av en enda inloggning för åtkomst till flera olika applikationer.
Å ena sidan behöver en tjänsteleverantör autentisering från en identitetsleverantör (IdP) för att ge användaren behörighet. Till exempel är Salesforce en tjänsteleverantör som förlitar sig på en identitetsleverantör för att verifiera användarnas identitet.
Å andra sidan intygar en identitetsleverantör att slutanvändaren är den hen utger sig för att vara och skickar sedan denna information till tjänsteleverantören tillsammans med användarens åtkomsträttigheter. Ett välkänt exempel är Auth0, en ledande aktör inom identitetslösningar.
SAML och enkel inloggning (SSO)
En av de primära funktionerna med SAML är att möjliggöra enkel inloggning, ofta förkortat till SSO. Innan SAML fanns möjligheten till SSO, men den var beroende av cookies och begränsad till samma domän.
SAML möjliggör SSO genom att ge användarna tillgång till flera applikationer med en enda inloggning och uppsättning autentiseringsuppgifter. Trots att SAML funnits sedan 2002, är det fortfarande relevant, och många moderna applikationer och SaaS-företag använder det för SSO. Den senaste versionen, SAML 2.0, tillåter webbaserad SSO över flera domäner och är standarden för resursauktorisering.
Fördelar med SAML-autentisering
SAML erbjuder många fördelar för säkerhet, användare och tjänsteleverantörer.
Enkelhet: Användare behöver bara logga in en gång på IdP och får sedan smidig och säker tillgång till alla anslutna applikationer.
Ökad säkerhet: Många tjänsteleverantörer saknar resurserna att implementera avancerad autentisering. IdP:er är generellt sett bättre rustade för att verifiera användaridentiteter. Genom att lägga ansvaret för autentisering på IdP, möjliggör SAML en säkrare autentiseringsprocess som kan inkludera flera säkerhetslager, som multifaktorautentisering (MFA).
Förbättrad användarupplevelse: Med SAML kan användare slippa krånglet med att behöva komma ihåg flera användarnamn och lösenord.
Minskade administrationskostnader: Tjänsteleverantörer kan stärka sin plattformssäkerhet utan att behöva lagra lösenord. Det eliminerar också problem med bortglömda lösenord, vilket minskar supportkostnader och frigör tid för tekniska team att fokusera på andra viktiga ärenden.
Auth0 och dess relation till SAML
Auth0 är en plattform som erbjuder tjänster för användarautentisering och auktorisering. Den kan fungera både som IdP och SP. Auth0 erbjuder en universell inloggningsfunktion som kan integreras med SAML. Utvecklare använder ofta Auth0 i kombination med SAML för att minska risken genom att använda flera IdP.
Auth0 kan användas med de flesta stora programmeringsspråk och API:er och kan integreras med sociala medier, databaser och LDAP-kataloger.
Hur SAML SSO fungerar
Som tidigare nämnts är enkel inloggning (SSO) en central funktion i SAML. Innan SAML krävde SSO cookies och var begränsad till samma domän.
SAML möjliggör SSO genom att låta användare komma åt flera applikationer med en enda inloggning och en uppsättning autentiseringsuppgifter. SAML har funnits sedan 2002, och många moderna applikationer och SaaS-företag använder det för SSO. SAML 2.0, den senaste versionen, tillåter webbaserad SSO över flera domäner och är standarden för resursauktorisering.
I praktiken innebär det att användaren behöver autentiseras en enda gång för att få tillgång till olika applikationer. Ett bra exempel är Google-autentisering, som används för flera tjänster som Gmail, Youtube och Google Apps.
I detta fall fungerar Google som identitetsleverantör (IdP) för sina tjänster, och tjänsterna själva kallas ”tjänsteleverantörer” (SP).
Autentisering
När en användare försöker ansluta till en extern applikation skickas den okända användaren till företagets IdP. Denna IdP är en webbtjänst som nås via HTTPS och kan vara hostad internt eller externt.
Intern autentisering
Användaren verifierar sin identitet mot IdP. Detta kan ske genom explicit autentisering (användarnamn/lösenord) eller genom att använda en befintlig token.
Generering av påståendet
IdP genererar sedan en ”token”, en sorts användaridentitetskort som är giltigt enbart för den aktuella tjänsten under en viss tid. Denna token innehåller bland annat:
- Användarens identitet: användarnamn, e-post eller andra identifierare
- Valfria ytterligare attribut: efternamn, förnamn, språk etc.
- En giltighetstid för token
- En signatur av token från IdP
Överföring från IdP till SP
I de flesta fall skickas påståendet inte direkt från IdP till SP, utan via användaren själv. Genom en HTTP-omdirigeringsmekanism förser IdP klientens webbläsare med token som ska överföras till tjänsteleverantören. Detta kan liknas vid ett identitetskort som visas för en myndighet.
Konsumtion av token av SP
Tjänsteleverantören tar emot token från användaren. SP har valt att lita på denna IdP och validerar signaturen, integriteten och giltighetstiden för token. Om testerna är godkända öppnar SP en session för användaren.
Källa: Wikipedia
SAML-autentisering vs. Användarbehörighet
SAML-autentisering förväxlas ofta med auktorisering. Det är därför viktigt att skilja på begreppen autentisering och auktorisering.
Autentisering: Validering av användarens identitet, alltså att verifiera att personen verkligen är den hen utger sig för att vara. Ett exempel är att logga in med e-post och lösenord för att få tillgång till ett system – en enda session eller inloggning för flera plattformar.
Auktorisering: De behörigheter en användare ger ett tredjepartsverktyg för att få tillgång till resurser på sitt konto. Med användarens godkännande utbyter auktoriseringsprotokollet tokens utan att ge tillgång till autentiseringsuppgifterna. Det sker till exempel när en plattform (som Facebook) tillåts komma åt viss information från ditt Google-konto.
Viktiga terminologier för SAML
SAML-påstående
SAML-påståenden överförs oftast från identitetsleverantörer till tjänsteleverantörer. Påståendena innehåller information som tjänsteleverantörer använder för att fatta beslut om åtkomstkontroll. Det finns tre typer av påståenden:
- Autentiseringspåståenden intygar att tjänsteleverantören verkligen har autentiserats av identitetsleverantören vid en viss tidpunkt och med en viss autentiseringsmetod.
- Attributpåståenden intygar att ett ämne är associerat med vissa attribut. Ett attribut är helt enkelt ett namn-värde-par. De parter som förlitar sig på påståendet använder attributen för att fatta beslut om åtkomstkontroll.
- Auktorisationsbeslutspåståenden intygar att ett ämne har rätt att agera på en resurs genom att visa bevis. Uttrycksförmågan i tillståndsbeslutspåståenden i SAML är avsiktligt begränsad.
Assertion Consumer Service (ACS)
Assertion Consumer Service, eller ACS, är den punkt dit identitetsleverantören omdirigerar efter att användaren har autentiserats. Det är en HTTPS-slutpunkt som hanterar överföringen av personlig information.
Standardrelätillstånd
Detta är standardwebbadressen som användaren omdirigeras till efter att SAML-meddelandet har autentiserats. Default Relay State används för att samordna meddelanden mellan IdP:er och SP:er.
SAML är ett vanligt förekommande protokoll, och det är ofta nödvändigt att kunna avkoda SAML-påståenden. Här är några verktyg för att koda, avkoda och formatera SAML-meddelanden:
#1. SAMLtool
SAMLtool från OneDesign är en samling onlineverktyg för SAML. Dessa inkluderar verktyg för att koda och avkoda SAML-meddelanden, kryptera och dekryptera påståenden samt signera och validera SAML-meddelanden. SAMLtool erbjuder även plugins för att integrera verktygen i olika CMS.
#2. Samtool.io
samltool.io, som tillhandahålls av Auth0, är ett onlineverktyg för att avkoda, granska och verifiera SAML-meddelanden genom att klistra in XML- eller URL:er som innehåller förfrågningar.
#3. SAM-avkodare
SAM-avkodare är ett enkelt onlineverktyg för att avkoda SAML från PingIdentity. Det kan användas för att avkoda, dekomprimera och formatera SAML-meddelanden, påståenden och metadata.
Slutord
SAML-standarden är ett kraftfullt verktyg för att implementera en central autentiseringslösning baserad på märkningsspråket. En av dess viktigaste fördelar är den höga effektiviteten och säkerheten.
Antalet potentiella säkerhetsläckor minimeras eftersom enskilda applikationer inte behöver lagra eller synkronisera användardata. Detta gör det möjligt att kombinera hög säkerhet med en god användarupplevelse.
Det finns även andra plattformar för användarautentisering att undersöka.