Basic WAYF for teknikere: Hvordan fungerer det?

WAYF for wayf'mere ...

WAYF er en bestemt måde at logge ind på et website på — fødereret login: i stedet for at spørge brugeren (browseren) direkte om brugernavn og password etc. spørger den beskyttede webtjeneste en anden server om et login for brugeren. Kommunikationen mellem webtjenesten og login­tjenesten foregår dog igennem brugerens browser — der er ingen server-til-server-kommunikation. Lad os gennemgå hvad der sker når man logger ind på en webtjeneste med WAYF:

Brugeren går i sin browser ind på sitet for den webtjeneste som han vil logge ind på — lad os sige FileSender. Når han trykker på Logon-knappen, svarer serveren browseren med en 302 og får den til at sende en HTTP-GET mod https://wayf.wayf.dk — med URL-parameteren SAMLRequest. Værdien er et lille base64-indkodet XML-dokument med oplysninger til WAYF om hvilken tjeneste der spørger om login. Hvis XML'en (eller URL'en) ikke angiver hvilken institution brugeren skal logge ind hos, beder WAYF brugeren om at vælge login­stedet fra en liste. Når institutionen er valgt, får WAYF (med et 302-svar) browseren til at sende en HTTP-GET mod institutionens login-server, som så beder brugeren om at logge ind på sin brugerkonto ved institutionen (eller evt. NemID). Browseren viser nu institutionens login­side og i adressefeltet institutionens domæne. Når brugeren har logget ind, får institutionens server browseren til at sende en HTTP-POST mod https://wayf.wayf.dk med parameteren SAMLResponse. Værdien er et base64-indkodet XML-dokument med en række standard­oplysninger om brugeren — fx hans bruger-ID ved institutionen, for- og efternavne, e-mailadresse osv. — se her. Dokumentet er digitalt signeret af institutionen, og WAYF validerer signaturen med en offentlig nøgle som institutionen har meddelt WAYF på forhånd. Herefter danner WAYF et nyt XML-dokument med netop de brugeroplysninger som den oprindeligt spørgende webtjeneste har brug for — og får browseren til at sende en HTTP-POST mod tjenesten med dokumentet base64-indkodet og signeret med WAYFs privatnøgle (som er dannet i og ligger i hardware og derfor aldrig kan stjæles). Tjenestens server modtager dokumentet og validerer signaturen med en offentlig nøgle som WAYF har meddelt tjenesteudbyderen på forhånd. Herefter behandler tjenesten de modtagne brugeroplysninger: logger ham ind på den tilsvarende konto, opretter evt. først kontoen for ham, giver ham de tilsvarende rettigheder — eller afviser ham helt. Tjenestens adfærd afhænger helt af hvilke oplysninger den modtager om brugeren som forsøger at få adgang. Og tjenesten stoler blindt på rigtigheden af de oplysninger som WAYF sender den om brugeren — en tillid som er et kernepunkt i en identitetsføderation.

Læg mærke til at tjenesteudbyderen ikke får kendskab til brugerens password eller andre login­faktorer — kun til en mængde oplysninger om brugeren som han kan stole på kommer fra brugerens institution. Brugerens login­faktorer forbliver en hemmelighed mellem brugeren og hans institution.

Meddelelserne sendes altid over HTTPS, så indholdet kan ikke opsnappes af uvedkommende. Der er også mulighed for derudover at kryptere dele af selve XML-dokumentet som indeholder brugeroplysningerne.

Se en tilsvarende engelsk beskrivelse her.