Veilig leerlingengegevens uitwisselen door slim gebruik Spring Framework

In onderwijsland worden steeds meer leerlingenresultaten en behaalde diploma’s vastgelegd en uitgewisseld. Speciaal hiervoor heeft DUO sinds kort een nieuw Basisregister Onderwijs (BRON) in gebruik genomen. Craftsmen werd door een Utrechtse onderwijsinstelling gevraagd om een interface te ontwikkelen waardoor het eigen systeem en BRON de gegevens automatisch uitwisselen. Het resultaat: veel tijdwinst!

Vanaf januari 2017 maakt de Dienst Uitvoering Onderwijs (DUO) gebruik van een nieuw Basisregister Onderwijs (BRON) voor het middelbaar beroepsonderwijs. Via BRON worden inschrijvingen, diploma’s en de BPV-gegevens (beroepspraktijkvorming) van de studenten uitgewisseld met DUO en ondergebracht bij het Ministerie van Onderwijs, Cultuur en Wetenschap.

Uitwisseling vereenvoudigen

Mbo-scholen zijn verplicht om de gegevens van de bij hen ingeschreven leerlingen bij BRON aan te leveren. Op basis van deze gegevens ontvangen de scholen een bepaald bedrag per leerling en per behaald diploma. Het is dus belangrijk dat deze gegevens snel en accuraat beschikbaar zijn.
Daarom werd Craftsmen halverwege 2016 benaderd door een middelgrote beroepsopleiding uit Utrecht. Hun eigen systeem, dat tot dat moment gebruikmaakte van uitwisseling door middel van uitwisselingsbestanden (periodiek verstuurd), moest worden aangesloten op de webservices van DUO. Met als doel: de tijdrovende verwerking van de aangeleverde batches versnellen en sneller feedback kunnen geven op de verstuurde mutaties.

Wat is de oplossing?

De oplossing hebben we gevonden in het aanroepen van met certificaten beveiligde webservices bij DUO. Hierop ontvangen we een asynchroon antwoord op verschillende zelf ontwikkelde webservices. Met een batchproces wordt meerdere malen per dag in het leerlingensysteem bekeken of er mutaties zijn.

Zodra er mutaties klaarstaan worden deze aangeboden aan de webservice van DUO. Het antwoord daarop wordt weer direct verwerkt in het leerlingensysteem van de school. Enkele seconden later worden, als antwoord op de aanroep van de webservice, één of meerdere callbacks ontvangen waarvan het resultaat ook in het leerlingensysteem wordt opgeslagen.

Craftsmen heeft de basis voor deze functionaliteit geleverd. Gekozen is voor een Java EE-applicatie met Tomcat 8. Voor het aanroepen van de webservices en het ontvangen van de callbacks is gebruikgemaakt van het Spring Framework (Spring 4 waaronder spring-ws, spring-web, spring-ws-security en spring-batch). Op dit moment worden acht verschillende webservices aangeroepen en staan er tien webservice endpoints klaar voor het ontvangen van antwoorden van DUO.

Hoezo complex?

De complexiteit van dit project zit in de beveiliging van het aanroepen van de webservices en veilig ontvangen van de callbacks. De geleverde webservice bij DUO maakt gebruik van een tweezijdige SSL/TLS-verbinding. De verzender van een bericht moet zich hierbij authenticeren middels een door het Ministerie van Onderwijs uitgegeven certificaat. Pas wanneer de verzender heeft aangetoond over de juiste rechten te beschikken om een bericht te mogen aanleveren, wordt de informatie uitgewisseld. Ook de inhoud van een bericht moet aan bepaalde voorwaarden voldoen. Kijk hier voor meer informatie over WS-addressing.

Het Spring Framework bleek de juiste keuze te zijn voor deze uitdaging. Voornamelijk vanwege de uitgebreide mogelijkheden voor het aanroepen van beveiligde remote webservices, maar ook voor het zelf aanbieden van endpoints. Middels interceptors kunnen uitgaande calls worden voorzien van de juiste credentials en kunnen de vereiste headers worden toegevoegd. De Spring-documentatie op dit vlak is erg uitgebreid (zie http://docs.spring.io/spring-ws/sites/1.5/reference/html/) en de gevraagde technische eisen worden volledig door Spring ondersteund (zie ook Xws-Security).

Spring-batch

Voor het periodiek controleren op updates wordt gebruikgemaakt van Spring-batch. Dit is een onderdeel van Spring dat geconfigureerd kan worden om op gezette tijden een job te starten om te bepalen of er nieuwe berichten moeten worden verstuurd.

Naast het maken van de basis van de applicatie heeft Craftsmen ook de documentatie van het nieuwe systeem geleverd. Daarnaast hebben we kennis overgedragen op het gebied van Java en de gebruikte frameworks. Na een korte proefrun is het systeem succesvol en zonder problemen op 12 januari 2017 live gegaan. Na drie dagen waren er al 350 berichten verstuurd naar DUO en 3.300 retour-berichten ontvangen.

Kennis delen!

Wil je meer weten over de resultaten van deze opdracht? Of hoe we succesvol de mogelijkheden van het Spring Framework hiervoor gebruikt hebben? Laat het mij dan weten en wie weet kunnen we elkaar inspireren! We zijn te bereiken op +31(0)30-2270934 of per e-mail op hallo@craftsmen.nl.

Bij Craftsmen delen we graag onze kennis en inzichten. Zoals de code die we bij deze opdracht hebben gebruikt. Veel plezier ermee!

Leave a Reply

Your email address will not be published. Required fields are marked *