2024

SOAP-naar-JSON-integratie voor aanwezigheidsregistratie

Een beveiligde vertaallaag met Azure Functions die een low-codeplatform via JSON toegang geeft tot certificaatondertekende SOAP-services.

Renotec
RolSoftware-engineer
Periode2024
Technologie
  • .NET 8
  • Azure Functions
  • SOAP
  • JSON
  • WS-Security
  • SAML
  • Azure Key Vault
  • Azure DevOps

De uitdaging

Renotec moest een low-codeplatform verbinden met de aanwezigheidsregistratieservices van de Belgische sociale zekerheid. Het doelplatform kon met JSON over HTTP werken, maar de externe diensten boden SOAP-operaties aan die beveiligd waren met ondertekende XML, X.509-certificaten en SAML-assertions. Dat verschil ging verder dan een ander gegevensformaat: elk verzoek moest de verwachte namespaces, securityheaders, handtekeningreferenties en servicespecifieke berichtstructuur volgen.

De integratie moest daarom een kleine, voorspelbare JSON-API aanbieden en tegelijk achter de schermen het SOAP-protocol en zijn beveiligingsvereisten volledig afhandelen.

Een gerichte vertaallaag

David bouwde de integratie als een geïsoleerde .NET 8 Azure Functions-applicatie. Elke bedrijfsoperatie heeft een afzonderlijke HTTP-trigger die een getypeerd JSON-verzoek ontvangt. De service vertaalt dat model naar de overeenkomstige SOAP-envelope, roept het endpoint van de sociale zekerheid aan en zet het XML-resultaat om naar een JSON-antwoord dat het low-codeplatform rechtstreeks kan verwerken.

De API ondersteunt het zoeken naar aanwezigheidsregistraties, het ophalen van één registratie, het registreren van meerdere aanwezigheden en het annuleren van registraties. Door deze operaties expliciet te houden blijft de publieke interface begrijpelijk zonder SOAP-concepten aan de afnemer bloot te stellen.

SOAP-berichten bouwen en ondertekenen

Herbruikbare envelope-builders stellen het XML-document voor elke operatie samen. Een gedeelde basis verzorgt namespaces, timestamps, binaire securitytokens en de gemeenschappelijke berichtstructuur. Operatiespecifieke builders maken de inhoud van de requestbody. Unieke identifiers verbinden de body en securityelementen met hun referenties in de digitale handtekening.

De ondertekeningscomponent past exclusieve XML-canonicalisatie, SHA-256-digests en een RSA-SHA256-handtekening met het clientcertificaat toe. Zo blijft de protocolintensieve logica centraal staan in plaats van ze over alle endpoints te verspreiden.

Integratie van tokens en certificaten

Voor een aanwezigheidsoperatie wordt uitgevoerd, vraagt de applicatie een SAML-assertion aan bij de Security Token Service. Die assertion wordt in de ondertekende SOAP-securityheader van het bedrijfsverzoek opgenomen. Tijdens lokale ontwikkeling worden certificaten lokaal geladen; in gehoste omgevingen komen ze via Azure Key Vault en beheerde Azure-identiteiten. Daardoor hoeven cloudreferenties niet in de applicatiecode te staan.

Configuratie houdt test- en productieadressen, SOAP-actions en operationele limieten gescheiden van de implementatie.

Antwoorden terug naar JSON vertalen

Bij succesvolle SOAP-antwoorden wordt de relevante registratiepayload uit het bericht gehaald en naar getypeerde .NET-responsmodellen gedeserialiseerd. De Azure Function serialiseert die modellen vervolgens als JSON. Zo ontstaat een duidelijke grens: de low-codeapplicatie gebruikt herkenbare request- en responseobjecten, terwijl namespaces, envelopes en XML-handtekeningen interne integratiedetails blijven.

De zoekflow past bovendien een configureerbare resultaatlimiet toe voordat data wordt teruggestuurd. Zo kan de adapter zijn afnemer beschermen tegen onverwacht grote antwoorden.

Resultaat

Renotec kreeg een gerichte brug tussen een JSON-georiënteerde low-codeomgeving en een sterk beveiligde SOAP-service. Vier workflows voor aanwezigheidsregistratie zijn beschikbaar via één consistente HTTP-interface. Certificaatbeheer, SAML-opvraging, berichtondertekening en XML-conversie blijven samen vervat in een afzonderlijk deploybare integratieservice. Het bedrijfsplatform kan daardoor de vereiste overheidsdiensten gebruiken zonder zelf SOAP en WS-Security te moeten ondersteunen.

Bedrijfsinformatie

Een helder beeld van het bedrijf achter de software.