Best Practices WUS Digikoppeling 2.0



Vergelijkbare documenten
BEST PRACTICE WUS Digikoppeling

Hulpmiddelen bij implementatie van Digikoppeling

Best practice WUS. Digikoppeliing 3.0. Document versie 1.9. Datum 6 november 2014 Status Definitief

Digikoppeling adapter

Best Practice WUS. Digikoppeling 3.0. Versie 1.7. Datum 7 oktober 2013 Status Definitief

Gebruikershandleiding Digikoppeling Compliance Voorziening (Portaal)

OSB versie 1 OSB Koppelvlak Standaard WUS

OVERZICHT ACTUELE DOCUMENTATIE EN COMPLIANCE

Aanvragen en gebruik Overheids IdentificatieNummer (OIN)

Standaard koppelvlak Digikoppeling adapter Servicebus. Datum: 18 augustus 2014 Versie: 0.3 Auteur: M. van den Broek

Service Niveau Overeenkomst Digikoppeling

Business case Digikoppeling

Voorbeelden generieke inrichting Digikoppeling

Volledige Digikoppeling connectiviteit. Foutberichten en foutafhandeling

Digikoppeling Glossary

OSB Koppelvlakstandaard WUS. OSB versie 1.1

Gebruikershandleiding Digikoppeling Serviceregister

Edukoppeling. Transactiestandaard. Versie 1.2 (concept Standaardisatieraad) Edustandaard. Datum: 22 juni Versie: 1.2

Digikoppeling Grote berichten

Rapport. Versiebeheer. Aan te sluiten overheidspartij Kamer van Koophandel Nederland

Koppelvlakstandaard WUS

Technisch Interface Specificatie Webservice Koppelvlak Versie Datum Status Concept

Overheidsservicebus met volledige Digikoppeling connectiviteit. Foutberichten en foutafhandeling

Edukoppeling. Transactiestandaard. Versie 1.2 (definitief) Edustandaard. Datum: okt Versie: 1.2

AANSLUITEN BRONHOUDERS OP DE LANDELIJKE VOORZIENING WOZ

Koppelvlakstandaard WUS

Overheidsservicebus (OSB) Paul Schlotter Architect OSB

Handleiding voor aansluiten op Digilevering

Technische FAQ koppelvlak WUS 2.0 voor bedrijven

Wat is Digikoppeling?

Koppelvlakstandaard Grote Berichten Digikoppeling 2.0

Early Adopters Berichtenbox MijnOverheid Sessie Techniek

Koppelvlakstandaard WUS

Bancaire Infrastructurele Voorziening Aanleverservice. Implementatie conform koppelvlak WUS 2.0 Bedrijven

SuwiML. Transactiestandaard Versie 3.0

Testrapport MDC WUS. Testrapport MDC WUS

Koppelvlakbeschrijving statusservice Bancaire Infrastructurele Voorzieningen. Het ophalen van statusinformatie bij de BIV

Technische afspraken Ketenregister

Uniforme Pensioen Aangifte (UPA)

Dit voorbeeldproject beschrijft het gebruik van web services (open standaarden) voor de ontsluiting van kernregistraties bij de gemeente Den Haag.

CPA Creatiehandleiding

Foutafhandeling!synchrone)berichten&

Koppelvlakstandaard WUS Digikoppeling 2.0

Educatieve Contentketen Distributie en Toegang 2.0. Technische voorschriften web services

Mogelijk onvolledige datum

Schema s en services. Webservices en berichten: v op basis van IMBAG mei ConceptICT Services Keten RZDirectie IT

Koppelvlakbeschrijving mededelingenservice Bancaire Infrastructurele Voorzieningen. Het ophalen van mededelingen bij de BIV

Gebruikershandleiding Compliancevoorziening WUS

Translatie specificatie voor Digikoppeling 3.0

Naam presentatie. Basisregistraties 7 november 2013 Amersfoort

DigiInkoop berichtstroomspecificaties voor leveranciers

Vernieuwing gegevens en berichtenstandaarden. Plan van aanpak vernieuwing standaarden - Project breakdown - Voorgestelde route 2017

Creëren van een instantie van de gegenereerde.net class, standaard initialisatie door.net

