NemRefusion VSLight Integrationsvejledning



Relaterede dokumenter
Udvidet konfigurering

Integrationsmanual. Anvendelse af webservice til persondataimport til Campus. Brugervejledning til udviklere

Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere

Opsætning af udviklerversion af Microsofts open source XDS.b fra Codeplex Projekt: Net4Care Version: V0.1,

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Ivan Overgaard 11/29/2012

Kald af PingService via SOAPUI

Dataudvekslingsaftale vedrørende tilslutning til NemRefusions Virksomhedsservice

Indholdsfortegnelse. Version Serviceplatformen - opsætningsguide (Eksterne testmiljø) Indledning... 2

Tredjepart webservices

NemRefusion. Kom godt i gang: NemRefusion Virksomhedsservice version 1.1, NemRefusion virksomhedsservice

FairSSL Fair priser fair support

ITD ecmr WEB Services. Af Allan Wisborg, IT Udvikler

AuthorizationCodeService

1.1 Formål Webservicen gør det muligt for eksterne parter, at fremsøge informationer om elevers fravær.

FairSSL Fair priser fair support

Affaldsdatasystem Vejledning i system-til-system integration

Navision Stat 7.0. Webservice til Generisk integrationssnitflade (GIS) Overblik. Side 1 af 21. ØSY/CRA/CPS/ CRA Opr

FairSSL Fair priser fair support

Installation og Drift. Aplanner for Windows Systemer Version

1 Domæne Design valg User Klassediagran 5

Security Token Service. Snitflade OIO WS Trust

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

Godkendelsesdato Version Rettet af Rettelse(r)

FairSSL Fair priser fair support

Teknisk Dokumentation

System til System grænseflader

DESIGNDOKUMENT (Teknisk dokumentation)

DIADEM KOM GODT I GANG INTEGRATIONSVEJLEDNING IFT. SIKKERHED OG VERSIONERING AF WEBSERVICES VERSION: STATUS: FRIGIVET DATO: 22.

Testservice med anvendelse af Microsoft software.

Ibrugtagning af Fødselsindberetningsservicen på NSP

Serviceoperationer Puls

Indberetning af afregninger teknik

SOSIGW. - Administrationskonsol for SOSIGW Indeks

Vejledning til Retsinformation web services test stubs

Hvordan vælger jeg dokumentprofilen?

TeamShare 2.1 Versionsnoter Oktober 2009

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade København Ø

STS Designdokument. STS Designdokument

2. Opstart af SLS-Klient Korrekt udsteder kommunikation

Videresend til egen . Vejledning til Digital Post for virksomheder

Dokumentet giver en beskrivelse af anvendelsen af den webservice der er tilknyttet GIS (Generisk Integration Snitflade) til Navision Stat.

Digital post Snitflader Bilag A5 - REST HTTP returkoder Version 6.3

Finanstilsynets indberetningssystem. FAQ Ofte stillede spørgsmål

FairSSL Fair priser fair support

Den Gode Webservice 1.1

Installation og Drift. Aplanner for Windows Systemer Version 8.15

Citrix CSP og Certificate Store Provider

Webservice til upload af produktionstilladelser

UPLOAD. Af Database og Website til Skolens Server

Vejledning til registrering som bruger til EudraCT results

MODERNISERINGSSTYRELSEN ØSLDV WINDOWS SERVICE DOKUMENTATION, INSTALLATION OG KONFIGURERING AF ØSLDV/RAY WINDOWSSERVICE

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

GLOBETEAM. Danmarks Miljøportal (DMP) Vejledning til fagsystemejere omkring tilkobling af.net-baseret web service. Version 1.3

PROGRAMMERS GUIDE SÅDAN KALDER DU SERVICES UDSTILLET VIA SERVICEPLATFORMEN

Nemhandel infrastruktur. Morten Hougesen Christian Uldall Pedersen 8. April 2010

Advanced Word Template Brugermanual

DKAL Snitflader REST HTTP returkoder

Oktober 2013 HLG/XIGA. Opstartsvejledning ATS Engros 1/12

Version 8.0. BullGuard. Backup

DKAL Snitflader REST Register

SOSI STS Testscenarier

Serviceplatformens opsætningsguide til leverandører

TDCs Signaturserver. 11/05 - Version TDC Erhverv Sikkerhed og certifikater

Undgå driftsafbrydelser på grund af udløbet virksomheds- eller funktionssignatur

Smartair 6.0. Installations guide

Anbefalede testprocedurer

DIADEM KOM GODT I GANG INTEGRATIONSVEJLEDNING IFT. SIKKERHED VERSION: 1.3 (INGEN ÆNDRINGER SIDEN 1.1) STATUS: FRIGIVET DATO: 1.

