SURF vernieuwt OpenID Connect in 2019

Sinds halverwege 2017 is de OpenID Connect gateway een feit. SURFconext is daarmee de eerste federatie die op grote schaal OpenID Connect aanbiedt. Inmiddels hebben we flink wat ervaring opgedaan, dankzij het aansluiten van enkele tientallen diensten via OpenID Connect, maar dit heeft ook enkele uitdagingen in onze huidige implementatie blootgelegd.

Waarom willen we OpenID Connect vernieuwen?

Zo blijkt dat de ontwikkeling rond het open-source product waarop de bestaande implementatie is gebaseerd helaas bijna is stilgevallen. Dit product blijven gebruiken, betekent extra werk. De code is erg complex en moelijk onderhoudbaar. Ook de gewenste verdere integratie met de SURFconext beheertools zou arbeidsintensief zijn.

Hoog tijd om de huidige OpenID Connect implementatie te vervangen. We willen meer flexibiliteit creëren om verder te ontwikkelen, meer functionaliteiten toevoegen, en de verwachte groei beter aankunnen van het aantal diensten dat OpenID Connect gebruikt, of wil gebruiken. In dit blog vertellen we aan de hand van doelstellingen (op hoofdlijnen) wat er gaat veranderen en waarom.

Doel 1: robuuste implementatie die klaar is voor de toekomst

Sinds de lancering van ondersteuning voor OpenID Connect binnen SURFconext groeit het aantal diensten dat gebruik maakt van dit protocol voortdurend. We verwachten dat dit zal doorzetten. Om hierop te kunnen blijven inspelen, is het belangrijk dat het platform zowel robuust als flexibel is. De huidige OpenID Connect implementatie is wel robuust, maar weinig flexibel, en nieuwe use cases en/of technologieën ondersteunen wordt dan wel een flinke uitdaging. Waar we in het verleden leunden op een kant-en-klare implementatie, hebben we nu gekozen voor het schrijven voor een eigen implementatie op basis van een open-source library. Het hoofddoel voor 2019 is dus: een robuuste en toekomstvaste implementatie.

Doel 2: Beveiliging van API’s van instellingen ondersteunen

SURF werkt samen met onderwijsinstellingen aan de Open Onderwijs API. API’s worden steeds belangrijker binnen het onderwijs. Binnen het onderwijs worden ze bijvoorbeeld gebruikt om informatie over roosters en cijfers beschikbaar te stellen aan studenten. Instellingen wisselen zo op een vellige manier informatie uit.

Deze API’s moeten natuurlijk goed worden afgeschermd. Ze bevatten vaak belangrijke en gevoelige informatie. Een belangrijke meerwaarde van OpenID Connect ten opzichte van SAML is dat OpenID Connect is gebaseerd op OAuth en dus kan worden gebruikt voor het afschermen van API’s. Een ander belangrijk onderdeel van dergelijke API’s afschermen is op een betrouwbare manier de identiteit van een gebruiker vaststellen. En precies hier kan SURFconext een rol spelen.

Doel 3: Opslag persoonsgegevens minimaliseren

Van gebruikers die inloggen op een dienst via OpenID Connect slaan we op dit moment de attributen nog tijdelijk op. De instellingen zijn als Identity Provider via SAML op SURFconext aangesloten. SURFconext moet dus een vertaling maken van het SAML-protocol naar het OpenID Connect-protocol. Er is een groot verschil in de werking van OpenID Connect en SAML. Bij SAML worden de attributen volledig via de webbrowser getransporteerd en maar heel kort opgeslagen in het RAM-geheugen. Bij OpenID Connect worden ze pas op een later moment opgehaald door de aangesloten applicatie, en blijven de attributen dus een tijdje bewaard op de harde schijf.

Zolang instellingen dus nog via SAML zijn aangesloten, moet SURFconext de attributen tijdelijk opslaan voor OpenID Connect. Dat doen we liever niet. We willen persoonsgegevens minimaal opslaan, volgens het ‘Privacy by Design’-principe.

Expertmeeting: In december 2018 organiseerde SURFnet een expertmeeting over OpenID Connect. Tijdens deze meeting zijn enkele uitdagingen rond de huidige OpenID Connect implementatie uitvoerig met een aantal experts besproken. Hierbij waren onder andere Mike Jones (Microsoft, OpenID Foundation), John Bradley (Yubico, OpenID Foundation), Hans Zandbelt (ZmartZone IAM, OpenID expert) en Mischa Salle (Nikhef, OpenID expert) aanwezig.

In samenwerking met…

SURF heeft niet alleen ervaring opgedaan de afgelopen 1,5 jaar. Ook enkele aangesloten instellingen zijn aan de slag gegaan met OpenID Connect en hebben suggesties gedaan voor nieuwe features. Deze volgende ontwikkelingen nemen we dus ook mee in onze nieuwe implementatie:
 

  • Ondersteuning bieden aan SURFsecureID voor OpenID Connect.
    Dienstaanbieders die via de huidige OpenID Connect implementatie aansluiten op SURFconext, kunnen SURFsecureID niet toepassen. Met SURFsecureID kunnen instellingen hun diensten extra beveiligen met tweefactorauthenticatie. Dit is een belangrijk gemis voor deze versie van OpenID Connect en meteen ook het belangrijkste verschil met de SAML-implementatie.
     
  • Extra beveiligingslaag om mobiele clients aan te sluiten.
    Voor sommige applicaties die OpenID Connect gebruiken, zijn extra veiligheidsmaatregelen nodig. Denk bijvoorbeeld aan browser apps die in JavaScript geschreven zijn (de broncode daarvan is zichtbaar in de browser van de gebruiker) en mobiele apps. We willen voorkomen dat kwaadwillenden de communicatie tussen SURFconext en de applicatie kunnen onderscheppen.

    Dankzij ondersteuning van Proof Key for Code Exchange (PKCE, spreek uit: pixie) is er een extra mechanisme waarmee SURFconext zeker weet dat er contact is met de juiste applicatie (en dus niet met een kwaadaardige variant).
     

  • Betere integratie met de beheertools van het SURFconext platform.
    De huidige OpenID Connect gateway heeft een eigen registratie van diensten, wat werkt bóvenop de registratie van SURFconext. Diensten die OpenID Connect gebruiken, worden op twee verschillende plekken beheerd. Dit is erg foutgevoelig.

Impact en planning

Een eerste versie van de nieuwe implementatie wordt nu getest; we verwachten in Q4 live te kunnen gaan, en beide omgevingen tijdelijk naast elkaar laten draaien. Bestaande dienstaanbieders krijgen dan de tijd en ruimte om in eigen tempo de overstap te maken. Wees gerust, we verwachten dat instellingen daar niets of nauwelijks iets van merken.

Voor aangesloten instellingen blijven we gewoon werken met SAML, SURFconext maakt de OpenID Connect-vertaling op de achtergrond. Er verandert dus niks aan de huidige koppeling die instellingen met SURFconext hebben.

Ben je geïnteresseerd? Neem snel contact op met Arnout Terpstra via e-mailadres arnout.terpstra@surfnet.nl.

Auteur

Reacties

Dit artikel heeft 0 reacties