Uniforme Pensioen Aangifte (UPA)

Handreiking Digipoort SMTP, POP3 en FTP Overheden

Checklist testen Lopende zaken MijnOverheid. Versie 1.1

Basisregistratie Ondergrond (BRO) Koppelvlakbeschrijving

DT, PVdB - WS-A headers in SOAP Response - validaties op WS-A headers en customer identificatie - soap faults bij skipped requests en WSDLongeldige

Handreiking Digipoort X400, SMTP, POP3 en FTP Bedrijven

Certificate Policy Bedrijfstestomgeving ZOVAR

Beschrijving OpenTunnel koppelvlak met MijnOverheid BerichtenBox

Koppelvlakken en de verschillen BIV - DigiPoort

HDN DARTS WEB AUTHENTICATIE

CPA Creatiehandleiding

CPA Creatiehandleiding

Uniforme Pensioen Aangifte (UPA)

Aansluiten op Digipoort. Informatie voor overheden, bedrijven en andere aansluitende partijen

1. Voorbereiden 2. Inrichten 3. Toepassen 4. Beheren

Best Practices ebms Digikoppeling 2.0

afkijken nadoen EGEMwijs Roadmap StUF SOA Op weg naar een service-georiënteerde architectuur

De keten uitgedaagd. Technische inrichting SBR. College 7 van 11 door Bart Hendriksen & Victor den Bak. Webservices, koppelvlakken en meer

