SAML står for Security Assertion Markup Language. SAML 2.0 blev OASIS-standard i marts 2005 og er stadig den bærende protokol til single sign-on i store organisationer. Den er XML-baseret, og den er ældre end alt det, der i dag kaldes moderne identitetsteknologi.
Assertions
Der er to parter. En Identity Provider, som kender brugerne, og en Service Provider, som er den tjeneste, brugeren vil ind i. Mellem dem sendes en assertion.
En assertion er en XML-erklæring, som Identity Provideren har signeret. Signaturen er det, der gør den noget værd. Uden den er det bare et stykke XML, som hvem som helst kan skrive.
Det er også der, de fleste fejl opstår. Signaturen skal kontrolleres mod den nøgle, man på forhånd har aftalt med Identity Provideren, og den skal dække netop det stykke af dokumentet, man læser sine oplysninger ud af. Bliver de to ting adskilt, kan et gyldigt signeret dokument bære et uunderskrevet indhold.
Der findes tre typer udsagn i en assertion:
- Authentication statement. Brugeren blev autentificeret på et bestemt tidspunkt, på en bestemt måde.
- Attribute statement. Egenskaber ved brugeren, fx e-mail, afdeling eller rolle.
- Authorization decision statement. En afgørelse af, om brugeren må tilgå en bestemt ressource.
Hvornår SAML, hvornår OIDC
Valget er som regel givet på forhånd af modparten.
Vælg SAML, når den anden ende er et etableret virksomheds-IdP eller en ældre applikation, der kun taler SAML. Microsoft Entra ID, AWS, Salesforce, Workday og Atlassian understøtter det alle sammen, og i mange organisationer er det den vej, der allerede er trådt.
Vælg OpenID Connect til mobilapps, enkeltsideapplikationer og API-arkitekturer. OIDC bruger JSON og REST og slipper for XML-signaturer, som er tunge at håndtere korrekt i en app på en telefon.
To forskellige spørgsmål
Det er værd at holde fast i, hvad et SAML-login egentlig beviser. Det beviser, at Identity Provideren mener, brugeren er den, kontoen tilhører. Hvor meget den påstand er værd, afhænger helt af, hvad der skete, da kontoen blev oprettet.
Er kontoen oprettet af en HR-afdeling ud fra en ansættelseskontrakt, er den stærk. Er den oprettet ved, at nogen selv skrev en e-mailadresse i et felt, er den svag. Det er præcis den skelnen, KYC og anden identitetskontrol handler om, og den er uafhængig af, om protokollen hedder SAML eller noget andet. Et eID er stærkt, fordi identiteten er kontrolleret ved udstedelsen, ikke fordi transporten er XML.