(Oppdatering 2016-01-02: Her snakker jeg om OpenID, ikke den nyere OpenID Connect som er mye mer aktuell.)
Fra tid til annen kommer det spørsmål om Feide og OpenID opp. Spørsmålet kommer i to varianter; hvorfor kan vi ikke bruke OpenID for å komme inn på Feide-tjenester og hvorfor kan vi ikke bruke Feide for å komme inn på OpenID-tjenester.
Ryggmargsrefleksen min til den ene er “tja, hvorfor ikke”, mens til den andre er den “over mitt lik.”
Bruk av OpenID til innlogging på Feide-tjenester
Uten å gå veldig nøye inn på hva OpenID er kan det på et vis sammenlignes med Feide der målet er å kunne bruke samme brukernavn og passord (eller annen autentisering) på en mengde tjenester. Det er også på lik linje med Feide mulig å overføre informasjon om brukeren ved innlogging til tjenestene. Sannsynligheten er stor for at du allerede har en eller flere OpenIDer. Men i mortsetning til Feide har ikke OpenID noe definert tillitsnettverk med policyer, avtaler og definerte attributtsett tilpasset vår sektor.
Løsningen er helt distribuert der hvem som helst kan sette opp identitetstilbydere og brukere kan registrere hvilken som helst informasjon hos disse tilbyderne. Uten å legge noe ekstra rundt OpenID kan tjenester som benytter OpenID som autentiseringsmetode stole like mye på informasjonen de får tilsendt som om brukeren brukte et selvregistreringsskjema i tjenesten selv eller lignende.
For en god del tjenester på nettet er jo dette mer enn godt nok da de ikke har noe behov til å kunne stole på at informasjonen de får er riktig. De trenger bare å kjenne igjen brukeren og kanskje hente inn kontaktinformasjon i form av en e-postadresse eller lignende.
Men for mange (de fleste?) Feide-tjenestene vil ikke dette være godt nok. Tillitten til at informasjonen de får er korrekt er ikke der og sannsynligvis trenger tjenesten mer informasjon om deg som person i utdanningssektoren enn det OpenID-tilbyderen har registrert. For å få tak i korrekt informasjon om brukeren fra attributtlagrene hvor hver enkelt skoleeier er det fullt mulig å tilpasse Feide slik at en bruker kan knytte sin(e) OpenID-identiteter til sin Feide-identitet. Etter innlogging med OpenIDen kan man da, men endringer i Feide, kunne hente ut brukerattributter for vedkommende bruker. Men tilliten til at det er riktig bruker som logger seg inn er for lav. I prinsippet ville det være som å tillate folk å bruke sin Facebook-innlogging på eResept, selv om tillits- og sikkerhetsspriket nok er litt større enn mellom OpenID og Feide.
Så uten mye mer arbeid og omliggende herligheter er vel reaksjonen min “over mitt lik…”
Bruk av Feide til innlogging på OpenID-tjenester
Denne stiller seg litt anderledes. Om en tjeneste i utgangspunktet ikke har større sikkerhetskrav enn at den kunne brukt OpenID ut av boksen burde det ikke være noe i veien med å kunne bruke Feide til innlogging om Feide hadde tilbudt OpenIDer som en del av sin tjeneste. Tjenesten vil kunne velge om den tillater innlogging fra alle OpenID-tilbydere eller om den bare vil slippe inn tilbydere som har en eller annen form for verifikasjon av brukerne og deres informasjon (som for eksempel Feide).
Den store fordelen med OpenID er at det er veldig mange programpakker der ute som har moduler/plugins for OpenID slik at det er enkelt å tilpasse tjenesten til denne typen autentisering. Ennå er ikke SAML2.0, som Feide benytter seg av, like utbredt selv om mange begynner å få dette på plass også.
Jeg kjenner for lite til de iboende sikkerhetsutfordringene rundt OpenID til at jeg kan si om jeg ville tillatt å sende mange attributter fra Feide til OpenID-tjenester, men innlogging og noen utvalgte attributter burde være mulig.
Spørsmålet blir da hvorfor skal Feide tilby OpenID-identiteter til sine brukere når det finnes så mange andre tilbydere av OpenID-identiteter der ute? Hvem har ikke nå enten en konto hos Google, Yahoo eller andre. Jeg kan se for meg noen argumenter for at Feide også bør tilby OpenID-identiteter:
- Tjenester kan være sikker på at alle som har en Feide-identitet også har en OpenID-identitet.
- Tjenester kan om de ønsker det begrense OpenID-innlogging til brukere med OpenID-identitet fra Feide, og dermed effektivt begrense tilgangen til personer med en eller annen tilknytning til norsk utdanningssektor.
- Tjenester kan dra nytte av policyene og retningslinjene i Feide til å få mer kvalitetsikret informasjon om brukeren. (Gitt at vi tillater attributtoverføring)
Jeg kan se at utbredelsen av OpenID sammen med Feides rammeverk rundt policyer og informasjonskvalitet kan være nyttig, så i utgangspunktet “tja, hvorfor ikke?”
Teknisk løsning
Feide som OpenID-tilbyder har vært implementert på testbasis for lenge siden, og i prinsippet kan hvem som helst sette seg ned og lage en slik tjeneste. Det eneste en trenger er en pakke for OpenID som IdP og en for SAML som SP. I teorien trenger en i tillegg da bare et relativt enkelt skript som knytter en url til en spesifikk Feide-bruker. Denne tjenesten kunne så blitt en Feide-tjeneste som tilbød OpenID-identiteter til de vertsorganisasjonene som knytter seg til tjenesten.
Om Feide sentralt ønsker å tilby dette som en tjeneste for alle vil det rent teknologisk være enda enklere enten en velger å lage en bro mellom OpenID og SAML2 eller om en velger å benytte de underliggende LDAPene hos vertsorganisasjonene direkte. SimpleSAMLphp 1.6 får direkte støtte for OpenID 2.0 og implementeringen burde være relativt triviell rent teknisk.
Utfordringer med brukergrensesnitt
En OpenID-identitet representeres ved en URL og om en tjeneste vil benytte alle tilgjengelige OpenID-tilbydere så må brukeren vite hva sin OpenID-identifikator er. Med sentral OpenID i Feide vil dette kunne bli noe ala https://openid.feide.no/iktsenteret.no/sl eller https://openid.feide.no/sl@iktsenteret.no. Mange brukere vil nok ha visse problemer med å huske og benytte slike identifikatorer.
I det tilfellet at tjenesten bare ønsker å tilby innlogging til Feide-brukere, eller en spesialinnlogging for Feide-brukere, vil man kunne gjøre tilpasninger som gjør det enklere for brukeren, men da vil disse tilpasningene kunne være forskjellige på forskjellige tjenester. En standard eller “beste praksis” vil kunne være til hjelp her. Andreas har tidligere skrevet om en mulig måte å gjøre dette på.
Andre problemstillinger
Før Feide eventuelt implementerer en slik tjeneste for sine brukere er det en rekke andre problemstillinger må ses på. Uten at jeg har gått dypt inn i materien så ser jeg i alle fall for meg følgende punkter:
- Må vi (kan vi?) begrense bruken av OpenID-identiteter fra Feide til utvalgte tjenester? OpenID-identitetene til brukerne er i utgangspunktet åpen for alle tjenesteleverandører, enten de eies av Senter for IKT i utdanningen eller StealMyInformation Inc.
- Må vi operere med to helt adskilte føderasjoner? En for SAML2 og en for OpenID, med tilhørende policyer, kontrakter, retningslinjer og administrasjon… med tilhørende kostnader.
- Et det “trygt” å bruke OpenID til attributtoverføring, og i så fall for hvilke attributter?
- …
Den generelle følelsen jeg sitter igjen med er at vi nå kanskje er der at vi har muligheten til å vurdere OpenID-identiteter gjennom Feide, men at vi trenger en konkret vurdering av hvilke konsekvenser det vil ha for Feide som føderasjon slik den er i dag og om fordelene med mer kjente integrasjonsmuligheter er verdt endringer i kompleksitet, administrasjon, tillit, kostnader osv. Rent teknisk er det “trivielt” og flere europeiske føderasjoner tilbyr nå OpenID til sine brukere.