Juliana van Stolberglaan CA Den Haag Postbus AC Den Haag [Handleiding Generieke interface Energielabels.

Yenlo The experts in integration. Test rapport met Logius betreffende:

SuwiML Transactiestandaard 4.0

Koppelvlakstandaard WUS

Versiecontrole in de keten

Generieke interface energielabels

Wat is Digikoppeling?

Roadmap StUF familie Invalshoeken om te kijken naar standaardisatie

Inzenden en ontvangen aangifte

Koppelvlakspecificaties WOZ-inzage MijnOverheid

Rapport. Versiebeheer. Aan te sluiten overheidspartij Kamer van Koophandel Nederland. Catalogus KvK Web services Overheid.

Digikoppeling Architectuur

Aansluitvoorwaarden WS Gateway Provider

Service API Specificatie. Key2Parkeren Koppelvlak Kentekenwijziging

Besluitenlijst CCvD HACCP/ List of decisions National Board of Experts HACCP

Koppelvlakbeschrijving AuSP Service Bancaire Infrastructurele Voorzieningen

CPA Register gebruikershandleiding. Versie 1.03

Transcriptie:

Best Practices WUS Digikoppeling 2.0 Versie 1.3 Datum 09/06/2014 Status Definitief

Colofon Logius Servicecentrum: Postbus 96810 2509 JE Den Haag t. 0900 555 4555 (10 ct p/m) e. servicecentrum@logius.nl Documentbeheer Datum Versie Auteur Opmerkingen 24/03/2011 1.3 Logius - 09/06/2014 1.4 Logius Redactionele wijzigingen Pagina 2 van 12

Inhoud 1 Inleiding... 4 1.1 Doel en doelgroep... 4 1.2 Opbouw Digikoppeling documentatie... 4 1.3 Doel en scope van Digikoppeling... 4 1.4 Opbouw van dit document... 5 2 Werkwijze/Aanbevelingen/Best Practices... 6 Bijlage 1 - Opdeling WSDL in WSDL 1.1... 10 Bijlage 2 Foutmeldingen... 11 Pagina 3 van 12

1 Inleiding 1.1 Doel en doelgroep Alle Digikoppeling webservices die op WUS gebaseerd zijn, moeten conformeren aan Digikoppeling Koppelvlakstandaard WUS. Dit document is een aanvulling hierop. Het heeft als doel ontwikkelaars te adviseren en te informeren over de huidige werkwijze bij het toepassen van Digikoppeling Koppelvlakstandaard WUS deze informatie geldt dus alleen voor de WUS-variant. Het document is bestemd voor ontwikkelaars van webservices, die zijn aangesloten op Digikoppeling. Het gaat hierbij om zowel (service) aanbieders als (service) afnemers. Zie onderstaande tabel bij welke taken dit document ondersteunt. Afkorting Rol Taak Doelgroep? [MT] Management Bevoegdheid om namens organisatie Nee (strategische) besluiten te nemen. [PL] Projectleiding Verzorgen van de aansturing van projecten. Nee [A&D] Analyseren & ontwerpen (design) Analyseren en ontwerpen van oplossingsrichtingen. Het verbinden van Business aan de IT. Nee [OT&B] Ontwikkelen, testen en beheer Ontwikkelt, bouwt en configureert de techniek conform specificaties. Zorgen voor beheer na ingebruikname. Ja 1.2 Opbouw Digikoppeling documentatie Digikoppeling is beschreven in een set van documenten. Deze set is als volgt opgebouwd: Figuur 1: Opbouw documentatie Digikoppeling 1.3 Doel en scope van Digikoppeling Voor de Overheid als geheel is interoperabiliteit tussen een groot aantal serviceaanbieders en serviceafnemers van essentieel belang. Die grootschalige interoperabiliteit wordt bereikt door sterke standaardisatie van het koppelvlak tussen de communicatiepartners. Pagina 4 van 12

Deze communicatie vindt plaats in het domein van Digikoppeling, en daarbij worden Digikoppeling Koppelvlakstandaarden toegepast. Dat is een zeer beperkte set van standaarden waaruit onder gedefinieerde omstandigheden gekozen kan worden. Digikoppeling biedt de mogelijkheid om op die sterk gestandaardiseerde wijze berichten uit te wisselen tussen service aanbieders en service afnemers. Digikoppeling richt zich (in elk geval voorlopig) uitsluitend op uitwisselingen tussen overheidsorganisaties. Uitwisseling binnen Digikoppeling De uitwisseling tussen partijen is in drie lagen opgedeeld: Inhoud: deze laag bevat afspraken over de inhoud van het uit te wisselen bericht, dus de structuur, semantiek en waardebereiken Digikoppeling houdt zich niet met de inhoud bezig, ' heeft geen boodschap aan de boodschap'. Logistiek: op deze laag bevinden zich de afspraken betreffende transportprotocollen (HTTP), messaging (SOAP), adressering, beveiliging (authenticatie en encryptie) en betrouwbaarheid. Dit is laag van Digikoppeling. Transport: deze laag verzorgt het daadwerkelijke transport van het bericht. Digikoppeling richt zich uitsluitend op de logistieke laag. Deze afspraken komen in de koppelvlakstandaarden en andere voorzieningen. 1.4 Opbouw van dit document Hoofdstuk 1 bevat een aantal algemene inleidende onderwerpen. Hoofdstuk 2 bevat aanbevelingen, werkwijzes en Best Practices. Begrippen en afkortingen worden toegelicht in het document Digikoppeling_3.0_Architectuur_vx.x.pdf 1. Deze zit in de Digikoppeling aansluitkit. Dit document en andere documentatie is beschikbaar op www.logius.nl/digikoppeling. 1 Met vx.x wordt de laatst gepubliceerde versie op de Logius website bedoeld Pagina 5 van 12

2 Werkwijze/Aanbevelingen/Best Practices Deze paragraaf bevat de aanbevelingen t.a.v. het omgaan met servicedefinities. Nr Omschrijving WB001 In WSDL 1.1 is een Authoring Style advies (zie bijlage 1) opgenomen: separate the definitions in three documents: data type definitions, abstract definitions, and specific service bindings. Dit advies, met name het apart beschrijven van de specific service bindings (WSDL onderdelen Binding en Service) wordt overgenomen. Dit advies is mede gebaseerd op het beoogde gebruik van UDDI. WB002 Voor de specificatie van zaken die buiten het bereik van de WSDL vallen (TLS en WS-Security) wordt aanbevolen om in de WSDL van een service documentation elements (<wsdl:documentation> of <!-- xxx -->) op te nemen die de eisen ten aanzien van metadata verwoorden, of een verwijzing naar betreffende documenten bevat. WB003 Voor communicatie binnen het Digikoppeling WUS kanaal wordt de UCS karakterset (ISO/IEC 10646) gebruikt. Deze karakterset omvat (is superset van) de set Unicode, Latin (ISO/IEC 8859-x) en de GBA karakterset. Bij berichtenverkeer speelt de gebruikte karakterset een belangrijke rol. Een serviceafnemer kan in de vraag aanroep karakters gebruikt hebben die niet door de serviceaanbieder ondersteund worden. Voor goede communicatie is het dus belangrijk dat hiervoor afspraken gelden. UCS is de meest uitgebreide karakterset. Toepassen van UTF-8 zorgt er voor dat efficiënt omgegaan wordt met het aantal bytes in het bericht. WB004 Versie aanduiding Er zijn een aantal elementen waaraan een versie aanduiding moet worden toegevoegd. Dit zijn: WSDL/namespace WSDL/Servicenaam WSDL/PortType WSDL/Type(s) (XSD) namespace Er zijn een aantal manieren om de versie van een service aan te duiden. De meest gangbare zijn Major.Minor, Enkelvoudige versie (bijv V1) en YYYY/MM. Het voorstel is om voor zowel de XSD als de WSDL de Enkelvoudige versie aanduiding te gebruiken. Waarom gebruiken we geen major.minor? Er zijn verschillende mogelijkheden om Minor wijzigingen backward compatible te houden, deze worden echter als erg omslachtig beschouwd en/of ze vereisen speciale tooling ondersteuning. Daarom wordt voorgesteld geen onderscheid tussen major en minor te maken, en dus alleen met enkelvoudige versies te werken. Dit heeft als resultaat dat de WSDL en XSD namespace dus alleen de Enkelvoudige aanduiding, zoals _v1 krijgt. Een aantal voorbeelden: WSDL namespace http://wus.osb.gbo.overheid.nl/wsdl/compliance-v1 XSD namespace http:// wus.osb.gbo.overheid.nl/xsd/compliance/xsd/compliance-v1. Servicenaam OSBComplianceService_v1 PortType IOSBComplianceService_v1 De aanduiding YYYY/MM slaat ook op een enkelvoudige versie, d.w.z. zonder onderscheid tussen major en minor. Die aanduiding kan dus ook gebruikt worden. Het lijkt echter aan te bevelen om versies van webservices aan te duiden met (oplopende) versienummers, omdat communicatie daarover iets eenduidiger is. Pagina 6 van 12

WB005 Voor het onderscheid tussen test- en productieservices heeft het de voorkeur dat deze twee op aparte machines komen met een eigen DNS naam (en dus met verschillende PKI overheid certificaten). Aan de locatie (uri) van de service is daardoor te zien of het om een productie- of een testservice gaat. WB006 Gebruik van document/literal wrapped style. In Digikoppeling Koppelvlakstandaard WUS staat de bij voorschrift WW003 dat bij de document literal style de body maar 1 element mag bevatten. Het wordt sterk aangeraden dat dit element de operatie naam bevat voor een bepaald bericht. Deze wordt dus door de xsd beschreven en bevat een beschrijving van de payload. Door deze methode te gebruiken wordt de interoperabiliteit verhoogd, met name tussen Microsoft en andere omgevingen. (zie http://www-128.ibm.com/developerworks/webservices/library/ws-whichwsdl/) Wsdl definition <types> </types> <schema> <element name="mymethod"> <complextype> <sequence> <element name="x" type="xsd:int"/> <element name="y" type="xsd:float"/> </sequence> </complextype> </element> <element name="mymethodresponse"> <complextype/> </element> </schema> <message name="mymethodrequest"> <part name="parameters" element="mymethod"/> </message> <message name="empty"> <part name="parameters" element="mymethodresponse"/> </message> <porttype name="pt"> <operation name="mymethod"> <input message="mymethodrequest"/> <output message="empty"/> </operation> </porttype> bericht: soap:envelope> <soap:body> <mymethod> <x>5</x> <y>5.0</y> </mymethod> </soap:body> </soap:envelope>. Pagina 7 van 12

WB007 Met betrekking tot het verkrijgen van eenduidigheid in de WSDL bestanden, wordt sterk aangeraden dat xml namespace prefixen volgens de WSDL 1.1 specificatie gebruikt worden. (http://www.w3.org/tr/wsdl) 1.2 Notational Conventions ). WB008 Naamgeving conventies Over het algemeen moet de service naam een goede weerspiegeling zijn van de context waarin de service wordt gebruikt. De operatienamen die door deze service ondersteund worden, moeten passen binnen de context van de service en overdadige lange tekststrings moet worden voorkomen. Namespace Het heeft de voorkeur dat een namespace wordt opgebouwd op basis van de domeinnaam van de web service. WB009 Foutafhandeling Bij berichtenuitwisseling tussen een service requester en service provider kunnen fouten optreden. Het is van belang dat er nagedacht wordt over het nut van het communiceren van een bepaalde foutmelding. De beschrijving van een of andere interne fout bij een service provider zal in het algemeen niet interessant zijn voor een requester; het terugmelden van de specifieke oorzaak heeft dan geen zin. Als de oorzaak van de fout bij de service requester ligt, dan dient de foutmelding er op gericht te zijn dat de service requester op basis van de foutmelding de fout kan achterhalen en actie ondernemen. Voor communicatie in het Digikoppeling domein volgens de Koppelvlakstandaard WUS zijn vier verschillende fouttypen te onderkennen: protocolfouten, transportfouten, functionele fouten en technische fouten. Protocol- en transportfouten (dus TLS of HTTP fouten). Protocol- en transportfouten zijn in het algemeen in het protocol gedefinieerd. Wijzigingen daarin - dus aanpassing van standaard software - zijn niet wenselijk. Protocol- en transportfouten worden daarom niet beschreven. De hier beschreven foutmeldingen hebben betrekking op situaties waarin het requestbericht door de web service is ontvangen. Deze kan het echter niet goed verwerken en stuurt daarom een foutmelding terug. Functionele fouten Functionele fouten zijn in het kader van Digikoppeling moeilijk te standaardiseren. Deze zullen voor veel organisaties verschillen en ook het communiceren van de foutmelding zal niet altijd eenduidig zijn. Dit is weliswaar iets wat om aandacht vraagt, maar het valt buiten de scope van Digikoppeling. Technische fouten Voor technische foutmeldingen kan een standaard bericht gedefinieerd worden. In de SOAP specificatie is de SOAP Fault beschreven die je hiervoor goed kunt gebruiken. Communiceren van een fout via een SOAP Fault heeft een aantal voordelen: Uitzonderingen op een consistente manier afgehandeld worden; De SOAPFault wordt beschreven in de SOAP specificatie; De verschillende elementen waaruit een SOAP Fault is opgebouwd biedt de mogelijkheid tot het communiceren van uitgebreide informatie; De FaultCode kan aanduiden of de fout was veroorzaakt door of Server. Een aantal nadelen zijn: Soapfaults kunnen geen binding (HTTP) gerelateerde fout communiceren. In dat geval wordt over het onderliggende protocol de fout gecommuniceerd Bij een SOAPFault bericht mag geen additionele data toegevoegd worden Het detail element van de SOAP Fault is bedoeld om applicatie specifieke foutmeldingen te Pagina 8 van 12

communiceren die gerelateerd zijn aan het SOAP Body element. Het moet aanwezig zijn in de SOAP Fault indien de fout werd veroorzaakt door het Body element. Indien er geen detail element in de SOAP Fault aanwezig is, dan betekent dit dat de fout niet is ontstaan bij het verwerken van het body element. Voor een web service in het Digikoppeling domein moeten foutmeldingen gedefinieerd worden. Neem die foutmeldingen op in de publicatie van de service in het Digikoppeling Service Register. Mogelijke technische foutmeldingen worden in bijlage 2 weergegeven. Een aantal hiervan zijn overgenomen uit de StUF3.00 specificatie. WB010 Voorschrift WA001 van Digikoppeling Koppelvlakstandaard WUS heeft betrekking op WS-Addressing headers. Hier volgen een aantal Best Practices voor de invulling hiervan. MessageID Vulling volgens UUID@URI of GUID@URI heeft de voorkeur. UUID of GUID volgens http://www.ietf.org/rfc/rfc4122.txt URI is een anyuri volgens http://www.w3.org/2001/xmlschema De URI kan de domeinnaam zijn van Digikoppeling messagehandler of de web service namespace. Pagina 9 van 12

Bijlage 1 - Opdeling WSDL in WSDL 1.1 Onderstaande tekst is een citaat uit de WSDL 1.1 Standaard. Het vormt een door Digikoppeling overgenomen best practice bij het schrijven van duidelijke WSDL s. Authoring Style ( W3C Note 15 March 2001) The use of the import element allows the separation of the different elements of a service definition into independent documents, which can then be imported as needed. This technique helps writing clearer service definitions, by separating the definitions according to their level of abstraction. It also maximizes the ability to reuse service definitions of all kinds. As a result, WSDL documents structured in this way are easier to use and maintain. Example 2 below shows how to use this authoring style to define the service presented in Example 1*. Here we separate the definitions in three documents: data type definitions, abstract definitions, and specific service bindings. The use of this mechanism is of course not limited to the definitions explicitly presented in the example, which uses only language elements defined in this specification. Other types of definitions based on additional language extensions can be encoded and reused in a similar fashion. Ofwel: Wijze van notatie ( W3C Note 15 March 2001) Door gebruik van het importelement wordt het mogelijk, de diverse elementen van een servicedefinitie te scheiden in afzonderlijke documenten, die dan naar behoefte geïmporteerd kunnen worden. Met behulp van deze techniek kun je duidelijker servicedefinities schrijven, omdat de definities gescheiden worden al naar gelang hun abstractieniveau. Het vergroot ook het vermogen om allerlei soorten servicedefinities nogmaals te gebruiken. Het gevolg is, dat WSDL documenten die op deze manier gestructureerd zijn, gemakkelijker te gebruiken en te onderhouden zijn. In het 2e voorbeeld hieronder is te zien hoe deze manier van schrijven gebruikt wordt om de service in het 1e voorbeeld* te definiëren. Hier scheiden we de definities in drie documenten: gegevenstype definities, abstracte definities en specifieke service bindings. Natuurlijk is het gebruik van dit mechanisme niet beperkt tot de definities uit het voorbeeld, dat alleen taalelementen gebruikt die in deze specificatie gedefinieerd zijn. Andere typen definities, die op meerdere taalextensies gebaseerd zijn, kunnen op dezelfde manier gecodeerd en hergebruikt worden. * Het voorbeeld waar deze tekst van de WSDL 1.1 standaard naar verwijst wordt is niet in overeenstemming met het Digikoppeling Koppelvlakstandaard WUS profiel (zie voor details CRF 12). Om een indruk te krijgen van de opdeling (authoring style) van een WSDL wordt verwezen naar Bijlage 1 van Digikoppeling Koppelvlakstandaard WUS 1.1. Pagina 10 van 12

Bijlage 2 Foutmeldingen Digikoppeling Beschrijving SOAPFault faultcode SOAPFault SOAPFault Code faultstring detail 0001 Het bericht heeft een invalide envelope namespace (voldoet niet aan de SOAP 1.1 specificatie) VersionMismatch 0002 Het requester systeem is niet geautoriseerd voor deze bevraging 0003 Het requestbericht heeft een SOAPAction die niet voldoet aan wat koppelvlakstandaard WUS voorschrijft 0004 Element binnen de berichtbody is niet conform de XSD Details van element(en) die fout veroorzaken 0005 WS-Addressing header To ontbreekt 0006 WS-Addressing header Action ontbreekt 0007 WS-Addressing header MessageID ontbreekt 0008 WS-Addressing header RelatesTo ontbreekt 0007 Binnen het SOAP body element bevinden zich meer dan 1 subelementen 0008 Bericht is niet volgens documentliteral style 0009 Bericht is niet volgens UTF-8 Karaktercodering. 0010 Bericht bevat headers anders dan WS-Addressing headers 0011 Bericht bevat 1 of meerdere WS- Addressing headers die niet voorgeschreven worden door koppelvlakstandaardd en bevat een waarde anders dan voorgeschreven 0050 Proces voor afhandelen bericht Server Pagina 11 van 12

geeft fout 0051 Het antwoordende systeem is niet in staat de bevraging af te handelen binnen de connectie time out. Server 0100 Opslaan bericht niet mogelijk /Server Pagina 12 van 12