SOSI-DCC anvenderguide
Indledning
Målgruppe
Webservice snitfladen
Processering af indkommende kald
Fejlsituationer
Referencer
Nærværende dokument udgør anvenderguiden for SOSI-DCC komponenten, også kendt som SOSI Afkoblingskomponenten. SOSI-DCC fungerer som webservice gateway og dens hovedfunktioner er routing af requests og håndhævelse af timeout-grænser på webservice kald Komponenten tilbyder i princippet også funktionalitet til asynkron afkobling af webservice kald. Denne funktionalitet er ikke implementeret på den Nationale Service Platform (NSP) og er derfor udeladt fra denne anvenderguide.. Timeout-grænser er på operationsniveau konfigureret i komponenten, men kan overrides af klienter til afkoblingskomponenten som en del af web service kaldet.
Som webservice gateway er komponenten placeret mellem en klient – som kaldes en webservice consumer (WSC) – og en service udbyder, kaldet en webservice provider (WSP).
Som illustreret på nedenstående figur sender WSCen webservice requests til WSPen igennem SOSI-DCC og modtager responsen direkte ved synkron kommunikation.
SOSI-DCC understøtter [SOAP 1.1] kald (og dermed også Den Gode Webservice [DGWS]) samt [MTOM], men ikke [SOAP 1.2].
Afhængig af konfiguration af komponenten gør SOSI-DCC brug af [WS-addressing].
Denne anvenderguide henvender sig til arkitekter og udviklere, der skal kalde webservices i gennem SOSI-DCC.
SOSI-DCC har én proxy webservice snitflade, som router kald på baggrund af den operation der kaldes – angivet som 'SOAPAction' HTTP header En angivelse af 'SOAPAction' HTTP headeren er påkrævet for HTTP bundne SOAP kald. . \\ For hver operation, der skal kunne kaldes i gennem DCC, er komponenten konfigureret med et WSP endpoint, en timeout-grænse og en eventuel proxy endpoint som kaldet skal routes i gennem (fx en SOSI-Gateway). \\ Klienter kan override den i DCC konfigurerede timeoutgrænse ved at tilføje følgende SOAP header i DCC namespacet (http://www.sosi.dk/2007/07/decoupling-component-1.0.xsd) til kaldet, hvor det ønskede timeout angives i millisekunder (her 500 ms): \\ <dcc:DecouplingHeader xmlns:dcc="http://www.sosi.dk/2007/07/decoupling-component-1.0.xsd"> <dcc:DecouplingModel>synchronous_timeout</dcc:DecouplingModel> <dcc:Timeout>500</dcc:Timeout> </dcc:DecouplingHeader> \\ SOSI-DCC fjerner denne DecouplingHeader i kald der viderestilles. \\ Komponenten konfigureres – igen på operationsniveau – til enten at ignorere eller videreføre _URL path_ _suffikset_ i kaldet, hvor der med _URL path_ _suffiks_ menes den del af endpoint URLen efter SOSI-DCCens endpoint URL (typisk noget i stil med http\[s\]://<host>:<port>/decoupling/). \\ Fx udgør someService/someID URL path suffikset i følgende URL (her fra det ene eksterne NSP testmiljø som eksempel): \\ http://test2.ekstern-test.nspop.dk:8080/decoupling/someService/someID \\ |
Når en besked modtages fra en WSC til videreforsendelse til en WSP, gennemløbes følgende flow i komponenten:
\\ Der bemærkes, at komponenten ikke er bundet til \[DGWS\] og ikke foretager nogen form for validering af at \[DGWS\] overholdes og dermed heller ikke validerer et eventuel indlejret SOSI Idkort. \\ Afhængig af hvordan den enkelte operation (SOAPAction) er konfigureret, _erstatter, fjerner_ eller _bevarer_ SOSI-DCC \[WS-addressing\] headere i kaldet der viderestilles. \\ For oplysninger om den konkrete konfiguration (og dermed semantik) for de enkelte operationer på NSP instanserne henvises til NSP operatøren. |
Fejlsvar fra WSPen som kaldet blev viderestillet til returneres af SOSI-DCC i uforandret form. \\ Ved fejlsituationer der opstår i SOSI-DCC returnerer komponenten et fejlsvar der følger \[DGWS\] formatet for SOAP faults. \\ Nedenstående tabel lister de mulige fejlkoder og beskriver hvornår typen af fejlen opstår. \\ Alle fejlkoder som DCC generer er præfikset med dcc_. \\ |
FaultCode | Beskrivelse |
dcc_timeout | Timeout i kald til WSP. |
dcc_syntax_error | Syntaksfejl i det indkommende kald. |
dcc_access_denied | (Kun hvis DCC er konfigureret med IP whitelistening, hvilket pt. ikke er tilfældet på NSP) |
dcc_general_error | Andre typer fejl som opstår i DCC og som ikke er dækket af ovenstående, fx kald med en operation (SOAPAction) som ikke er konfigureret i komponenten, I/O fejl under videresendelse af kaldet (fx hvis WSPen ikke kan nås) etc. |
Et eksempel DCC fejlsvar ser således ud:
<soapenv:Envelope id="Envelope">
<soapenv:Header>
<wsse:Security>
<wsu:Timestamp>
<wsu:Created>2016-12-14T09:22:26Z</wsu:Created>
</wsu:Timestamp>
</wsse:Security>
<medcom:Header>
<medcom:SecurityLevel>1</medcom:SecurityLevel>
<medcom:Linking>
<medcom:FlowID>unknown</medcom:FlowID>
<medcom:MessageID>AAABWPyj23gwaMH/cmFafFNPU0k=</medcom:MessageID>
<medcom:InResponseToMessageID>unknown</medcom:InResponseToMessageID>
</medcom:Linking>
</medcom:Header>
</soapenv:Header>
<soapenv:Body>
<soapenv:Fault>
<faultcode>Server</faultcode>
<detail>
<medcom:FaultCode>dcc_syntax_error</medcom:FaultCode>
</detail>
<faultstring>No SOAPAction specified in http header!</faultstring>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="9da33e42-875e-445e-9f7d-c57f9f21fa3f"><ac:plain-text-body><![CDATA[ | [DGWS] | Den Gode Webservice, MedCom |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="434558f0-736f-4461-ab7c-d83dfeb51c3f"><ac:plain-text-body><![CDATA[ | [MTOM] | SOAP 1.1 Binding for MTOM 1.0, W3C |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="7469023d-b8f5-4a1e-b559-b22221aa3f75"><ac:plain-text-body><![CDATA[ | [SOAP 1.1] | Simple Object Access Protocol (SOAP) 1.1, W3C |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="14bc1928-d157-46d1-8acc-1f30a7294692"><ac:plain-text-body><![CDATA[ | [SOAP 1.2] | SOAP Version 1.2, W3C |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="7516da9b-9f17-4c7c-8c9a-0cbb84d23300"><ac:plain-text-body><![CDATA[ | [WS-addressing] | Web Services Addressing (WS-Addressing) |