Kort introduktion til service

NSP Test Service (NTS) bruges til at verificere korrektheden af et DGWS 1.0.1 SOAP-request.

Ved henvendelser fra anvendere, hvor der, for anvendere, opleves problemer med at kalde en service på NSP kan NTS bringes i anvendelse, som et værktøj til at hjælpe anvenderen videre. Dette gøres i praksis ved, at anvenderes request sendes til NTS istedet for til den oprindelige service. NTS afleverer et svar der uddyber, hvad der måtte være forkert i requestet. Svaret kan enten bruges direkte af supportfunktionen i dialogen med anvender eller som yderligere information videre i supportkæden. I sidstnævnte tilfælde skal NTS svaret indsættes i supportsagen.

NTS validerer det DGWS-specifikke information i SOAP-headeren for det SOAP-request, som sendes til den. Indholdet i SOAPbody er udenfor valideringen. Der udføres kontrol på følgende:

  • UTF-8 character encoding for requestet
  • valid XML i requestet
  • SOAP 1.1 namespace i requestet
  • SOAP envelope og body har indhold
  • eksistens af obligatoriske DGWS header-elementer
  • korrekt orden på DGWS header-elementer
  • overholdelse af ID-kort indhold, som specificeret i DGWS 1.0 specifikationen bilag 2 og 4
  • certifikatoplysninger, herunder:
    • certifikatets gyldighed
    • korrekt signatur (ikke-self signed)
    • udstedt af kendt STS
  • ID-kortet i requestet validerer med SEAL-biblioteket
  • ID-kortet er formatteret korrekt mht. tabs, linebreaks og white spaces (ved pretty printing)


Komponent og versioner

NTS er tilgængelig på URL’en: http://<host>/nts/service, hvor <host> erstattes med konkrete miljø, f.eks.:test2.ekstern-test.nspop.dk:8080.

Tilsvarende er WSDL for servicen tilgængelig på http://<host>/nts/service?wsdl 

NTS kan kaldes som enhver anden WebService på den nævnte eller tilsvarende URL. Det kan i praksis foregå med det værktøj anvender finder belejligt, eksempelvis curl, SOAP-UI eller egen kode. DGWS SOAP-requestet skal indeholde, hvad anvender ellers ville sende til enhver anden service på NSP. I svaret fra NTS vil resultatet af valideringen af DGWS SOAP-requestet fremgåi SOAP-body på response.


Kontaktoplysninger, servicebeskrivelse og testforhold

Et eksempel på kald til NTS med brug af curl, hvor SOAP-body i DGWS SOAP-requestet er tom:

curl --header ’Content-Type: application/soap+xml; charset=utf-8’ -d @modules/web/src/test/-
	java/dk/nsi/nsp/nts/web/checks/testxml/idcard-valid.xml http://test2.ekstern-test.nspop. 
	dk:8080/nts/service | xmllint --format -

hvilket giver følgende resultat:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header>
      <Header xmlns="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd">
         <Linking>
            <FlowID>9489</FlowID>
            <MessageID>9489:10173889505080905</MessageID>
         </Linking>
         <FlowStatus>syntax_error</FlowStatus>
      </Header>
      <NTS xmlns="http://nspop.dk/nts/2013/05">
         <Environment>TEST</Environment>
         <NTS-Version>1.0.0</NTS-Version>
         <SEAL-Version>2.1.6</SEAL-Version>
      </NTS>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>Server</faultcode>
         <faultstring>Consult detailed errors in medcom:FaultCode</faultstring>
         <detail xmlns:medcom="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd">
            <medcom:FaultCode>ERROR [SOAP1.1]: SOAP element: ’Body’ is empty. (&lt;S:Body xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"/>)</medcom:FaultCode>
         </detail>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Værd at bemærke er følgende header-element:

<NTS xmlns="http://nspop.dk/nts/2013/05">
   <Environment>TEST</Environment>
   <NTS-Version>1.0.0</NTS-Version>
   <SEAL-Version>2.1.6</SEAL-Version>
</NTS>

Det kan her ses, at <Environment>-elementet angiver, hvilken miljø-type NTS befinder sig på. Mulighederne er TEST eller PRODUCTION. Endvidere kan det bemærkes at NTS benytter sig af SEAL version 2.1.6, som det ses i tagget <SEAL-Version>,  og er selv version 1.0.0, som det ses i tagget <NTS-Version>.

Resultatet af valideringen ses i responsets SOAP-body, som værdi for et eller flere <medcom:FaultCode>-tags. 


Fejl er opdelt i kategorier, som vedrører bestemte tekniske områder i DGWS SOAP-requestet, eksempelvis:

  • [XML]: vedrører fejl ifbm. brug af XML generelt
  • [SOAP1.1]: vedrører fejl ifbm. anvendelsen af SOAP 1.1 
  • [STS Signed]: vedrører fejl ifbm. anvendelsen af STS eller SEAL-biblioteket NTS Anvender-guide 3 / 3
  • [DGWS Schema]: vedrører fejl ifbm. strukturen af ID-kortet elementer
  • [DGWS IDCard]: vedrører fejl ifbm. indhold af ID-kortet 

Et eksempel på et resultat, hvor der optræder flere samtidige fejlbeskeder:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header>
      <Header xmlns="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd">
         <Linking>
            <FlowID>urn:uuid:fe6eb0b0-d95f-414e-b6a5-f343503bc103</FlowID>
            <MessageID>A998:10179430363102375</MessageID>
            <InResponseToMessageID>AAABPqK6kjpf6XN9a05H4lNPU0k=</InResponseToMessageID>
         </Linking>
         <FlowStatus>syntax_error</FlowStatus>
      </Header>
      <NTS xmlns="http://nspop.dk/nts/2013/05">
         <Environment>TEST</Environment>
         <NTS-Version>1.0.0</NTS-Version>
         <SEAL-Version>2.1.6</SEAL-Version>
      </NTS>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>Server</faultcode>
         <faultstring>Consult detailed errors in medcom:FaultCode</faultstring>
         <detail xmlns:medcom="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd">
            <medcom:FaultCode>ERROR [DGWS IDCard]: IDCard Conditions NotOnOrAfter exceeded (&lt;ns9:Conditions xmlns:ns9="urn:oasis:names:tc:SAML:2.0:assertion" NotBefore="  -
2013-05-14T11:03:56Z" NotOnOrAfter="2013-05-15T11:03:56Z"/>). Server time:2013-07-15T16:47:00.751</medcom:FaultCode>
            <medcom:FaultCode>ERROR [STS Signed]: SEAL (Test Federation): Invalid signature: ’dk.sosi.seal.modelbuilders.SignatureInvalidModelBuildException: Signature could  -
not be validated’</medcom:FaultCode>
            <medcom:FaultCode>ERROR [STS Signed]: IDCard contains more than 4 spaces in a row. This indicates that the IDCard XML has been pretty printed</medcom:FaultCode>
         </detail>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 Her ses, at der er problemer med ID-kortets gyldighed:

ERROR [DGWS IDCard]: IDCard Conditions NotOnOrAfter exceeded

og signaturen på ID-kortet kan ikke valideres: 

ERROR [STS Signed]: SEAL (Test Federation): Invalid signature

 og der er problemer med formateringen af XML’en i ID-kortet:

ERROR [STS Signed]: IDCard contains more than 4 spaces in a row

 

Der findes en mængde andre fejlbeskeder, som der her ikke gives eksempler på.





  • No labels