Certifikatpolitik. For den fællesoffentlige log-in-løsning. Side 1 af 9 2. december Version 1.1

Certifikatpolitik for NemLog-in

Contents. John Have Jensen Mercantec 2011

GLOBETEAM. Danmarks Miljøportal (DMP) Vejledning til fagsystemejere omkring tilkobling af Java Metrobaseret. Version 1.2

Guide til NemLog-in Security Token Service

LUDUS WEB. Installations- og konfigurations-vejledning. Den 7. april J.nr.: 4004 V

Opstartsvejledning ATS aktørudgave

Beskrivelse af fejlkoder. Version 7.0, KMD Indkomst WEBService IndkomstEnkeltForespoergsel og MQService IndkomstMasseForespoergsel

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

BESTILLING AF NEMID. For at bestille ny NemID vælger du Vælg Bestil NemID medarbejdersignatur.

Transkript:

NemRefusion VSLight Integrationsvejledning Virksomhedsservice via webservice Dette dokument beskriver hvordan der forbindes til og udveksles beskeder med NemRefusion virksomhedsservice via web servicen VSLight. Ud over de tekniske detaljer beskrives også et konkret eksempel på hvordan integrationen kan udføres med.net Framework 3.5 og Visual Studio 2010. Klientcertifikat SendRequest Servercertifikat 88ada025-9b02-4c78-9d6d-e2a857ec9556 SSL Virksomhed 88ada025-9b02-4c78-9d6d-e2a857ec9556 GetResponse VSLight 1 Forudsætninger... 2 1.1 Gyldig og signeret XML... 2 1.2 Registrering af klientcertifikat... 2 2 Ressourcer... 2 3 Beskrivelse... 3 3.1 Metoden SendRequest... 3 3.2 Metoden GetResponse... 3 4 Sikkerhed... 3 5 Fejlbeskeder... 4 6 Visual Studio 2010 eksempel... 5 6.1 Lokal WSDL... 5 6.2 Tilføj servicereference... 5 6.3 Angiv klientcertifikat... 6 6.4 Forøg grænsen for modtaget datamængde... 7 6.5 Kode... 7 6.5.1 Metoden SendXmlFilTilVSLight... 7 6.5.2 Metoden HentSvarFraVSLightOgGemSomXmlFil... 8 Side 1 af 9

1 Forudsætninger Dette dokument beskriver kun hvordan korrekt kommunikation etableres med VSLight på et teknisk plan. Detaljer omkring XML beskedformater og indberetningstyper skal indhentes via snitfladebeskrivelse og vejledninger på www.nemrefusion.dk. 1.1 Gyldig og signeret XML VSLight erstatter kun selve MQ kommunikationen, så det er nødvendigt, at brugeren kan danne en gyldig NemRefusion virksomhedsservice XML besked (NemRefusionIndberetningSamling, NemRefusionVirksomhedSoegningStruktur, HaendelseSoegningStruktur eller SagsbehandlingSoegningStruktur) og korrekt påføre en XML signatur (XMLDsig). 1.2 Registrering af klientcertifikat Ud over at klientcertifikatet der benyttes er gyldigt, skal certifikatets thumbprint/miniatureudskrift også være registreret hos VSLight servicen. Dette gøres ved først at finde denne værdi for det certifikat der ønskes benyttet under egenskaber for certifikatet i certifikatlageret, og herefter fremsende denne til NemRefusion. 2 Ressourcer Placering af WSDL for VSLight servicen: https://vslight.nemrefusion.dk/vslight.svc?wsdl Vær opmærksom på at denne inklusiv de underliggende referencer også påkræver klientcertifikat ved tilgang. Dette kan have den konsekvens at værktøjer til automatisk generering af kode kan have problemer med at køre. Hvis dette er tilfældet kan fremgangsmåden beskrevet i integrationseksemplet benyttes. Side 2 af 9

3 Beskrivelse VSLight er en sikker (https/ssl + påkrævet registreret klientcertifikat) webservice (WCF) baseret på.net Framework 3.5 som udstiller to metoder: string SendRequest(XElement XML); læg på kø XElement GetResponse(string RequestUUID); hent fra kø Interfacet er typeløst for den transporterede XML så der kan ligesom på en kø kommunikeres enhver form for gyldig XML. 3.1 Metoden SendRequest Metoden tager som input den NemRefusion XML besked der ønskes indsendt, og output er et UUID som skal benyttes ved senere afhentning af svar XML beskeden fra NemRefusion med metoden GetResponse. Inputtypen bliver ved integration fra.net til et objekt af typen XElement (Xml.Linq) som kan indeholde en generisk XML struktur og som er nem at arbejde med. Hvis der f.eks. benyttes et værktøj som SoapUI vil XML input være af typen <xsd:any>. Output er en tekststreng som altid vil indeholde en gyldig UUID (.NET Guid i en string). 3.2 Metoden GetResponse Efter et succesfuldt kald til SendRequest vil der, ideelt set, altid kunne hentes en svar XML besked ud igen, når denne er færdigbehandlet i NemRefusion. Hvornår svarbeskeden er klar vil variere alt afhængig af størrelsen på input og NemRefusions tilstand. Derfor kan det være nødvendigt løbende at forespørge på den sammen besked, hvis ikke svaret blev fundet ved første forespørgsel. Input og output til metoden GetResponse fungerer bare omvendt af SendRequest. Input er den UUID som blev modtaget ved kaldet til SendRequest og output er en XML besked med svaret fra NemRefusion. Hvis metoden returnerer null så har servicen ikke kunne finde en XML besked med svaret fra BizTalk. Dette kan betyde, at forespørgslen ikke er behandlet færdig endnu (eller er stallet), og der må prøves igen lidt senere. Alternativt kan denne returværdi betyde, at det UUID der medsendes er forkert og altså aldrig har været returneret fra et kald til SendRequest, eller det kan betyde at kaldet til GetResponse er foretaget for sent, og filen med svaret er blevet ryddet op (slettet eller arkiveret efter 14 dage). 4 Sikkerhed Kommunikation med servicen er SSL krypteret og kan altså kun foregå over https. Endvidere skal klienten ved ethvert kald autentificere sig med et gyldigt certifikat på transportniveau. Certifikatet skal kunne fungere som klientcertifikat og samtidig må det ikke være udløbet eller spærret og det skal have en udsteder som er betroet af VSLight webserveren (f.eks. TDC OCES CA ). Som beskrevet under forudsætninger for brug af servicen, ligger der en yderligere sikkerhed i, at klientcertifikater også skal være registreret lokalt hos VSLight. Side 3 af 9

5 Fejlbeskeder Ved brug af servicen kan der forekomme en række fejlbeskeder som er beskrevet i følgende tabel. Fejlkode Fejltekst.NET Exception type Årsag/handling 101 RequestUUID does not contain a valid UUID. (Example: 98f44b5b-5a45-4ad9- b13e-4b9366e5c01f) Input til metoden GetResponse skal være et gyldigt UUID. 102 User with client certificate thumbprint #THUMBPRINT# is not a registered subscriber. Certifikatets thumbprint/miniatureudskrift er ikke fremsendt og registreret hos VSLigth/NemRefusion. 103 Request XML could not be delivered to an underlying system. Please try again later. Ved kald til SendRequest kunne den indsendte XML ikke leveres videre til NemRefusion systemet. Dette kan skyldes midlertidig nedetid og kaldet bør forsøges gentaget på et senere tidspunkt. 104 Response XML could not be acquired from an underlying system. Please try again later. Ved kald til GetResponse kunne den ønskede XML ikke hentes fra NemRefusion systemet. Dette kan skyldes midlertidig nedetid og kaldet bør forsøges gentaget på et senere tidspunkt. InternalServiceFault The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <servicedebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft.NET Framework 3.0 SDK documentation and inspect the server trace logs. Der er sket en uhåndteret fejl internt i VSLight servicen. Prøv igen senere og kontakt evt. NemRefusion hvis fejlen ikke forsvinder. N/A The HTTP request was forbidden with client authentication scheme 'Anonymous'. Security. MessageSecurityException Ugyldigt eller manglende certifikat. 1. Der er slet ikke påhæftet et klientcertifikat på servicekaldet. 2. Certifikatet er udløbet, spærret eller dets udsteder er ikke betroet af VSLight webserveren. 3. Certifikatets thumbprint/miniatureudskrift er ikke fremsendt og registreret hos VSLigth/NemRefusion. Side 4 af 9

6 Visual Studio 2010 eksempel I det følgende beskrives et udførligt eksempel på hvordan der kan kommunikeres med VSLight fra en Visual Studio 2010.NET Framework 3.5 konsolapplikation. Eksemplet beskriver hvordan man gør hvis man har en gyldig signeret NemRefusion virksomhedsservice XML besked liggende i en folder, og gerne vil have denne behandlet i NemRefusion og gemme svaret i en anden folder. 6.1 Lokal WSDL Da Visual Studios Add Service Reference funktionalitet og værktøjet svcutil.exe kan have problemer med ressourcer der kræver klientcertifikat for tilgang, kan det være nødvendigt med følgende indledende manøvre hvor alle WSDL ressourcer lægges i en lokal mappe. Brug Internet Explorer til at downloade følgende filer en efter en og gem dem i samme mappe med det foreslåede filnavn fra tabellen herunder (det kan være nødvendigt at trykke på Alt-tasten for at få fil menuen og Gem som frem). Det gyldige registrerede klientcertifikat skal være tilgængeligt på maskinen og vælges når Internet Explorer spørger efter det. Adresse https://vslight.nemrefusion.dk/vslight.svc?wsdl https://vslight.nemrefusion.dk/vslight.svc?wsdl=wsdl0 https://vslight.nemrefusion.dk/vslight.svc?xsd=xsd0 https://vslight.nemrefusion.dk/vslight.svc?xsd=xsd1 Gem som /VSLight.wsdl /wsdl0.wsdl /xsd0.xsd /xsd1.xsd Når dette er gjort skal referencerne inde i filerne erstattes med stier til de nye lokale placeringer. Derfor skal der redigeres i filerne som beskrevet i tabellen herunder. Fil Erstat dette Med dette /wsdl0.wsdl "https://vslight.nemrefusion.dk/vslight.svc?xsd=xsd0" "xsd0.xsd" /wsdl0.wsdl "https://vslight.nemrefusion.dk/vslight.svc?xsd=xsd1" "xsd1.xsd" /VSLight.wsdl "https://vslight.nemrefusion.dk/vslight.svc?wsdl=wsdl0" "wsdl0.wsdl" Herefter skulle filen VSLight.wsdl være til at konsumere. 6.2 Tilføj servicereference Start Visual Studio og dan et nyt projekt af typen Console Application på minimum version 3.5 af.net Framework. Vælg Add Service Reference, angiv placeringen af den lokale (eller eksterne) fil VSLight.wsdl og angiv f.eks. namespace som VSLightService. Side 5 af 9

6.3 Angiv klientcertifikat Det meste af den information der er nødvendig for at kommunikere med servicen er nu automatisk placeret i app.config filen (web.config ved webløsninger), dog mangler der en reference til et klientcertifikat.... <client> <endpoint address="https://vslight.nemrefusion.dk/vslight.svc" binding="basichttpbinding" bindingconfiguration="basichttpbinding_ivslight" contract="vslightservice.ivslight" name="basichttpbinding_ivslight" behaviorconfiguration="clientcertificatebehavior" /> </client> <behaviors> <endpointbehaviors> <behavior name="clientcertificatebehavior"> <clientcredentials> <clientcertificate storelocation="localmachine" storename="my" x509findtype="findbythumbprint" findvalue="..." /> </clientcredentials> </behavior> </endpointbehaviors> </behaviors>... En ny sektion med navnet behaviors skal indsættes som herover og værdien for findvalue skal angives til certifikatets thumbprint/miniatureudskrift (f.eks findvalue="47 54 01 5a 50 06 50 87 3c bc b4 d6 bc 6c 60 45 46 bf 6e 8f"). Side 6 af 9

En reference til denne nye endpointbehaviour skal lægges ind som ny attribut i endpoint elementet i den ovenstående client sektion (behaviorconfiguration="clientcertificatebehavior"). Denne konfiguration antager at certifikatet ligger i certifikatlageret for den lokale computerkonto i mappen Personligt/Personal, men værdierne kan nemt justeres til at finde certifikater i andre lagre. Endvidere kan tilknytning af klientcertifikat også foretages direkte via kode. 6.4 Forøg grænsen for modtaget datamængde Der er en indbygget grænse for hvor meget data der kan sendes til VSLight servicen på 10MB, men denne begrænsning foregår på server siden. Ved kald til GetResponse kan svaret indeholde store mængder data til klienten og en begrænsning på hvad der accepteres er per default sat i konfigurationsfilen. Derfor bør der justeres i binding sektionen sådan at værdierne for maxbuffersize og maxreceivedmessagesize er betydeligt større. Et forslag er som de markerede værdier herunder.... <bindings> <basichttpbinding> <binding name="basichttpbinding_ivslight" closetimeout="00:01:00" opentimeout="00:01:00" receivetimeout="00:10:00" sendtimeout="00:01:00" allowcookies="false" bypassproxyonlocal="false" hostnamecomparisonmode="strongwildcard" maxbuffersize="65536000" maxbufferpoolsize="524288" maxreceivedmessagesize="65536000" messageencoding="text" textencoding="utf-8" transfermode="buffered" usedefaultwebproxy="true"> <readerquotas maxdepth="32" maxstringcontentlength="8192" maxarraylength="16384" maxbytesperread="4096" maxnametablecharcount="16384" /> <security mode="transport"> <transport clientcredentialtype="certificate" proxycredentialtype="none" realm="" /> <message clientcredentialtype="username" algorithmsuite="default" /> </security> </binding> </basichttpbinding> </bindings>... Det kan heller ikke udelukkes at det bliver nødvendigt at justere på timeoutværdier i binding sektionen. 6.5 Kode Med en reference til det nye VSLight namespace (using VSLightConsumeDemo.VSLightService;) kan koden i de næste to afsnit bruges til at demonstrere de vigtigste aspekter af VSLight servicens to metoder med henblik på input og fejlhåndtering. Koncepterne demonstreret her skulle meget gerne hurtigt kunne omsættes til praktisk brug af VSLight. 6.5.1 Metoden SendXmlFilTilVSLight /// <summary> /// En signeret virksomhedservice XML besked i en fil sendes til NemRefusion. /// </summary> /// <param name="stitilxmlfil">komplet sti til XML fil</param> /// <returns>et UUID som skal benytte ved senere afhentening af svar XML</returns> public static string SendXmlFilTilVSLight(string stitilxmlfil) // XML læses fra disk til et XElement objekt. Her er det meget vigtigt at vælge PreserveWhitespace!!! var inputxml = XElement.Load(stiTilXmlFil, LoadOptions.PreserveWhitespace); Side 7 af 9

// opret VSLight klient var vslightklient = new VSLightClient(); try // returner svaret fra kaldet til SendRequest return vslightklient.sendrequest(inputxml); catch (MessageSecurityException mse) // sikkerhedsfejl Console.WriteLine("Der er noget galt med klientcertifikatet: " + mse.message); catch ( fe) // soap fejl med koder switch (fe.code.name) // fejl skal håndteres ifølge fejlkoden case "102": Console.WriteLine("Det benyttede certifikat er ikke registreret hos VSLight: " + fe.message); case "103": Console.WriteLine("VSLight kunne ikke levere filen videre til NemRefusion, vi prøver igen senere: " + fe.message); case "InternalServiceFault": Console.WriteLine("VSLight må være nede, vi prøver igen senere: " + fe.message); default: Console.WriteLine("Uventet svarkode:" + fe.message); catch (Exception e) Console.WriteLine("Uventet fejl:" + e.message); finally // VSLight klienten skal altid lukkes vslightklient.close(); return null; 6.5.2 Metoden HentSvarFraVSLightOgGemSomXmlFil /// <summary> /// På baggrund af et UUID der tidligere er modtaget forsøges svar beskeden hentet fra NemRefusion og gemt i en XML fil. /// </summary> /// <param name="uuid">et gyldigt UUID</param> /// <param name="stitilxmlfil">komplet sti til den fil som svaret ønskes gemt i</param> public static void HentSvarFraVSLightOgGemSomXmlFil(string uuid, string stitilxmlfil) // opret VSLight klient var vslightklient = new VSLightClient(); try // kald GetResponse var vslightsvar = vslightklient.getresponse(uuid); if (vslightsvar == null) // intet svar endnu Console.WriteLine("Intet svar fundet endnu, vi prøver igen senere. UUID: " + uuid); // Håndter. else // svar modtaget, det gemmes i fil // for at bevare gyldigheden af det signerede XML fra NemRefusion er det vigtigt med DisableFormatting!!! vslightsvar.save(stitilxmlfil, SaveOptions.DisableFormatting); Console.WriteLine("Svar fra VSLight skrevet til fil: " + stitilxmlfil); catch (MessageSecurityException mse) // sikkerhedsfejl Console.WriteLine("Der er noget galt med klientcertifikatet: " + mse.message); catch ( fe) // soap fejl med koder Side 8 af 9

switch (fe.code.name) // fejl skal håndteres ifølge fejlkoden case "101": Console.WriteLine("Det angivne UUID er ugyldigt, det må vi lige gøre noget ved: " + fe.message); case "102": Console.WriteLine("Det benyttede certifikat er ikke registreret hos VSLight: " + fe.message); case "104": Console.WriteLine("VSLight kunne ikke få kontakt til NemRefusion, vi prøver igen senere: " + fe.message); case "InternalServiceFault": Console.WriteLine("VSLight må være nede, vi prøver igen senere: " + fe.message); default: Console.WriteLine("Uventet svarkode:" + fe.message); catch (Exception e) Console.WriteLine("Uventet fejl:" + e.message); finally // VSLight klienten skal altid lukkes vslightklient.close(); Side 9 af 9