Den Gode Webservice Bilag Version 1.11-18-2-2008
Indhold Bilag 1: Digital signering med XML...3 #1: Opret <ds:signature> XML...5 #2: Indsæt indhold i <ds:reference> XML...5 #2.a: Udpeg det XML, der skal underskrives...5 #2.b: Angiv transformationer af XML-kilden...5 #2.c: Beregn et fingeraftryk af det underskrevne...6 #3: Opret indhold i <ds:signedinfo> XML...7 #4: Underskriv <ds:signedinfo>...8 #5: Gem certifikatet i <ds:keyinfo>...8 #6: Indsæt <ds:signature> i den oprindelige XML...9 #7: Valider signaturen...11 #8: Valider certifikatet...11 Beskedintegritet...13 Bilag 2: Id-kortet...17 SAML:Assertion...18 SAML:Issuer...19 SAML:Conditions...19 SAML:AuthnStatement...19 SAML:AttributeStatement...20 SAML:Subject...23 Niveau 1: Ingen akkreditiver...25 Niveau 2: Brugernavn og password...25 Niveau 3: Digital signatur...25 STS-autentificerede id-kort...27 Bilag 3: Datalister...29 Request-dataliste...30 Response-dataliste...36 RequestSecurityToken-dataliste...40 RequestSecurityTokenResponse-dataliste...44 Bilag 4: Enumerationsliste...49 Bilag 5: OIO-WSDL og DGWS...52 Bilag 6: Testeksempler...55 Request niveau 1...55 Request niveau 2...56 Request niveau 3...57 Response niveau 3...60 Response Fejlet...63 RequestSecurityToken...64 RequestSecurityTokenResponse...66 MedCom. Den Gode Webservice Bilag ver. 1.1 2
Bilag 1: Digital signering med XML Den Gode Webservice anvender XMLSignature-standarden http://www.w3.org/tr/xmldsig-core/ til at indlejre digitale signaturer, der er lavet med private nøgler, der hører til OCES-certifikater. Dette bilag gennemgår, hvordan en digital signatur af XML-elementer skabes og indlejres i Den Gode Webservice, og hvordan signaturen efterfølgende valideres igen. Eksemplet tager udgangspunkt i et id-kort på niveau 3 og beskriver signeringen af id-kortet. Processen omkring signering af SOAP Body sammen med dele af headeren foregår analogt. En webserviceklient ønsker at kalde en webserviceudbyder, og udbyderen kræver autentifikationsniveau 3 af typen user, dvs. at der skal vedlægges et id-kort med en MOCES digital signatur. Klienten starter derfor med at danne SOAP DGWS-kuverten og indlejre id-kortet i ikke-underskrevet form. Det illustreres i nedenstående eksempel (<soap:body> er tom af hensyn til læsbarheden): <?xml version="1.0" encoding="utf-8"?> <soap:envelope > <soap:header> <wsa:messageid id="wsamessageid">urn:uuid:6b29fc40-ca47-1067-b31d-00dd010662da</wsa:messageid> <wsa:replyto id="wsareplyto"> <wsa:address>http://www.w3.org/2005/08/addressing/anonymous</wsa:address> </wsa:replyto> <wsa:to id="wsato">http://nogens.server.medcom/webservice</wsa:to> <wsa:action id="wsaaction">http://nogens.server.medcom/webservice</wsa:action> <wsse:security> <wsu:timestamp> <wsu:created>2006-06-01t08:01:00z</wsu:created> </wsu:timestamp> <saml:assertion IssueInstant="2006-06-01T07:53:00Z" Version="2.0" id="idcard"> <saml:issuer>lægesystema</saml:issuer> <saml:subject> <saml:nameid Format=" http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/cpr_personcivilregistrationidentifier.xsd ">2606444917</saml:NameID> <saml:subjectconfirmation> <saml:confirmationmethod>urn:oasis:names:tc:saml:2.0:cm:holder-ofkey</saml:confirmationmethod> <saml:subjectconfirmationdata> <ds:keyinfo> <ds:keyname>idcardsignature</ds:keyname> </ds:keyinfo> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject> <saml:conditions NotBefore="2006-06-01T08:00:00Z" NotOnOrAfter="2006-07-01T07:53:00Z"/> <saml:authnstatement> <saml:authninstant>2007-11-21t07:55:06z</saml:authninstant> <saml:authncontext> <saml:authncontextclassref> urn:oasis:names:tc:saml:2.0:ac:classes:x509 </saml:authncontextclassref> <saml:catingauthority>lægesystema</saml:catingauthority> </saml:authncontext> </saml:authnstatement> <saml:attributestatement id="idcarddata"> <saml:attribute Name="dgws:IDCardID"> <saml:attributevalue>urn:uuid:abcdefab-cdef-abcd-efab-cdefabcdefab</saml:attributevalue> <saml:attribute Name="dgws:IDCardVersion"> <saml:attributevalue>1.1</saml:attributevalue> <saml:attribute Name="dgws:IDCardType"> <saml:attributevalue>user</saml:attributevalue> MedCom. Den Gode Webservice Bilag ver. 1.1 3
<saml:attribute Name="dgws:vel"> <saml:attributevalue>3</saml:attributevalue> <saml:attribute Name="dgws:UserCivilRegistrationNumber"> <saml:attributevalue>2606444917</saml:attributevalue> <saml:attribute Name="dgws:UserGivenName"> <saml:attributevalue>ole H.</saml:AttributeValue> <saml:attribute Name="dgws:UserSurName"> <saml:attributevalue>berggren</saml:attributevalue> <saml:attribute Name="dgws:UserEmailAddress"> <saml:attributevalue>ohb@nomail.dk</saml:attributevalue> <saml:attribute Name="dgws:UserRole"> <saml:attributevalue>praktiserende_laege</saml:attributevalue> <saml:attribute Name="dgws:UserOccupation"> <saml:attributevalue>maskinarbejder</saml:attributevalue> <saml:attribute Name="dgws:UserAuthorizationCode"> <saml:attributevalue>24778</saml:attributevalue> <saml:attribute Name="dgws:ITSystemName"> <saml:attributevalue>lægesystema</saml:attributevalue> <saml:attribute Name="dgws:OrganisationID" NameFormat="dgws:ynumber"> <saml:attributevalue>079741</saml:attributevalue> <saml:attribute Name="dgws:OrganisationName"> <saml:attributevalue>lægehuset, Vandværksvej</saml:AttributeValue> </saml:attributestatement> </saml:assertion> </wsse:security> </soap:header> <soap:body/> </soap:envelope> Signeringen foregår nu i følgende faser. Resten af bilaget beskriver processen i detaljer: 1) Opret al XML i <ds:signature> (dog uden indhold endnu) 2) Indsæt indhold i <ds:reference>-elementet a. Udpeg det XML, der skal underskrives (id-kortet) b. Transformér id-kortet ved at kanonisere det med C14N-algoritmen c. Beregn et SHA-1- fingeraftryk (digest) af det transfomerede id-kort, base64- konvertér fingeraftrykket og gem det i <ds:digestvalue> 3) Opret indhold i <ds:signedinfo> elementet 4) Signér <ds:signedinfo>-elementet a. Kanonisér <ds:signedinfo>-elementet med C14N-algoritmen b. Beregn et SHA-1- fingeraftryk af det kanoniserede <ds:signedinfo>-element c. Krypter fingeraftrykket med den private RS-nøgle, der hører til OCEScertifikatet d. Base64-konvertér signaturen og gem den i <ds:signaturevalue> 5) Base64-konvertér OCES-certifikatet og gem det i <ds:keyinfo> 6) Indsæt <ds:signature> i den oprindelige XML s id-kort som sidste element i kuverten. MedCom. Den Gode Webservice Bilag ver. 1.1 4
#1: Opret <ds:signature> XML XML-digitale signaturer indlejres i et <ds:signature>-element, hvor ds angiver namespacet http://www.w3.org/2000/09/xmldsig#. Det første skridt til at oprette en XMLsignatur er derfor at oprette de nødvendige XML-elementer. En XML-digital signatur, som anvendes i Den Gode Webservice, har følgende grundstruktur ( angiver de værdier, der efterfølgende skal udfyldes): <ds:signature> <ds:signedinfo> <ds:canonicalizationmethod Algorithm=" "/> <ds:signaturemethod Algorithm=" "/> <ds:reference URI=" "> <ds:transform Algorithm=" "/> <ds:transform Algorithm=" "/> <ds:digestmethod Algorithm=" "/> <ds:digestvalue> </ds:digestvalue> </ds:signedinfo> <ds:signaturevalue> /ds:signaturevalue> <ds:keyinfo> <ds:x509data> <ds:x509certificate> </ds:x509certificate> </ds:x509data> </ds:keyinfo> </ds:signature> SignedInfo udpeger de data, der er digitalt signeret vha. referenceelementer. Hver reference indeholder et beregnet fingeraftryk (digest) og angiver evt. transformationer, der skal foretages på kildeelementerne, inden dette digest kan beregnes. Den digitale signatur laves af SignedInfoelementet. Nøgleinformation, der kan anvendes til at validere den digitale signaturs gyldighed. I DGWS indlejres det OCES-certifikat, der indeholder en nøgle, som kan verificere signaturen. #2: Indsæt indhold i <ds:reference> XML XML-signaturespecifikationen tillader et <ds:signature>-element at underskrive mere end ét XML-element. De elementer i kilden, der skal underskrives, udpeges vha. id -attributter, som angives i <ds:reference>-elementer. #2.a: Udpeg det XML, der skal underskrives I dette tilfælde skal der laves en digital signatur af det id-kort, der er indlejret i DGWSkuverten. Dette id-kort er en <saml:assertion> med id= IDCard. Elementet udpeges via attributten URI: <ds:reference URI="#IDCard"> #2.b: Angiv transformationer af XML-kilden XML kan skrives på flere måder og stadig have samme betydning, f.eks. ved at lave mellemrum mellem tags, ved at anvende en forkortet form af tags uden indhold, f.eks. <br/> i stedet for <br></br> o.lign. Denne fleksibilitet er nyttig, når man vil fastholde betydningen af XML-dokumenter, men skidt, når man vil danne en digital signatur. Signaturen beregnes nemlig ved at fortolke MedCom. Den Gode Webservice Bilag ver. 1.1 5
XML som en strøm af bytes, og derfor vil et ekstra mellemrum ændre signaturen, selvom betydningen af indholdet er den samme! For at sikre, at modtageren af signaturen er i stand til at validere den, er det derfor nødvendigt at transformere det XML, der skal underskrives til en entydig form, som kan genskabes af modtageren. Denne form angives af <ds:transform>-elementet med Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315". Det vil altså sige, at det <saml:assertion>-element, der har id= IDCard, skal transformeres til kanonisk form som angivet af Canonical XML 1.0-specifikationen (se http://www.w3.org/tr/xml-c14n): <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> XML-signaturstandarden tillader tre forskellige måder at tilknytte en signatur til det XML, den underskriver: Det kan indlejres i XML-kilden (Enveloped), det kan indlejre det data, der undskrives som et underelement af signaturelementet (Enveloping), eller det kan ligge ved siden af (Detached). Den Gode Webservice anvender en Enveloped-signatur til id-kort, mens der benyttes en Detached signatur til beskedintegritet. I eksemplet ovenfor er der endnu en <ds:transform> i -elementet, angivet med Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature". Denne transformation fortæller, at <ds:signature>-elementet skal fjernes fra XML-dokumentet, inden signaturen valideres. Transformationerne udføres i den rækkefølge, de forekommer i, dvs. først fjernes en evt. signatur fra kilden, og derpå kanoniseres kilden. #2.c: Beregn et fingeraftryk af det underskrevne Næste skridt er at beregne det egentlige fingeraftryk (kryptografisk digest) af den transformerede udgave af kilden, som udpeget af URI-attributten. Den Gode Webservice anvender SHA-1 (se [SHA-1]), der laver digests med følgende egenskaber: 1) De har altid en fast længde på 160 bytes uanset kildens størrelse. 2) To forskellige beskeder giver altid forskellige digest-værdier. 3) Den samme besked giver altid den samme digest-værdi. 4) Man kan ikke genskabe kilden fra digest-værdien. XML Signature tillader flere forskellige message digest algoritmer (MD5, HMAC, ), men Den Gode Webservice anvender kun SHA-1 (som angives i <ds:digestmethod>elementet): <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue> </ds:digestvalue> MedCom. Den Gode Webservice Bilag ver. 1.1 6
Et SHA-1-digest beregnes nu på den transformerede <saml:assertion id= IDCard >, hvilket resulterer i 160 bytes. Et XML-dokument er altid forbundet med et bestemt tegnsæt, og det er et krav, at alle elementer i dokumentet følger dette. Derfor er det ikke muligt at indlejre de 160 bytes direkte i XML-dokumentet, men det er nødvendigt at transformere dem til en form, der altid er den samme uanset det valgte tegnsæt i XML-dokumentet. Dette gøres med Base64-algoritmen (se [BASE-64]). Base64 algoritmen tager som input en mængde bytes og konverterer disse til en delmængde af ASCII-tegnsættet, som kun udnytter 65 forskellige tegn, dvs. 6 bit. Disse tegn har alle samme repræsentation, uanset det tegnsæt man har valgt, og kan derfor indlejres i alle XML-dokumenter. Digsten indsættes i <ds:digestvalue>: <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>g3cubvicjk36xj0ifycju0l11we=</ds:digestvalue> #3: Opret indhold i <ds:signedinfo> XML Den XML, der underskrives, er ikke, som man måske skulle tro, den digest-værdi, der er beregnet af kilden, men hele <ds:signedinfo>-elementet, som indeholder potentielt flere <ds:reference>-elementer med digest-værdier. For at kunne beregne den egentlige signatur skal der laves endnu et digest, denne gang over <ds:signedinfo>. Som med den oprindelige kilde kan <ds:signedinfo> repræsenteres på flere måder og skal derfor kanoniseres. Algoritmen til dette angives i <ds:canonicalizationmethod>: <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm=" "/> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>g3cubvicjk36xj0ifycju0l11we=</ds:digestvalue> </ds:signedinfo> Endelig skal <ds:signedinfo> angive, hvilken algoritme der skal bruges til at danne den endelige signatur. Den Gode Webservice anvender OCES digitale certifikater, som benytter RSA-nøgler. Samtidig anvendes SHA-1 til at danne Digsten, hvilket giver den kombinerede signatur-algoritme RSA-SHA1: <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> MedCom. Den Gode Webservice Bilag ver. 1.1 7
<ds:digestvalue>g3cubvicjk36xj0ifycju0l11we=</ds:digestvalue> </ds:signedinfo> #4: Underskriv <ds:signedinfo> Den endelige digitale signatur skabes nu ved at: a) kanonisere <ds:signedinfo> b) lave et SHA-1-digest af den kanoniserede XML c) kryptere de 160 bytes med den private nøgle, der hører til MOCES-certifikatet d) base64-kode de krypterede bytes. Resultatet indlejres i <ds:signaturevalue>-elementet: <ds:signature> <ds:signedinfo> </ds:signedinfo> <ds:signaturevalue> BaWKC9PQRD1vDyf6ttx4/OKqP7I4TEm8m0B2AVV4O4OTGHWhkU9j9PvLQBIx+JdOYKGynzMRTJ8GqMJh6gh/cA2mgKJ9b qinrvedxuw4/qntyz0yw/8kso4x7mjda7/pn0owidgcxkw3y4wjglrr2dochinlfg= </ds:signaturevalue> <ds:keyinfo> </ds:keyinfo> </ds:signature> #5: Gem certifikatet i <ds:keyinfo> Når signaturen skal valideres, skal modtageren være i besiddelse af den offentlige nøgle, der kan dekryptere signaturen. Nøglen er indlejret i MOCES-certifikatet, der bl.a. også indeholder et unikt OCES-id, information om, hvem der har udstedt det (TDC), hvem det er udstedt til mv. Man kunne også vælge blot at indlejre RSA-nøglen i signaturen for at spare plads, men så ville det ikke være muligt at fastslå afsenderens identitet via opslag på OCES-id et mod TDC s webservices. Certifikatet base64-kodes inden indlejring og gemmes i <ds:x509certificate>-elementet, der igen indlejres i <ds:x509data> i <ds:keyinfo>-elementet. Den fulde signatur bliver dermed: <ds:signature> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>g3cubvicjk36xj0ifycju0l11we=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue> BaWKC9PQRD1vDyf6ttx4/OKqP7I4TEm8m0B2AVV4O4OTGHWhkU9j9PvLQBIx+JdOYKGynzMRTJ8GqMJh6gh/cA2mgKJ9b qinrvedxuw4/qntyz0yw/8kso4x7mjda7/pn0owidgcxkw3y4wjglrr2dochinlfg= </ds:signaturevalue> <ds:keyinfo> MedCom. Den Gode Webservice Bilag ver. 1.1 8
<ds:x509data> <ds:x509certificate> MIIFBDCCBG2gAwIBAgIEQDZLNzANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGEwJESzEMMAoGA1UENFUyBTeXN0ZW10Z XN0IENBIElJMB4XDTA1MDYwNjEyMDQwMDYwNjEyMzQwMFowfTELMAkGA1UEBhMCREsxLzAtBgNVBAoUJlREQyBUT1RB TEzYU05JMgLy8gQ1ZSOjI1NzY3NTM1MT0wFAYDVQQDEw1UZXN0IEJydWdlciAyMCUGA1UEBRMeZSOjI1NzY3NTM1LVJ JRDoxMTE4MDYxMDQzMzU2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBuvze+4T1i0inhmvafWB2d81q3AG7ds06eG y+eljqyumay5evisv4qynwmnv6y1svi3lpd//wr7+dbanwbuexnlzry4no4u3drdajvl4nkjdv/dkg1pmfuwmaiykqo LTWHe8bCfVPXtovQ12CLO7uydoBzTQIDAQABo4ICzTCCAskwDgYDVR0PAQH/BAQDAgP4MCsGA1UdEAQkMCKAMTIwNDA wwoepmjawnza2mdyxmjm0mdbameygccsgaqufbwebbdowoda2bggrbgefcdovl3rlc3qub2nzcc5jzxj0awzpa2f0lm RrL29jc3Avc3RhdHVzMIIBAwYDVR0gMIH4MIH1BgkpAQEBAQEBAQIwgecwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY 2VydGlmaWthkay9yZXBvc2l0b3J5MIGzBggrBgEFBQcCAjCBpjAKFgNUREMwAwIBARqBl1REQyBUZXN0IENlEgdWRzd GVkZXMgdW5kZXIgT0lEIDEuMS4xLjEuMS4xLjEuxLjIuIFREQyBUZXN0IENlcnRpZmljYXRlcyBmcm9tIHRoaXMgQ0E gyxjliglzc3vlzcb1bmrlxljeums4xljeums4xljeumi4wggyjyiziayb4qgenba0wc2vtcgxvewvlv2vimcagudeqq ZMBeBFXN1cHBvcnRAY2VydGlmaWthdC5kazCBlgYDVR0fBIGOMIGLMFagVKBSpFAwTjELUEBhMCREsxDDAKBgNVBAoT A1REQzEiMCAGA1UEAxMZVERDIE9DRVMgU3lzdGVtdGVzdCBDUEAxMEQ1JMMjAxoC+gLYYraHR0cDovL3Rlc3QuY3JsL m9jzxmuy2vydglmawthkay9vy2vzlmnybdafbgnvhsmegdawgbqcmalhgkw4urdfbclb8froggrmfjadbgnvhq4efgq UpQWIRbZKFhWkcHOi1bgdX4YwCQYDVR0TBAIwADAZBgkqhkiG9n0HQQAEDDAKGwRWNy4xAwIDw0BAQUFAAOBgQBp+zm RburdSGirxmMWFFcT4NaP3W+XRPqY3iCiZuW2FcBrTtHyuFrjbQHg9RznxAgHIpzu/txQsSqv+m76Ki8zB2+r0fwlYr ABvcloPUfRF6pRksYtYNXsnGSRe1147c9K315hXG3QMmuU+rBFyvRGkWx0wIf3lOrLg== </ds:x509certificate> </ds:x509data> </ds:keyinfo> </ds:signature> #6: Indsæt <ds:signature> i den oprindelige XML I Den Gode Webservice indlejres signaturen altid i den oprindelige XML (enveloped). Signaturen af id-kortet på niveau 3 og 4 indlejres lige efter det sidste <saml:attributestatement> i id-kortet. Den oprindelige kuvert, der nu har signaturen indsat i id-kortets <saml:assertion>-element, ses nedenfor: <?xml version="1.0" encoding="utf-8"?> <soap:envelope > <soap:header> <wsa:messageid id="wsamessageid">urn:uuid:6b29fc40-ca47-1067-b31d-00dd010662da</wsa:messageid> <wsa:replyto id="wsareplyto"> <wsa:address>http://www.w3.org/2005/08/addressing/anonymous</wsa:address> </wsa:replyto> <wsa:to id="wsato">http://nogens.server.medcom/webservice</wsa:to> <wsa:action id="wsaaction">http://nogens.server.medcom/webservice</wsa:action> <wsse:security> <wsu:timestamp> <wsu:created>2006-06-01t08:01:00z</wsu:created> </wsu:timestamp> <saml:assertion IssueInstant="2006-06-01T07:53:00Z" Version="2.0" id="idcard"> <saml:issuer>lægesystema</saml:issuer> <saml:subject> <saml:nameid Format=" http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/cpr_personcivilregistrationidentifier.xsd ">2606444917</saml:NameID> <saml:subjectconfirmation> <saml:confirmationmethod>urn:oasis:names:tc:saml:2.0:cm:holder-ofkey</saml:confirmationmethod> <saml:subjectconfirmationdata> <ds:keyinfo> <ds:keyname>idcardsignature</ds:keyname> </ds:keyinfo> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject> <saml:conditions NotBefore="2006-06-01T08:00:00Z" NotOnOrAfter="2006-07-01T07:53:00Z"/> <saml:authnstatement> <saml:authninstant>2007-11-21t07:55:06z</saml:authninstant> <saml:authncontext> <saml:authncontextclassref> urn:oasis:names:tc:saml:2.0:ac:classes:x509 </saml:authncontextclassref> <saml:catingauthority>lægesystema</saml:catingauthority> MedCom. Den Gode Webservice Bilag ver. 1.1 9
</saml:authncontext> </saml:authnstatement> <saml:attributestatement id="idcarddata"> <saml:attribute Name="dgws:IDCardID"> <saml:attributevalue>urn:uuid:abcdefab-cdef-abcd-efab-cdefabcdefab</saml:attributevalue> <saml:attribute Name="dgws:IDCardVersion"> <saml:attributevalue>1.1</saml:attributevalue> <saml:attribute Name="dgws:IDCardType"> <saml:attributevalue>user</saml:attributevalue> <saml:attribute Name="dgws:vel"> <saml:attributevalue>3</saml:attributevalue> <saml:attribute Name="dgws:ClientMOCESHash"> <saml:attributevalue>alilaerbquie1/t6ykrkqlze13y=</saml:attributevalue> <saml:attribute Name="dgws:UserCivilRegistrationNumber"> <saml:attributevalue>2606444917</saml:attributevalue> <saml:attribute Name="dgws:UserGivenName"> <saml:attributevalue>ole H.</saml:AttributeValue> <saml:attribute Name="dgws:UserSurName"> <saml:attributevalue>berggren</saml:attributevalue> <saml:attribute Name="dgws:UserEmailAddress"> <saml:attributevalue>ohb@nomail.dk</saml:attributevalue> <saml:attribute Name="dgws:UserRole"> <saml:attributevalue>praktiserende_laege</saml:attributevalue> <saml:attribute Name="dgws:UserOccupation"> <saml:attributevalue>maskinarbejder</saml:attributevalue> <saml:attribute Name="dgws:UserAuthorizationCode"> <saml:attributevalue>24778</saml:attributevalue> <saml:attribute Name="dgws:ITSystemName"> <saml:attributevalue>lægesystema</saml:attributevalue> <saml:attribute Name="dgws:OrganisationID" NameFormat="dgws:ynumber"> <saml:attributevalue>079741</saml:attributevalue> <saml:attribute Name="dgws:OrganisationName"> <saml:attributevalue>lægehuset, Vandværksvej</saml:AttributeValue> </saml:attributestatement> <ds:signature id="idcardsignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>g3cubvicjk36xj0ifycju0l11we=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue> BaWKC9PQRD1vDyf6ttx4/OKqP7I4TEm8m0B2AVV4O4OTGHWhkU9j9PvLQBIx+JdOYKGynzMRTJ8GqMJh6gh/cA2mgKJ9b qinrvedxuw4/qntyz0yw/8kso4x7mjda7/pn0owidgcxkw3y4wjglrr2dochinlfg= </ds:signaturevalue> <ds:keyinfo> <ds:x509data> <ds:x509certificate> MIIFBDCCBG2gAwIBAgIEQDZLNzANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGEwJESzEMMAoGA1UENFUyBTeXN0ZW10Z XN0IENBIElJMB4XDTA1MDYwNjEyMDQwMDYwNjEyMzQwMFowfTELMAkGA1UEBhMCREsxLzAtBgNVBAoUJlREQyBUT1RB TEzYU05JMgLy8gQ1ZSOjI1NzY3NTM1MT0wFAYDVQQDEw1UZXN0IEJydWdlciAyMCUGA1UEBRMeZSOjI1NzY3NTM1LVJ JRDoxMTE4MDYxMDQzMzU2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBuvze+4T1i0inhmvafWB2d81q3AG7ds06eG y+eljqyumay5evisv4qynwmnv6y1svi3lpd//wr7+dbanwbuexnlzry4no4u3drdajvl4nkjdv/dkg1pmfuwmaiykqo MedCom. Den Gode Webservice Bilag ver. 1.1 10
LTWHe8bCfVPXtovQ12CLO7uydoBzTQIDAQABo4ICzTCCAskwDgYDVR0PAQH/BAQDAgP4MCsGA1UdEAQkMCKAMTIwNDA wwoepmjawnza2mdyxmjm0mdbameygccsgaqufbwebbdowoda2bggrbgefcdovl3rlc3qub2nzcc5jzxj0awzpa2f0lm RrL29jc3Avc3RhdHVzMIIBAwYDVR0gMIH4MIH1BgkpAQEBAQEBAQIwgecwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY 2VydGlmaWthkay9yZXBvc2l0b3J5MIGzBggrBgEFBQcCAjCBpjAKFgNUREMwAwIBARqBl1REQyBUZXN0IENlEgdWRzd GVkZXMgdW5kZXIgT0lEIDEuMS4xLjEuMS4xLjEuxLjIuIFREQyBUZXN0IENlcnRpZmljYXRlcyBmcm9tIHRoaXMgQ0E gyxjliglzc3vlzcb1bmrlxljeums4xljeums4xljeumi4wggyjyiziayb4qgenba0wc2vtcgxvewvlv2vimcagudeqq ZMBeBFXN1cHBvcnRAY2VydGlmaWthdC5kazCBlgYDVR0fBIGOMIGLMFagVKBSpFAwTjELUEBhMCREsxDDAKBgNVBAoT A1REQzEiMCAGA1UEAxMZVERDIE9DRVMgU3lzdGVtdGVzdCBDUEAxMEQ1JMMjAxoC+gLYYraHR0cDovL3Rlc3QuY3JsL m9jzxmuy2vydglmawthkay9vy2vzlmnybdafbgnvhsmegdawgbqcmalhgkw4urdfbclb8froggrmfjadbgnvhq4efgq UpQWIRbZKFhWkcHOi1bgdX4YwCQYDVR0TBAIwADAZBgkqhkiG9n0HQQAEDDAKGwRWNy4xAwIDw0BAQUFAAOBgQBp+zm RburdSGirxmMWFFcT4NaP3W+XRPqY3iCiZuW2FcBrTtHyuFrjbQHg9RznxAgHIpzu/txQsSqv+m76Ki8zB2+r0fwlYr ABvcloPUfRF6pRksYtYNXsnGSRe1147c9K315hXG3QMmuU+rBFyvRGkWx0wIf3lOrLg== </ds:x509certificate> </ds:x509data> </ds:keyinfo> </ds:signature> </saml:assertion> </wsse:security> </soap:header> <soap:body/> </soap:envelope> #7: Valider signaturen For at validere signaturen skal man stort set gøre det samme, som når man skaber den. Modtageren skal gøre følgende: 1) Valider <ds:reference> a. Udpeg det XML, hvis signatur der skal valideres (id-kortet). b. Transformer id-kortet ved at fjerne den indlejrede signatur fra XML (enveloped transform). c. Transformer id-kortet ved at kanonisere det med C14N-algoritmen. d. Beregn et SHA-1- fingeraftryk (digest) af det transfomerede id-kort. e. Base64-dekod <ds:digestvalue> og sammenlign med det beregnede fingeraftryk. De skal være ens. 2) Valider <ds:signaturevalue> a. Kanoniser <ds:signedinfo-elementet med C14N-algoritmen. b. Beregn et SHA-1-fingeraftryk af det kanoniserede <ds:signedinfo>-element. c. Base64-dekod OCES-certifikatet i <ds:keyinfo> og find den offentlige nøgle. d. Dekrypter værdien af <ds:signaturevalue> med den offentlige nøgle. e. Sammenlign det beregnede fingeraftryk med det dekrypterede. De skal være ens. #8: Valider certifikatet Før eller efter signaturen er valideret (det er underordnet hvornår), skal certifikatets gyldighed tjekkes.oces-certifikater indeholder information om, hvem der har udstedt dem, hvornår de er blevet udstedt og til hvem. Certifikatet indeholder også en række tekniske værdier. Eksemplet nedenfor viser information fra et TDC test-moces-certifikat, som er udstedt til brugeren Test Bruger 2 fra organisationen TDC TOTALLØSNINGER A/S af certifikat-autoriteten (CA) TDC OCES Systemtest CA II : MedCom. Den Gode Webservice Bilag ver. 1.1 11
Figur 1: Udsnit af OCES certifikat indhold Før signaturen tjekkes, skal man først sikre sig, at certifikatet er gyldigt. Det gøres ved at undersøge følgende punkter: 1) Er certifikatet udløbet? I figuren ovenfor er certifikatets gyldighed angivet i felterne Not Valid Before og Not Valid After. Hvis dags dato ikke er inden for denne periode, er certifikatet ikke gyldigt. 2) Er certifikatet et validt OCES? Certifikater kan udstedes af mange forskellige autoriteter, herunder Thawte, Verisign, mfl. Certifikatet ovenfor er udstedt af TDC s test-ca-facilitet, mens et produktionscertifikat vil være udstedt af TDC OCES CA. CA har lavet en digital signatur, der er angivet i feltet Signature nederst. Denne signatur valideres med CA s offentlige nøgle fra dennes certifikat, som forventes at være installeret på forhånd. 3) Er certifikatet spærret? Brugere, der forlader en organisation eller bliver forment adgang, kan blive spærret af en lokal certifikatautoritet (fra den organisation, der står trykt i certifikatet). CA publicerer en liste over spærrede certifikater (CRL), som kan downloades og efterfølgende tjekkes op mod det medsendte certifikat. Alternativt kan man kalde en såkaldt OCSP- (Online Certificate Status Protocol) service for at høre, om certifikatet er blevet spærret. TDC understøtter begge metoder. MedCom. Den Gode Webservice Bilag ver. 1.1 12
Beskedintegritet På niveau 3 er det påkrævet at request og responsebeskeder beskytter selve beskedens indhold vha. en digital signatur lavet med et VOCES certifikat. Formålet er at sikre, at det ikke er muligt at manipulere med beskedens indhold, id-kortet og adresseringsoplysningerne uden at det vil blive opdaget, samt at sikre at id-kortet ikke kan stjæles (se hoveddokumentet for en diskussion). Dette gøres ved at binde disse elementer sammen under samme signatur. Selve signeringsprocessen forløber præcis som beskrevet tidligere i dette afsnit, men i stedet for kun en Reference, udpeges følgende elementer: WS-Addressing headere i requests: wsamessageid, wsareplyto, wsato, wsaaction WS-Addressing headere i response: wsamessageid, wsarelatesto, wsato, wsaaction Kroppen af beskeden: body Id-kortet: IDCard Ds:Signature elementet for beskedintegritet for en requestbesked ser ud som følger: <ds:signature id="messagesignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#wsamessageid"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>1234bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsareplyto"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>5678bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsato"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>9012bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsaaction"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>abcdbvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#body"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>fklmbvicjk36xj0ifycju0l11we=</ds:digestvalue> MedCom. Den Gode Webservice Bilag ver. 1.1 13
<ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>fklmbvicjk36xj0ifycju0l11we=</ds:digestvalue> </ds:signedinfo> For responsebeskeder er wsareplyto erstattet med en reference til wsarelatesto elementet. Den digitale signatur for beskedintegritet indlejres umiddelbart efter id-kortets SAML Assertion. Det ser ud som følger (med id-kortets indhold fjernet fra eksemplet aht. læsbarheden): <?xml version="1.0" encoding="utf-8"?> <soap:envelope > <soap:header> <wsa:messageid id="wsamessageid">urn:uuid:6b29fc40-ca47-1067-b31d-00dd010662da</wsa:messageid> <wsa:replyto id="wsareplyto"> <wsa:address>http://www.w3.org/2005/08/addressing/anonymous</wsa:address> </wsa:replyto> <wsa:to id="wsato">http://nogens.server.medcom/webservice</wsa:to> <wsa:action id="wsaaction">http://nogens.server.medcom/webservice</wsa:action> <wsse:security> <wsu:timestamp> <wsu:created>2007-11-21t08:01:00z</wsu:created> </wsu:timestamp> <saml:assertion id="idcard" IssueInstant="2007-11-21T07:55:12Z" Version="2.0"> <saml:issuer>sosi-sts</saml:issuer> <saml:subject> <saml:nameid Format=" http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/cpr_personcivilregistrationidentifier.xsd ">2606444917</saml:NameID> <saml:subjectconfirmation> <saml:confirmationmethod>urn:oasis:names:tc:saml:2.0:cm:holder-ofkey</saml:confirmationmethod> <saml:subjectconfirmationdata> <ds:keyinfo> <ds:keyname>idcardsignature</ds:keyname> </ds:keyinfo> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject> <saml:conditions NotBefore="2007-11-21T07:55:12Z" NotOnOrAfter="2007-11-22T07:55:12Z"/> <saml:authnstatement> <saml:authninstant>2007-11-21t07:55:06z</saml:authninstant> <saml:authncontext> <saml:authncontextclassref> urn:oasis:names:tc:saml:2.0:ac:classes:x509 </saml:authncontextclassref> <saml:catingauthority>sosi-sts</saml:catingauthority> </saml:authncontext> </saml:authnstatement> <saml:attributestatement id="idcarddata"> </saml:attributestatement> <ds:signature id="idcardsignature"> </ds:signature> </saml:assertion> <ds:signature id="messagesignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#wsamessageid"> MedCom. Den Gode Webservice Bilag ver. 1.1 14
<ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>1234bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsareplyto"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>5678bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsato"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>9012bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsaaction"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>abcdbvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#body"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>fklmbvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>fklmbvicjk36xj0ifycju0l11we=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue> SklMC9PQRD1vDyf6ttx4/OKqP7I4TEm8m0B2AVV4O4OTGHWhkU9j9PvLQBIx+JdOYKGynzMRTJ8G j5qmjh6gh/ca2mgkj9bqinrvedxuw4/qntyz0yw/8kso4x7mjda7/pn0owidgcxkw3y4wjglrr2d DFqTSzKLyR5ochINlFg=</ds:SignatureValue> <ds:keyinfo> <ds:x509data> <ds:x509certificate> PUUKBDCCBG2gAwIBAgIEQDZLNzANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGEwJESzEMMAoGA1UE ChMDVERDMSIwIAYDVQQDExlUREMgT0NFUyBTeXN0ZW10ZXN0IENBIElJMB4XDTA1MDYwNjEyMDQw MFoXDTA3MDYwNjEyMzQwMFowfTELMAkGA1UEBhMCREsxLzAtBgNVBAoUJlREQyBUT1RBTEzYU05J TkdFUiBBL1MgLy8gQ1ZSOjI1NzY3NTM1MT0wFAYDVQQDEw1UZXN0IEJydWdlciAyMCUGA1UEBRMe Q1ZSOjI1NzY3NTM1LVJJRDoxMTE4MDYxMDQzMzU2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB gqdma2uvze+4t1i0inhmvafwb2d81q3ag7ds06egy+eljqyumay5evisv4qynwmnv6y1svi3lpd/ oqkdeyntegms/wr7+dbanwbuexnlzry4no4u3drdajvl4nkjdv/dkg1pmfuwmaiykqoltwhe8bcf 7VPXtovQ12CLO7uydoBzTQIDAQABo4ICzTCCAskwDgYDVR0PAQH/BAQDAgP4MCsGA1UdEAQkMCKA DzIwMDUwNjA2MTIwNDAwWoEPMjAwNzA2MDYxMjM0MDBaMEYGCCsGAQUFBwEBBDowODA2BggrBgEF BQcwAYYqaHR0cDovL3Rlc3Qub2NzcC5jZXJ0aWZpa2F0LmRrL29jc3Avc3RhdHVzMIIBAwYDVR0g BIH7MIH4MIH1BgkpAQEBAQEBAQIwgecwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWth dc5kay9yzxbvc2l0b3j5migzbggrbgefbqccajcbpjakfgnuremwawibarqbl1reqybuzxn0ienl cnrpzmlryxrlcibmcmegzgvubmugq0egdwrzdgvkzxmgdw5kzxigt0leideums4xljeums4xljeu MS4xLjIuIFREQyBUZXN0IENlcnRpZmljYXRlcyBmcm9tIHRoaXMgQ0EgYXJlIGlzc3VlZCB1bmRl cibpsuqgms4xljeums4xljeums4xljeumi4wggyjyiziayb4qgenba0wc2vtcgxvewvlv2vimcag A1UdEQQZMBeBFXN1cHBvcnRAY2VydGlmaWthdC5kazCBlgYDVR0fBIGOMIGLMFagVKBSpFAwTjEL MAkGA1UEBhMCREsxDDAKBgNVBAoTA1REQzEiMCAGA1UEAxMZVERDIE9DRVMgU3lzdGVtdGVzdCBD QSBJSTENMAsGA1UEAxMEQ1JMMjAxoC+gLYYraHR0cDovL3Rlc3QuY3JsLm9jZXMuY2VydGlmaWth dc5kay9vy2vzlmnybdafbgnvhsmegdawgbqcmalhgkw4urdfbclb8froggrmfjadbgnvhq4efgqu nqf7pqwirbzkfhwkchoi1bgdx4ywcqydvr0tbaiwadazbgkqhkig9n0hqqaeddakgwrwny4xawid MedCom. Den Gode Webservice Bilag ver. 1.1 15
qdanbgkqhkig9w0baqufaaobgqbp+zmrburdsgirxmmwffct4nap3w+xrpqy3icizuw2fcbrtthy ani91ufrjbqhg9rznxaghipzu/txqssqv+m76ki8zb2+r0fwlyrabvclopufrf6prksytynxsngs hqn6re1147c9k315hxg3qmmuu+rbfyvrgkwx0wif3lorlg==</ds:x509certificate> </ds:x509data> </ds:keyinfo> </ds:signature> </wsse:security> </soap:header> <soap:body id="body"/> </soap:envelope> MedCom. Den Gode Webservice Bilag ver. 1.1 16
Bilag 2: Id-kortet I Den Gode Webservices requestbeskeder og i visse responsebeskeder findes oplysninger om bruger og system, herunder sikkerhedsoplysninger. Oplysningerne indlejres i en såkaldt SAML Assertion, der standardiserer denne type information. Denne SAML Assertion kaldes i DGWS for beskedens id-kort, fordi det angiver afsenderens identitet i bred forstand. Id-kortet er en pendant til det fysiske id-kort, man anvender i mange virksomheder, og som dels identificerer indehaveren, dels giver dennes adgang til forskellige afdelinger. Ud over oplysninger om brugeren og systemet indeholder id-kortet akkreditiver, der bruges til autentifikation. Et akkreditiv kan være enten et brugernavn og password, eller en OCES digital signatur. Figuren nedenfor viser et id-kort udstedt af et lokalt system SOSI-GW Region Østdanmark på vegne af et it-system EMJ 2.3. Id-kortet identificerer en slutbruger, Ole H. Berggren med CPR-nummer 0101874590, som er autoriseret læge. Assertion Version : 2.0 ID : IDCard IssueInstant : 03-25-2007T12:23:09Z Issuer SOSI-GW Region Østdanmark Subject 0101874590 Conditions NotBefore: 03-25-2007T12:23:09Z NotOnOrAfter : 03-26-2007T12:23:09Z Id-kortet Kort-udstederen Den, kortet er udstedt til Gyldighedsperiode AuthnStatement AuthnContextClassRef : urn:oasis:names:tc:saml:2.0:ac:classes:xmldsig catingauthority : SOSI-STS AttributeStatement (id-kort oplysninger) IDCardID : YNhuXVmVd0C/Lw53CnredA== IDCardVersion : 1.1 IDCardType : User vel : 3 MOCESCertHash : ALiLaerBquie1/t6ykRKqLZe13Y= VOCESCertHash : BKiLaerZquie3/t6ykRKqRYe56P= UserCivilRegistrationNumber : 0101874590 UserGivenName : Ole UserSurName : H. Berggren UserEmailAddress : oleh@afb.hosp.dk CareProviderName : Lægehuset UserRole : PRIVATPRAKTISERENDE UserOccupation : Læge UserAuthorizationCode : 6422 CareProviderID : 1234 Autentifikationsoplysninger Oplysninger om idkortet Oplysninger om den person, kortet er udstedt til Akkreditiver XML Digital Signatur eller brugernavn & password Figur 2: Id-kortets overordnede struktur MedCom. Den Gode Webservice Bilag ver. 1.1 17
Id-kortet i eksemplet er blevet verificeret af en betroet 3.part, SOSI-STS, der har verificeret den digitale medarbejdersignatur som id-kortet var signeret med. Kortet er gyldigt fra det tidspunkt det blev skabt af SOSI-GW Region Østdanmark, dvs. fra den 25/3-2007 kl. 12:23:09 zulu tid (13:23:09 dansk sommertid) til 24 timer efter den 26/3-2007 kl. 12:23:09 zulu tid. Id-kortets akkreditiver er ikke vist i detaljer. Der henvises til afsnittet om Autentifikation, som angiver reglerne for akkreditiver og autentifikationsniveauer i detaljer. Id-kortet består af følgende overordnede afsnit: 1. saml:assertion er det XML element, der samler hele id-kortet og angiver hvilken version af SAML der anvendes. 2. saml:issuer angiver hvem der har dannet id-kortet. 3. saml:subject er SAML s måde at angive den bruger eller det system, som idkortets andre attributter henfører til. 4. saml:conditions benyttes i Den Gode Webservice til at angive id-kortets gyldighed, som er 24 timer efter det tidspunkt kortet blev dannet på. Gyldigheden kan benyttes af webserviceudbydere, når det skal afgøres, om de kan have tillid til id-kortet. 5. saml:authnstatement indeholder oplysninger om den, der verificerede id-kortets akkreditiver 6. saml:attributestatement angiver attributter om den identitet der angives ved idkortet herunder oplysninger om kortet selv, brugeroplysninger, organisationsdata, mm. På XML form som SAML 2.0 assertion ser id-kortet overordnet sådan ud: <saml:assertion id="idcard"> <saml:issuer> </saml:issuer> <saml:subject> </saml:subject> <saml:conditions NotBefore="2006-01-05T07:53:00.00" NotOnOrAfter="2006-01-06T07:53:00.000"/> <saml:authnstatement> </saml:authnstatement> <saml:attributestatement> </saml:attributestatement> </saml:assertion> SAML:Assertion Det samlende element, der angiver hele id-kortet har følgende umiddelbare elementer: Element Beskrivelse Indhold Til stede? @IssueInstant Tidspunkt for hvornår dette datetime Altid MedCom. Den Gode Webservice Bilag ver. 1.1 18
@Version @ID Eksempel: id-kort blev dannet Version af SAML, der benyttes Identifikation af denne Assertion 2.0 Altid IDCard Altid <saml:assertion IssueInstant="2006-06-01T07:53:00Z" Version="2.0" id="idcard"> SAML:Issuer Angiver hvem der har dannet id-kortet. Dette er typisk det afsendende it-system eller en proxy / gateway. Element Beskrivelse Indhold Til stede? saml:issuer Angiver hvem der har dannet id-kortet String Altid Eksempel: <saml:issuer>lægesystema</saml:issuer> SAML:Conditions Benyttes til at angive hvor længe id-kortet er gyldigt. Et id-kort er gyldigt i 24 timer regnet fra det tidspunkt id-kortet dannes. I single-signon betyder det, at det er tidligere end det tidspunkt hvor STS en verificerer signaturen. Element Beskrivelse Indhold Til stede? @NotBefore Det tidspunkt fra hvilket id-kortet er gyldigt datetime Altid @NotOnOrAfter Det tidspunkt hvor til id-kortet er gyldigt datetime Altid Eksempel: <saml:conditions NotBefore="2006-06-01T08:00:00Z" NotOnOrAfter="2006-07-01T07:53:00Z"/> SAML:AuthnStatement Ved single-signon angiver dette element hvilken betroet tredjepart der har verificeret idkortet (STS en), samt hvilken type af akkrediv, den betroede tredjepart modtog. Ved signon-scenarier angiver elementet hvilken type akkreditiv, klient-systemet har verificeret. MedCom. Den Gode Webservice Bilag ver. 1.1 19
Element Beskrivelse Indhold Til stede? saml:authninstant Det tidspunkt, hvor brugerens akkreditiver blev verificeret datetime Altid saml:authncontextclassref Angivelse af typen af de verificerede akkreditiver urn:oasis:names: tc:saml: 2.0:ac:classes: X509 for digital signatur og urn:oasis:names: tc:saml: 2.0:ac:classes: Password for brugernavn / Niveau 2-3 saml:catingauthority Navn på den autoritet der verificerede akkreditiverne Eksempel: password. String <saml:authnstatement> <saml:authninstant>2007-03-25t25:47:19z</saml:authninstant> <saml:authncontext> <saml:authncontextclassref> urn:oasis:names:tc:saml:2.0:ac:classes:x509 </saml:authncontextclassref> <saml:catingauthority>sosi- STS</saml:catingAuthority> </saml:authncontext> </saml:authnstatement> Altid SAML:AttributeStatement I id-kortets AttributeStatement lagres oplysninger om brugeren og dennes kontekst, samt yderligere information om kortet. De informationer der findes her kan inddeles i 3 grupper: oplysninger om id-kortet, oplysninger om brugeren, samt oplysninger om organisationen. Nedenfor listes de oplysninger der vedrører id-kortet Attributnavn Beskrivelse Indhold Til stede? dgws:idcardid Ethvert id-kort har et unikt id, String Altid angivet som et UUID. dgws:idcardversion Den version af DGWS som dette id-kort passer til. 1.1 Altid dgws:idcardtype Angiver om dette id-kort user eller Altid identificerer en bruger ( user ) system eller et it-system ( system ) MedCom. Den Gode Webservice Bilag ver. 1.1 20
dgws:vel Det niveau af autentifikation, der anvendes i dette id-kort 1, 2 eller Altid Figuren nedenfor viser de elementer der beskriver yderligere oplysninger om id-kortet: <saml:attribute Name="dgws:IDCardID"> <saml:attributevalue> 550e8400-e29b-41d4-a716-446655440000 </saml:attributevalue> <saml:attribute Name="dgws:IDCardVersion"> <saml:attributevalue>1.1</saml:attributevalue> <saml:attribute Name="dgws:IDCardType"> <saml:attributevalue>user</saml:attributevalue> <saml:attribute Name="dgws:vel"> <saml:attributevalue>3</saml:attributevalue> Figur 3: Data om id-kortet Et id-korts vigtigste funktion er at levere oplysninger om dets indehaver ved identifikation, adgangskontrol, logning mv. Attributnavn Beskrivelse Indhold Til stede? dgws:usercivilregistration CPR nummer på String Number brugeren Altid når IDCardType = user, aldrig ellers. dgws:usergivenname Fornavn String Altid når IDCardType = user, aldrig ellers. dgws:usersurname Efternavn String Altid når IDCardType = user, aldrig ellers. dgws:useremailaddress Emailadresse String Optionel når IDCardType = user, aldrig ellers. dgws:userrole Den rolle, hvori brugeren agerer pt. String Optionel når IDCardType = user, aldrig ellers. dgws:useroccupation Brugeren profession String Optionel når IDCardType = user, aldrig ellers. MedCom. Den Gode Webservice Bilag ver. 1.1 21
dgws:userauthorizationcode dgws:clientmoceshash Autorisationskode fra Sundhedsstyrelsens autorisationsregister. Base 64 kodet SHA- 1 message digest af klientens MOCES certifikat på niveau 3. På alle andre niveauer udelades denne attribut Integer(5) Base64Binary Optionel når IDCardType = user, aldrig ellers. Anvendes kun i et SSO scenarium. Altid når cation Level er 3 og type er user, ellers ikke. Eksemplet nedenfor viser brugerinformationer for en fiktiv praktiserende læge, hvis organisation er angivet med et ydernummer: <saml:attribute Name="dgws:UserCivilRegistrationNumber"> <saml:attributevalue>1903991234</saml:attributevalue> <saml:attribute Name="dgws:UserGivenName"> <saml:attributevalue>jens</saml:attributevalue> <saml:attribute Name="dgws:UserSurName"> <saml:attributevalue>hansen</saml:attributevalue> <saml:attribute Name="dgws:UserEMailAddress"> <saml:attributevalue>jh@nomail.dk</saml:attributevalue> <saml:attribute Name="dgws:UserRole"> <saml:attributevalue>praktiserende_laege</saml:attributevalue> <saml:attribute Name="dgws:UserOccupation"> <saml:attributevalue>overlæge</saml:attributevalue> <saml:attribute Name="dgws:UserAuthorizationCode"> <saml:attributevalue>12345</saml:attributevalue> <saml:attribute Name="dgws:ClientMOCESHash"> <saml:attributevalue>alilaerbquie1/t6ykrkqlze13y=</saml:attributevalue> Figur 4: Medarbejderinformationer Alle id-kort, uanset om de gælder for en medarbejder eller en applikation, skal anvendes gennem et klientsystem, som en evt. medarbejder så benytter. Oplysninger om dette system findes i SystemLog: Attributnavn Beskrivelse Indhold Til stede? OrganisationID Id på den organisation, der driver it-systemet. Kan være Integer Altid et CVR-nummer, et P- nummer, en SKS-kode, et MedCom. Den Gode Webservice Bilag ver. 1.1 22
ydernummer, kommunenummer, lokationsnummer eller andet, som angivet i attributtens type. OrganisationName Navn på den organisation, der driver it-systemet. ClientVOCESHash Base 64 kodet SHA-1 message digest af klientens VOCES certifikat på niveau 3. Certifikatet er det, der anvendes til message authentication. Udelades på andre niveauer. String Optionel Base64Binary Anvendes kun i et SSO scenarium. Altid til stede når vel er og tilladt når vel er 2 eller 1. Eksemplet nedenfor angiver en organiation givet ved ydernummer 123456 kaldet Hansens Lægepraksis. Id-kortet blev desuden sendt til STS en i en kuvert der var signeret med det VOCES certifikat, hvis SHA-1 hashværdi er angivet i ClientVOCESHash. Det samme certifikat skal fremover anvendes til at underskrive beskeden når id-kortet sendes til en serviceudbyder. <saml:attribute Name="dgws:OrganisationID" NameFormat="urn:dgws:names:careprovider:ynumber"> <saml:attributevalue>123456</saml:attributevalue> <saml:attribute Name="dgws:OrganisationName"> <saml:attributevalue>hansens Lægepraksis</saml:AttributeValue> <saml:attribute Name="dgws:ClientVOCESHash"> <saml:attributevalue>blulaerbquie1/t6ykrkqlze13y=</saml:attributevalue> Figur 5: Oplysninger om afsendersystemet SAML:Subject I klassiske autentifikationsscenarier sendes akkreditiverne kun, når der skal logges på, og der sendes ikke egentlige oplysninger om brugeren og systemet, som det er tilfældet i Den Gode Webservice. Den part, der foretager autentifikationen, kan så selv associere aftageren med flere oplysninger, f.eks. baseret på et bagvedliggende brugerkatalog eller lignende. I Den Gode Webservice er den gængse autentifikationsmodel udvidet en anelse, idet der sammen med akkreditiver også sendes egentlige oplysninger om slutbrugeren, og det system vedkommende kom fra. Det er så op til webserviceudbyderen og/eller identitetsservicen at validere disse påstande eller at stole på dem. Modellen gør det muligt at kommunikere et fælles sæt oplysninger med 3 forskellige grader af autentifikationsniveau. MedCom. Den Gode Webservice Bilag ver. 1.1 23
I det mest pålidelige scenario har en klient eller en identitetsservice tjekket digitalt signerede brugerinformationer mod bagvedliggende centrale registre. I det mindst pålidelige scenario er der ingen akkreditiver, og modtageren må stole blindt på afsenderens oplysninger i id-kortet. Figuren nedenfor viser id-kortet og de mulige akkreditiver, der kan indsættes i og sammen med det: Figur 6: Id-kortet og akkreditiver i en DGWS-besked På alle niveauer findes følgende elementer under <Subject>: Element Beskrivelse Indhold Til stede?./nameid Identifikation af person eller system. CPRnummer for person. Itsystemnavn, ellers. String Altid./NameID@Format Hvilket format indhold Se enumerationslisten Altid er angivet i /SubjectConfirm ationmethod /KeyName Angiver hvordan brugeren identificeres. Ved digital signatur angives holder-of-key og ved brugernavnpassword angives bearer Angiver en reference til den nøgle der identificerer brugeren. urn:oasis:names:tc: SAML:2.0:cm:holder-ofkey ved digital signatur. urn:oasis:names:tc: SAML:2.0:cm:bearer ved password String. Reference til den nøgle der findes andetsteds og evt. i kuverten (se beskrivelse nedenfor). Altid på niveau 3, aldrig ellers Altid på niveau 3, aldrig ellers MedCom. Den Gode Webservice Bilag ver. 1.1 24
Niveau 1: Ingen akkreditiver På niveau 1 medsendes ingen akkreditiver i id-kortet, som derfor udelukkende indeholder oplysninger om kort, medarbejder og system, men ingen mulighed for at verificere identiteten. <saml:subject> <saml:nameid Format="http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/CPR_PersonCivilRegi strationidentifier.xsd">1903701234</saml:nameid> </saml:subject> Niveau 2: Brugernavn og password Når der anvendes brugernavn og password til autentifikation, indlejres denne information som et webservice security (wsse) UsernameToken-element inde i subject-elementet. Webserviceudbyder anvender brugernavn og password til at verificere brugerens identitet, og informationen lagres derfor i SubjectConfirmationData, som vist på figuren nedenfor: <saml:subject> <saml:nameid Format="http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/CPR_PersonCivilRegi strationidentifier.xsd">1903701234</saml:nameid> <saml:subjectconfirmation> <saml:confirmationmethod>urn:oasis:names:tc:saml:2.0:cm:holder-ofkey</saml:confirmationmethod> <saml:subjectconfirmationdata> <wsse:usernametoken> <wsse:username>epmui01</wsse:username> <wsse:password>dfh1241</wsse:password> </wsse:usernametoken> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject> Figur 7: Brugernavn og password som akkreditiver Brugernavn angives i wsse:username, mens password angives i wsse:password. For begge felter gælder det, at informationen altid lagres i klar tekst. I figuren ovenfor findes ud over brugernavn og password et NameID, der angiver den bruger, id-kortet identificerer. I dette tilfælde er brugeren angivet som CPR-nummeret på medarbejderen, 1903701234, og i OIO-formatet for CPR-numre. Niveau 3: Digital signatur På niveau 3 anvendes digitale signaturer til at verificere et system eller en bruger. OCESstandarden definerer VOCES-certifikatet til identifikation af virksomheder og MOCES til identifikation af medarbejdere. Det er disse to OCES-certifikattyper, Den Gode Webservice anvender: Hvis authenticationlevel er mens type er system, anvendes VOCES og MOCES hvis type er user. MedCom. Den Gode Webservice Bilag ver. 1.1 25
På niveau 3 er akkreditivet en digital signatur af id-kortet, der er dannet med den private nøgle, som kun afsenderen har adgang til. Signaturen er i de fleste tilfælde selvindeholdt, dvs. at det certifikat, der hører til, også er indlejret i signaturen, så det er nemt at validere. Hvis der anvendes en identitetsservice, kan man dog vælge at indlejre certifikatets serienummer i stedet for, hvis man vurderer, at identitetesservicens certifikat er kendt af alle i føderationen. De digitale signaturer indlejres i selve id-kortet efter kort-, bruger- og systemoplysningerne, som vist på figuren nedenfor. Bemærk, at signaturer, attributter mv. er forkortet med... af hensyn til læsbarheden: <ds:signature wsu:id="idcardsignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n- 20010315"/> <ds:digestvalue>alilaerbquie1/t6ykrkqlze13y=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue>/joag4rvdbkbkpb5q2 </ds:signaturevalue> <ds:keyinfo> <ds:x509data> <ds:x509certificate> /wmwdqyjkozihvcnaq </ds:x509certificate> </ds:x509data> </ds:keyinfo> </ds:signature> <saml:subject> <saml:nameid>1903701234</saml:nameid> <saml:subjectconfirmation> <saml:confirmationmethod> urn:oasis:names:tc:saml:2.0:cm:holder-of-key </saml:confirmationmethod> <saml:subjectconfirmationdata> <ds:keyinfo> <ds:keyname>idcardsignature</ds:keyname> </ds:keyinfo> </saml:subjectconfirmationdata> </saml:subjectconfirmation> Figur 8: Digitale signaturer som akkreditiver MedCom. Den Gode Webservice Bilag ver. 1.1 26
Det indlejrede saml:subject-element indeholder en reference til signaturen, hvor værdien af ds:keyname -elementet, IdCardSignature, matcher id et på ds:signature-elementet. STS-autentificerede id-kort Normalt skaber klienten selv id-kortet og sender det og egne akkreditiver med i hvert eneste kald. Hvis der er behov for niveau 3-autentifikation, er det altså klientens digitale signaturer med MOCES og/eller VOCES, der medsendes. I SingleSignon-scenariet forholder sagen sig lidt anderledes. Her vil identitetsservicen validere id-kortet, fjerne de gamle akkreditiver og selv underskrive det med sin egen private VOCES-nøgle, inden det returneres til klienten. Et autentificeret id-kort vil altså aldrig indeholde brugernavn og password eller MOCESsignatur, men altid en VOCES-signatur fra den identitetsudbyder, der foretog autentifikationen. Figuren nedenfor viser, hvordan id-kortet ser ud efter autentifikationen: <saml:subject> <saml:nameid Format="http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/CPR_PersonCivilRegi strationidentifier.xsd">1903701234</saml:nameid> <saml:subjectconfirmation> <saml:confirmationmethod> urn:oasis:names:tc:saml:2.0:cm:holder-of-key </saml:confirmationmethod> <saml:subjectconfirmationdata> <ds:keyinfo> <ds:keyname>idcardsignature</ds:keyname> </ds:keyinfo> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject>... <ds:signature wsu:id="idcardsignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n- 20010315"/> <ds:digestvalue>alilaerbquie1/t6ykrkqlze13y=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue>/joag4rvdbkbkpb5q2 </ds:signaturevalue> <ds:keyinfo> <ds:x509data> <ds:keyname>2f9b7c21</ds:keyname> </ds:x509data> MedCom. Den Gode Webservice Bilag ver. 1.1 27
</ds:keyinfo> </ds:signature> Figur 9: Single-Signon id-kort I autentificerede id-kort kan man i Den Gode Webservice nøjes med at indsætte en reference til det certifikat, man har anvendt til at validere underskriften med, i KeyInfo/KeyName-feltet. I eksemplet ovenfor angives værdien 2F9B7C21 for KeyName, som er serienummeret på identitetsservicens certifikat. Certifikatet antages at være kendt af alle klienter. MedCom. Den Gode Webservice Bilag ver. 1.1 28
Bilag 3: Datalister I datalisten gengives alle de værdibærende elementer i Den Gode Webservice-request/- response, i samme rækkefølge som de forekommer i XML-listen. XML Elementer, der ikke i sig selv er informationsbærende, er udeladt. Skemaets første felt Tag / Attribut angiver navnet på det beskrevne tag eller den beskrevne attribut på pseudo Xpath-form (se [XPATH]). Det betyder følgende: Tag-navne angives direkte med det namespace, de hører til (dog uden den fulde sti), f.eks. ds:signature for Signature-elementet fra ds-namespacet (XML Signature). Attributter angives med et @ og med navnet på det tag, de tilhører, sat foran, f.eks. saml:assertion@version for Version-attributten på tagget saml:assertion. Af hensyn til læsbarheden af saml Attribute-elementer angives en yderligere kompakt notation, f.eks. [@Name=dgws:IDCardType'] for værdien af det AttributeValue-element, der er indlejret i det Attribute-element, hvis Name-attribut har værdien IDCardType. I eksemplet nedenfor ville dette svare til værdien system : <saml:attribute Name="dgws:IDCardType"> <saml:attributevalue>system</saml:attributevalue> Den fulde relative XPath-syntaks vil i dette tilfælde være //saml:attribute[@name="dgws:idcardtype"]/saml:attributevalue/text() Skemaets type felt angiver en XML Schema-type eller en enumeration. Følgende typer anvendes: string angiver, at dataindholdet skal være en streng. Reserverede XMLstyrekartekterer må ikke forekomme. Se http://www.w3.org/tr/xmlschema11-2/#string integer angiver, at dataindholdet er et positivt hel-tal. Se http://www.w3.org/tr/xmlschema11-2/#integer datetime angiver, at data er en dato og et klokkeslæt efter zulu tid og formatet YYYY-MM-DDTHH:MM:SSZ, f.eks. 2006-05-28T23:59:00Z for 28. maj 2006 kl. 23:59:00 zulu tid. Den Gode Webservice kræver, at webserviceklienter og webserviceudbydere synkroniserer urene efter en global anerkendt tidsserver, f.eks. sundhedsdatanettets og benytter zulu tid som tidsangivelse. Se http://www.w3.org/tr/xmlschema11-2/#datetime, samt hoveddokumentets afsnit om tid. anytype angiver, at elementet kan indeholde et vilkårligt indlejret XML-dokument. ID bruges til at navngive et XML-element i dokumentet og er af typen http://www.w3.org/tr/xmlschema11-2/#id, hvilket betyder, at det er en string, hvor kolon : ikke er tilladt. MedCom. Den Gode Webservice Bilag ver. 1.1 29
base64binary angiver en base64-kodet binær streng af data, f.eks. et digitalt certifikat eller en signatur. Se http://www.w3.org/tr/xmlschema11-2/#base64binary. Base64-algortimen konverterer binære data til et begrænset sæt af 64 ASCII-tegn, nemlig A-Z, a-z, 0-9 samt symbolerne +, / og =. ENUM angiver, at der skal benyttes én af de valgmuligheder, der fremgår af enumerationslisten. Kolonnen betingelse anvendes til at beskrive, i hvilke tilfælde et element skal medtages, og i hvilke det skal undlades. Hvis der ikke er en betingelse på elementet, er det altid lovligt at medtage. Hvis der er en betingelse på elementet, skal det kun medtages, hvis betingelsen er opfyldt. F.eks. skal elementet ds:signature kun medtages, hvis sikkerhedsniveau 3 eller 4 anvendes, dvs. hvor der er digital signatur på id-kortet (angivet som Niveau 3/4"). Nogle elementer kan forekomme flere gange, nogle er valgfri, og andre skal altid medtages. Dette angives med kolonnen Antal, hvor følgende gælder: 1 betyder, at elementet altid skal forekomme, hvis betingelsen er opfyldt. 0..1 betyder, at elementet kan forekomme 0 eller 1 gang, hvis betingelsen er opfyldt. 0..n betyder, at elementet kan forekomme 0 eller et vilkårligt antal gange, hvis betingelsen er opfyldt. Endelig angives en beskrivelse af elementet i den sidste kolonne. Request-dataliste Tag / Attribut Type Betingelse Antal Beskrivelse soap:envelope@xmlns:wsa String 1 Det officielle namespace for WS-Addressing. WSA bruges til at angive afsender og modtageroplysninger. soap:envelope@xmlns:saml String 1 Det officielle namespace for SAMLsikkerhedsstandarden. SAML benyttes som den standardmekanisme, der transporterer oplysninger om DGWS-brugere. soap:envelope@xmlns:wsse String 1 Det officielle namespace for Webservice Security-standarden. Angiver bestemte XMLtags for brug af signering, token og kryptering. soap:envelope@xmlns:ds String 1 Det officielle namespace for XML Signaturestandarden. Dokumentation findes på http://www.w3.org/tr/xmldsig-core/ soap:envelope@xmlns:medc om String 1 Det lokale namespace for de XML-elementer, der indgår i DGWS. soap:envelope@xmlns:soap String 1 Det officielle namespace for soap version 1.1. Dokumentationen findes på soap:envelope@xmlns:wsu String 1 Det officielle namespace for en tilføjelse (utility) til soapstandarden, der bl.a.definerer "Id" på XML-tag-niveau. soap:header 1 soap header MedCom. Den Gode Webservice Bilag ver. 1.1 30
Tag / Attribut Type Betingelse Antal Beskrivelse wsa:messageid string 1 Unikt id for denne besked. Angives som en GUID wsa:address string 1 Angiver afsenderen af beskeden wsa:to string 1 Angiver modtageren af beskeden wsa:action string 1 Angiver den operation, afsenderen forventer at modtageren udfører. I reglen identisk med wsa:to wsse:security 1 Samlende element for sikkerhedsoplysninger wsu:created datetime 1 Dato og klokkeslæt for påbegyndelse af generering af soap-meddelelsen. Skal ifølge wsse-standarden genereres så tæt på afsendelsestidspunktet som muligt saml:assertion@id ID 1 Den del af DGWS, der indeholder oplysninger om afsenderen og bevis for dennes identitet (bruger, system, signatur, username/password etc.) saml:assertion@issueinstant datetime 1 Det tidspunkt, hvor id-kortet blev skabt. Hvis idkortet indeholder en digital signatur, angiver IssueInstant det tidspunkt, hvor beskeden blev underskrevet (dvs. lige inden) saml:assertion@version String 1 SAML versions-id. DGWS benytter p.t. 2.0 saml:issuer String 1 Navn på den organisation, der har udstedt idkortet (eller underskrevet det) saml:subject 1 Identifikation af det subjekt (medarbejder eller system) der identificeres ved id-kortets SAMLassertion. saml:nameid@format ENUM 1 Angiver formatet på id'et. Se enumerationslisten for valide værdier. saml:nameid String 1 Id på det subjekt, som id-kortet identificerer. Af typen angivet ved Format-attributten. saml:confirmationmethod ENUM 1 Angiver, hvordan oplysningerne kan godtgøres, f.eks. ved at indehaveren fremviser en nøgle (brugernavn/password, signatur). DGWS bruger kun "urn:oasis:names:tc:saml:2.0:cm:holder-ofkey" ds:keyname String vel = wsse:username String vel == 2 wsse:password String 2 1 Reference til det id, som id-kortets digitale signatur har 1 Brugerens adgangsnavn ved login på webserviceudbydersystemet 1 Brugerens password ved login på webserviceudbydersystemet saml:conditions@notbefore datetime 1 Tidspunkt for id-kortets oprettelse. Id-kortet er ugyldigt før dette tidspunkt. Dette tidspunkt benyttes af webservicen ved beregning af timeout MedCom. Den Gode Webservice Bilag ver. 1.1 31
Tag / Attribut Type Betingelse saml:conditions@notonoraf ter Antal Beskrivelse datetime 1 Tidspunkt for id-kortets udløb. Sættes til NotBefore + 24 timer. Efter dette tidspunkt er idkortet ugyldigt AuthnInstant String 1 Det tidspunkt brugerens akkreditiver blev verificeret på AuthnContextClassRef String 1 Angivelse af hvilken type akkreditiver brugeren viste. Se enumerationslisten for lovlige værdier. catingauthority String 1 Trivialnavn på den autoritet, der verificerede akkreditiverne. [@id='idcarddata'] 1 Id-kortets indhold [@Name='dgws:IDCardID'] String 1 Et unikt id for dette id-kort. To id-kort må aldrig anvende samme id. GUID. [@Name='dgws:IDCardVersi on'] [@Name='dgws:IDCardType' ] [@Name='dgws:catio nlevel'] [@Name='dgws:ClientMOCE SHash'] String 1 Angiver den version af id-kort-formatet, som dette id-kort er lavet ud fra. P.t. findes version 1.0 og 1.1 ENUM 1 Angiver om id-kortet identificerer en medarbejder ("user") eller et it-system ("system") ENUM 1 Det sikkerhedsniveau, som dette id-kort blev udstedt til. Lovlige værdier er 1 = ingen autentifikation, 2 = brugernavn/password, 3 = digital signatur. base64bin ary og IDCardT ype == user && SSO 1 SHA-1 hashværdi af det medarbejdercertifikat, der blev anvendt til autentifikation [@Name='dgws:UserCivilRe gistrationnumber'] String 1 Brugers CPR-nummer eller et erstatnings-cprnummer [@Name='dgws:UserGivenN String 0..1 Brugerens for- og mellemnavne, f.eks. Hans H. ame'] [@Name='dgws:UserSurNam String 0..1 Brugerens efternavn f.eks. Hansen e'] [@Name='dgws:UserEmailA String 0..1 Brugerens e-mail-adresse ddress'] [@Name='dgws:UserRole'] String 1 Brugers rolle (Fx "læge" eller "Ansat på OUH") i forbindelse med rettighedstildeling. En bruger kan have flere roller [@Name='dgws:UserOccupa tion'] [@Name='dgws:UserAuthoriz ationcode'] [@Name='dgws:Organisation ID']@NameFormat [@Name='dgws:ITSystemNa me'] [@Name='dgws:Organisation ID'] [@Name='dgws:Organisation Name'] String 0..1 Brugers stilling, f.eks. overlæge String 0..1 Brugerens autorisationskode fra Sundhedsstyrelsen Autorisationsregister ENUM 1 Den type id, som identificerer brugerens organisation. Se enumerationslisten for valide værdier. String 1 Navnet på det it-system, som denne DGWSbesked kom fra String 1 Unikt id for den organisation, brugeren optræder for. Formatet af id'et angives med NameFormat String 0..1 Navn på brugerens organisation MedCom. Den Gode Webservice Bilag ver. 1.1 32
Tag / Attribut Type Betingelse base64bin ary [@Name='dgws:ClientVOCE SHash'] ds:signature[@id=idcardsig nature] ds:canonicalizationmethod@ Algorithm ds:signaturemethod@algorit hm ENUM ENUM && SSO ds:reference@uri String ds:digestmethod@algorithm ENUM ds:digestvalue ds:signaturevalue base64bin ary base64bin ary Antal Beskrivelse 1 SHA-1 hashværdi af det virksomhedscertifikat, der blev anvendt til beskedautentifikation (og evt. autentifikation på niveau 3) 1 Digital signatur af id-kortet. Anvendes til autentifikation og til at beskytte integriteten af idkortet (det kan ikke ændres, uden at signaturen bliver ugyldig) 1 Angiver den metode, der er benyttet til at "normalisere" det XML, der skal signeres (SignedInfo-elementet). Kanoniseringen konverterer XML-dokumetet til et standardtegnsæt og -format, der sikrer, at både afsender og modtager ser dokumentet på nøjagtig samme måde, inden dokumentet signeres. WSSE-standarden anbefaler "Exclusive XML Canonisering", der er dokumenteret på W3C, se http://www.w3.org/tr/2001/rec-xml-c14n- 20010315 1 Angiver den metode, der benyttes ved signering af SignedInfo-elementet. Først kanoniseres SignedInfo, derpå beregnes et digest (en "tværsum) vha. SHA-1- metoden (Secure Hash se Se http://www.w3.org/2000/09/xmldsig#sha). Til sidst bruges den private nøgle til at kryptere digesten, som gemmes i SignatureValue-feltet 1 Reference peger på det XML-element, der skal signeres. " IDCard" id-attributten på hele id-kortet (Assertion-elementet). I Den Gode Webservice signeres normalt kun id-kortet, men det er også muligt at underskrive hele konvolutten (sikkerhedsniveau 5). # angiver at det, der refereres til, findes indlejret i samme XMLdokument 1 Den metode "SHA-1", der benyttes til at generere "digesten" (tværsummen - chekcifrethashværdien- fingeraftrykket) for den XML, der er signeret (id-kortet i dette tilfælde). Se http://www.w3.org/2000/09/xmldsig#sha1 1 Digesten eller hash-værdien, der er den værdi, der er resultatet af at beregne en SHA-1-digest på objektet. Feltet skal base64binary-kodes 1 Den digitale signatur. Signaturen er de bytes, der er fremkommet ved at signere SignedInfoelementet ved hjælp af den private nøgle. Modtageren dekrypterer denne signatur med den offentlige nøgle fra certifikatet, beregner selv værdien på samme måde som afsenderen og sammenligner de to værdier. Er de ens, er det et bevis for, at dokumentet virkelig er underskrevet af den, der kan identificeres ved certifikatet, og i øvrigt er uændret undervejs MedCom. Den Gode Webservice Bilag ver. 1.1 33
Tag / Attribut Type Betingelse ds:x509certificate base64bin ary ds:signature[@id=messages ignature] ds:canonicalizationmethod@ Algorithm ds:signaturemethod@algorit hm String String ds:reference@uri String ds:digestmethod@algorithm String ds:digestvalue ds:signaturevalue ds:x509certificate base64bin ary base64bin ary base64bin ary Antal Beskrivelse 1 KeyInfo (nøgle-info). Indholder det certifikat, hvis indlejrede offentlige nøgle kan dekryptere SignatureValue 1 Digital signatur af hele kuverten. Anvendes til besked-autentifikation, dvs. til at beskytte integriteten af hele beskeden (intet kan ændres, uden at signaturen bliver ugyldig) 1 Angiver den metode, der er benyttet til at "normalisere" det XML, der skal signeres (SignedInfo-elementet). Kanoniseringen konverterer XML-dokumetet til et standardtegnsæt og -format, der sikrer, at både afsender og modtager ser dokumentet på nøjagtig samme måde, inden dokumentet signeres. WSSE-standarden anbefaler "Exclusive XML Canonisering", der er dokumenteret på W3C, se http://www.w3.org/tr/2001/rec-xml-c14n- 20010315 1 Angiver den metode, der benyttes ved signering af SignedInfo-elementet. Først kanoniseres SignedInfo, derpå beregnes et digest (en "tværsum) vha. SHA-1- metoden (Secure Hash se http://www.w3.org/2000/09/xmldsig#sha). Til sidst bruges den private nøgle til at kryptere digesten, som gemmes i SignatureValue feltet 6 Reference peger på det XML-element, der skal signeres. Der signeres 6 elementer: wsa:messageid, wsa:replyto, wsa:to, wsa:action, Body, samt IDCard hvilket betyder at disse elementer bindes sammen. 6 Den metode "SHA-1", der benyttes til at generere "digesten" (tværsummen - chekcifrethashværdien- fingeraftrykket) for den XML, der er signeret (Envelope-elementet i dette tilfælde). Se http://www.w3.org/2000/09/xmldsig#sha1 6 Digesten eller hash-værdien, der er en resulterende værdi af at beregne en SHA-1 digest på objektet. Feltet skal base64binarykodes 1 Den digitale signatur. Signaturen er de bytes, der er fremkommet ved at signere SignedInfoelementet ved hjælp af den private nøgle. Modtageren dekrypterer denne signatur med den offentlige nøgle fra certifikatet, beregner selv værdien på samme måde som afsenderen og sammenligner de to værdier. Er de ens, er det er bevis for, at dokumentet virkelig er underskrevet af den, der kan identificeres ved certifikatet, og i øvrigt er uændret undervejs 1 KeyInfo (nøgle-info). Indholder det certifikat, hvis indlejrede offentlige nøgle kan dekryptere SignatureValue MedCom. Den Gode Webservice Bilag ver. 1.1 34
Tag / Attribut Type Betingelse Antal Beskrivelse soap:body anytype 1 I DGWS body-elementet indlejres webservicespecifikke request-beskeder og input-parametre. MedCom. Den Gode Webservice Bilag ver. 1.1 35
Response-dataliste Tag / Attribut Type Betingelse Antal Beskrivelse soap:envelope@xmlns:wsa String 1 Det officielle namespace for WS-Addressing. WSA bruges til at angive afsender og modtageroplysninger. soap:envelope@xmlns:saml String 1 Det officielle namespace for SAMLsikkerhedsstandarden. SAML benyttes som den standardmekanisme, der transporterer oplysninger om DGWS-brugere. soap:envelope@xmlns:wsse String 1 Det officielle namespace for Webservice Security-standarden. Angiver bestemte XMLtags for brug af signering, token og kryptering. soap:envelope@xmlns:ds String 1 Det officielle namespace for XML Signaturestandarden. Dokumentation findes på http://www.w3.org/tr/xmldsig-core/ soap:envelope@xmlns:dgws String 1 Det lokale namespace for de XML-elementer, der indgår i DGWS. soap:envelope@xmlns:soap String 1 Det officielle namespace for soap version 1.1. Dokumentationen findes på soap:envelope@xmlns:wsu String 1 Det officielle namespace for en tilføjelse (utility) til soapstandarden, der bl.a.definerer "Id" på XML-tag-niveau. soap:header 1 soap header wsa:messageid string 1 Unikt id for denne besked. Angives som en GUID wsa:relatesto string 1 Angiver MessageID på den request besked, som dette response er et svar på. wsa:to string 1 Angiver modtageren af beskeden (klienten) wsa:action string 1 Angiver den operation, afsenderen forventer at modtageren udfører. I reglen identisk med wsa:to wsse:security 1 Samlende element for sikkerhedsoplysninger wsu:created datetime 1 Dato og klokkeslæt for påbegyndelse af generering af soap-meddelelsen. Skal ifølge wsse-standarden genereres så tæt på afsendelsestidspunktet som muligt saml:assertion@id ID 1 Den del af DGWS, der indeholder oplysninger om afsenderen og bevis for dennes identitet (bruger, system, signatur, username/password etc.) saml:assertion@issueinstant datetime 1 Det tidspunkt, hvor id-kortet blev skabt. Hvis idkortet indeholder en digital signatur, angiver IssueInstant det tidspunkt, hvor beskeden blev underskrevet (dvs. lige inden) saml:assertion@version String 1 SAML-versionsi-d. DGWS benytter p.t. "2.0" saml:issuer String 1 Navn på den organisation, der har udstedt idkortet (eller underskrevet det) saml:subject 1 Identifikation af det subjekt (medarbejder eller system) der identificeres ved id-kortets SAML- MedCom. Den Gode Webservice Bilag ver. 1.1 36
Tag / Attribut Type Betingelse Antal Beskrivelse assertion. saml:nameid@format ENUM 1 Angiver formatet på id'et. Se enumerationslisten for valide værdier. saml:nameid String 1 Id på det subjekt, som id-kortet identificerer. Af typen angivet ved Format-attributten. saml:confirmationmethod String 1 Angiver, hvordan oplysningerne kan godtgøres, f.eks. ved at indehaveren fremviser en nøgle (brugernavn/password, signatur). DGWS bruger kun "urn:oasis:names:tc:saml:2.0:cm:holder-ofkey" ds:keyname String 1 Reference til det id, som id-kortets digitale signatur har saml:conditions@notbefore datetime 1 Tidspunkt for id-kortets oprettelse. Id-kortet er ugyldigt før dette tidspunkt saml:conditions@notonoraf ter datetime 1 Tidspunkt for id-kortets udløb. Sættes til NotBefore + 24 timer. Efter dette tidspunkt er idkortet ugyldigt AuthnInstant String 1 Det tidspunkt brugerens akkreditiver blev verificeret på AuthnContextClassRef ENUM 1 Angivelse af hvilken type akkreditiver brugeren viste. Se enumerationslisten for lovlige værdier. catingauthority String 1 Trivialnavn på den autoritet, der verificerede akkreditiverne. [@id='idcarddata'] 1 Oplysninger om selve id-kortet [@Name='dgws:IDCardID'] String 1 Et unikt id for dette id-kort. To id-kort må aldrig anvende samme id. GUID. [@Name='dgws:IDCardVersi on'] String 1 Angiver den version af id-kort-formatet, som dette id-kort er lavet ud fra. P.t. findes version [@Name='dgws:IDCardType' ] [@Name='dgws:catio nlevel'] [@Name='dgws:ClientVOCE SHash'] [@Name='dgws:ITSystemNa me'] [@Name='dgws:Organisation ID'] [@Name='dgws:Organisation Name'] 1.0 og 1.1 ENUM 1 Angiver om id-kortet identificerer en medarbejder ("user") eller et it-system ("system"). For responsbeskeder der, som i denne specifikation kører i et synkront request-response scenarium, er det kun system der er tilladt. ENUM 1 Det sikkerhedsniveau, som dette id-kort blev udstedt til. For responsbeskeder er lovlige værdier 1 = ingen autentifikation, 2 = brugernavn/password, 3 = VOCES-signatur base64bin ary 1 SHA-1-hashværdi af det certifikat, der blev anvendt til autentifikation String 1 Navnet på det it-system, som denne DGWSbesked kom fra String 1 Unikt id for den organisation, brugeren optræder for. Formatet af id'et angives med NameFormat String 0..1 Navn på brugerens organisation MedCom. Den Gode Webservice Bilag ver. 1.1 37
Tag / Attribut Type Betingelse ds:signature[@id=idcardsig nature] ds:canonicalizationmethod@ Algorithm ds:signaturemethod@algorit hm ENUM String ds:reference@uri String ds:digestmethod@algorithm String ds:digestvalue ds:signaturevalue base64bin ary base64bin ary ds:keyname String ds:x509certificate base64bin ary Antal Beskrivelse 1 Digital signatur af id-kortet. Anvendes til autentifikation og til at beskytte integriteten af idkortet (det kan ikke ændres, uden at signaturen bliver ugyldig) 1 Angiver den metode, der er benyttet til at "normalisere" det XML, der skal signeres (SignedInfo-elementet). Kanoniseringen konverterer XML-dokumetet til et standardtegnsæt og -format, der sikrer, at både afsender og modtager ser dokumentet på nøjagtig samme måde, inden dokumentet signeres. WSSE-standarden anbefaler "Exclusive XML Canonisering", der er dokumenteret på W3C, se http://www.w3.org/tr/2001/rec-xml-c14n- 20010315. 1 Angiver den metode, der benyttes ved signering af SignedInfo-elementet. Først kanoniseres SignedInfo, derpå beregnes et digest (en "tværsum) vha. SHA-1- metoden (Secure Hash se http://www.w3.org/2000/09/xmldsig#sha). Til sidst bruges den private nøgle til at kryptere digesten, som gemmes i SignatureValue feltet 1 Reference peger på det XML-element, der skal signeres. Der signeres 1 element: IDCard. 1 Den metode "SHA-1", der benyttes til at generere "digesten" (tværsummen - chekcifrethashværdien- fingeraftrykket) for den XML, der er signeret (Envelope-elementet i dette tilfælde). Se http://www.w3.org/2000/09/xmldsig#sha1 1 Digesten eller hash-værdien, der er en resulterende værdi af at beregne en SHA-1 digest på objektet. Feltet skal base64binarykodes 1 Den digitale signatur. Signaturen er de bytes, der er fremkommet ved at signere SignedInfoelementet ved hjælp af den private nøgle. Modtageren dekrypterer denne signatur med den offentlige nøgle fra certifikatet, beregner selv værdien på samme måde som afsenderen og sammenligner de to værdier. Er de ens, er det et bevis for, at dokumentet virkelig er underskrevet af den, der kan identificeres ved certifikatet, og i øvrigt er uændret undervejs 1 Alternativ til ds:x509certificate nedenfor: STS ens serial number fra certifikatet hvis SSO og id-kortet er verificeret af STS. 1 Alternativt til ds:keyname ovenfor. Indholder det certifikat hvis indlejrede offentlige nøgle kan dekryptere SignatureValue MedCom. Den Gode Webservice Bilag ver. 1.1 38
Tag / Attribut Type Betingelse ds:signature[@id=messages ignature] ds:canonicalizationmethod@ Algorithm ds:signaturemethod@algorit hm ENUM ENUM ds:reference@uri String ds:digestmethod@algorithm String ds:digestvalue ds:signaturevalue ds:x509certificate base64bin ary base64bin ary base64bin ary Antal Beskrivelse 1 Digital signatur af hele kuverten. Anvendes til beskedautentifikation og til at beskytte integriteten af hele beskeden (intet kan ændres, uden at signaturen bliver ugyldig) 1 Angiver den metode, der er benyttet til at "normalisere" det XML, der skal signeres (SignedInfo-elementet). Kanoniseringen konverterer XML-dokumetet til et standardtegnsæt og -format, der sikrer, at både afsender og modtager ser dokumentet på nøjagtig samme måde, inden dokumentet signeres. WSSE-standarden anbefaler "Exclusive XML Canonisering", der er dokumenteret på W3C, se http://www.w3.org/tr/2001/rec-xml-c14n- 20010315 1 Angiver den metode, der benyttes ved signering af SignedInfo-elementet. Først kanoniseres SignedInfo, derpå beregnes et digest (en "tværsum) vha. SHA-1 metoden (Secure Hash se Se http://www.w3.org/2000/09/xmldsig#sha). Sluttelig bruges den private nøgle til at kryptere digesten, som gemmes i SignatureValue-feltet 6 Reference peger på det XML-element, der skal signeres. Der signeres 6 elementer: wsa:messageid, wsa:relatesto, wsa:to, wsa:action, Body, samt IDCard hvilket betyder at disse elementer bindes sammen. 6 Den metode "SHA-1", der benyttes til at generere "digesten" (tværsummen - chekcifrethashværdien- fingeraftrykket) for den XML, der er signeret (Envelope-elementet i dette tilfælde). Se http://www.w3.org/2000/09/xmldsig#sha1 6 Digesten eller hash-værdien, der er en resulterende værdi af at beregne en SHA-1 digest på objektet. Feltet skal base64binarykodes 1 Den digitale signatur. Signaturen er de bytes, der er fremkommet ved at signere SignedInfoelementet ved brug af den private nøgle. Modtageren dekrypterer denne signatur med den offentlige nøgle fra certifikatet, beregner selv værdien på samme måde som afsenderen og sammenligner de to værdier. Er de ens, er det et bevis for, at dokumentet virkelig er underskrevet af den, der kan identificeres ved certifikatet, og i øvrigt er uændret undervejs 1 KeyInfo (nøgle-info). Indholder det certifikat, hvis indlejrede offentlige nøgle kan dekryptere SignatureValue soap:body Any 1 I DGWS body-elementet indlejres webservicespecifikke requestbeskeder og inputparametre faultcode String 0..1 Angiver at der er sket en fejl på serveren og har MedCom. Den Gode Webservice Bilag ver. 1.1 39
Tag / Attribut Type Betingelse Antal Beskrivelse altid værdien Server detail String 0..1 Angiver en specifik fejlkode fra enumerationslisten eller en brugspecifik kode. faultstring String 0..1 En tekst, der kan læses af alle, der beskriver, hvorfor fejlen opstod RequestSecurityToken-dataliste Tag / Attribut Type Betingelse Antal Beskrivelse soap:envelope@xmlns:wsa String 1 Det officielle namespace for WS-Addressing. WSA bruges til at angive afsender og modtageroplysninger. soap:envelope@xmlns:saml String 1 Det officielle namespace for SAMLsikkerhedsstandarden. SAML benyttes som den standardmekanisme, der transporterer oplysninger om DGWS-brugere. soap:envelope@xmlns:wsse String 1 Det officielle namespace for Webservice Security-standarden. Angiver bestemte XMLtags for brug af signering, token og kryptering. soap:envelope@xmlns:ds String 1 Det officielle namespace for XML Signaturestandarden. Dokumentation findes på http://www.w3.org/tr/xmldsig-core/ soap:envelope@xmlns:medc om String 1 Det lokale namespace for de XML-elementer, der indgår i DGWS. soap:envelope@xmlns:soap String 1 Det officielle namespace for soap version 1.1. Dokumentationen findes på soap:envelope@xmlns:wsu String 1 Det officielle namespace for en tilføjelse (utility) til soapstandarden, der bl.a.definerer "Id" på XML-tag-niveau. soap:header 1 soap header wsa:messageid string 1 Unikt id for denne besked. Angives som en GUID wsa:address string 1 Angiver afsenderen af beskeden wsa:to string 1 Angiver modtageren af beskeden wsa:action string 1 Angiver den operation, afsenderen forventer at modtageren udfører. I reglen identisk med wsa:to wsse:security 1 Samlende element for sikkerhedsoplysninger wsu:created datetime 1 Dato og klokkeslæt for påbegyndelse af generering af soap-meddelelsen. Skal ifølge wsse-standarden genereres så tæt på afsendelsestidspunktet som muligt ds:signature[@id=messages ignature] ds:canonicalizationmethod@ Algorithm ENUM 1 Digital signatur af hele kuverten. Anvendes til beskedautentifikation og til at beskytte integriteten af hele beskeden (intet kan ændres, uden at signaturen bliver ugyldig) 1 Angiver den metode, der er benyttet til at "normalisere" det XML, der skal signeres (SignedInfo-elementet). Kanoniseringen MedCom. Den Gode Webservice Bilag ver. 1.1 40
Tag / Attribut Type Betingelse Antal Beskrivelse konverterer XML-dokumetet til et standardtegnsæt og -format, der sikrer, at både afsender og modtager ser dokumentet på nøjagtig samme måde, inden dokumentet signeres. WSSE-standarden anbefaler "Exclusive XML Canonisering", der er dokumenteret på W3C, se http://www.w3.org/tr/2001/rec-xml-c14n- 20010315 ENUM ds:signaturemethod@algorit hm ds:reference@uri String ds:digestmethod@algorithm String ds:digestvalue ds:signaturevalue ds:x509certificate base64bin ary base64bin ary base64bin ary 1 Angiver den metode, der benyttes ved signering af SignedInfo-elementet. Først kanoniseres SignedInfo, derpå beregnes et digest (en "tværsum) vha. SHA-1 metoden (Secure Hash se Se http://www.w3.org/2000/09/xmldsig#sha). Sluttelig bruges den private nøgle til at kryptere digesten, som gemmes i SignatureValue-feltet 6 Reference peger på det XML-element, der skal signeres. Der signeres 6 elementer: wsa:messageid, wsa:relatesto, wsa:to, wsa:action, Body, samt IDCard hvilket betyder at disse elementer bindes sammen. 6 Den metode "SHA-1", der benyttes til at generere "digesten" (tværsummen - chekcifrethashværdien- fingeraftrykket) for den XML, der er signeret (Envelope-elementet i dette tilfælde). Se http://www.w3.org/2000/09/xmldsig#sha1 6 Digesten eller hash-værdien, der er en resulterende værdi af at beregne en SHA-1 digest på objektet. Feltet skal base64binarykodes 1 Den digitale signatur. Signaturen er de bytes, der er fremkommet ved at signere SignedInfoelementet ved brug af den private nøgle. Modtageren dekrypterer denne signatur med den offentlige nøgle fra certifikatet, beregner selv værdien på samme måde som afsenderen og sammenligner de to værdier. Er de ens, er det et bevis for, at dokumentet virkelig er underskrevet af den, der kan identificeres ved certifikatet, og i øvrigt er uændret undervejs 1 KeyInfo (nøgle-info). Indholder det certifikat, hvis indlejrede offentlige nøgle kan dekryptere SignatureValue soap:body Any 1 I DGWS body-elementet indlejres WS-Trust beskeden med id-kortet wst:requestsecuritytoken 1 Indholder WS-Trust data wst:tokentype String 1 Hvilken type token anvendes til autentifikation? I DGWS 1.1 er det altid en SAML assertion der anvendes til SSO. Værdien af feltet er derfor urn:oasis:names:tc:saml:2.0:assertion wst:requesttype String 1 Hvilken type ws-trust besked er dette? Har altid MedCom. Den Gode Webservice Bilag ver. 1.1 41
Tag / Attribut Type Betingelse Antal Beskrivelse værdien: http://schemas.xmlsoap.org/ws/2005/02/security/ trust/issue wst:claims 1 Indeholder akkreditiver til autentifikation, dvs. Idkortet. saml:assertion@id ID 1 Den del af DGWS, der indeholder oplysninger om afsenderen og bevis for dennes identitet (bruger, system, signatur, username/password etc.) saml:assertion@issueinstant datetime 1 Det tidspunkt, hvor id-kortet blev skabt. Hvis idkortet indeholder en digital signatur, angiver IssueInstant det tidspunkt, hvor beskeden blev underskrevet (dvs. lige inden) saml:assertion@version String 1 SAML versions-id. DGWS benytter p.t. 2.0 saml:issuer String 1 Navn på den organisation, der har udstedt idkortet (eller underskrevet det) saml:subject 1 Identifikation af det subjekt (medarbejder eller system) der identificeres ved id-kortets SAMLassertion. saml:nameid@format ENUM 1 Angiver formatet på id'et. Se enumerationslisten for valide værdier. saml:nameid String 1 Id på det subjekt, som id-kortet identificerer. Af typen angivet ved Format-attributten. saml:confirmationmethod ENUM 1 Angiver, hvordan oplysningerne kan godtgøres, f.eks. ved at indehaveren fremviser en nøgle (brugernavn/password, signatur). DGWS bruger kun "urn:oasis:names:tc:saml:2.0:cm:holder-ofkey" ds:keyname String 1 Reference til det id, som id-kortets digitale signatur har saml:conditions@notbefore datetime 1 Tidspunkt for id-kortets oprettelse. Id-kortet er ugyldigt før dette tidspunkt. Dette tidspunkt benyttes af webservicen ved beregning af timeout saml:conditions@notonoraf ter datetime 1 Tidspunkt for id-kortets udløb. Sættes til NotBefore + 24 timer. Efter dette tidspunkt er idkortet ugyldigt [@id='idcarddata'] 1 Id-kortets indhold [@Name='dgws:IDCardID'] String 1 Et unikt id for dette id-kort. To id-kort må aldrig anvende samme id. GUID. [@Name='dgws:IDCardVersi on'] String 1 Angiver den version af id-kort-formatet, som dette id-kort er lavet ud fra. P.t. findes version 1.0 og 1.1 [@Name='dgws:IDCardType' ENUM 1 Angiver om id-kortet identificerer en medarbejder ] [@Name='dgws:catio nlevel'] ("user") eller et it-system ("system") ENUM 1 Det sikkerhedsniveau, som dette id-kort blev udstedt til. Lovlige værdier er 1 = ingen autentifikation, 2 = brugernavn/password, 3 = digital signatur MedCom. Den Gode Webservice Bilag ver. 1.1 42
Tag / Attribut Type Betingelse base64bin ary [@Name='dgws:ClientMOCE SHash'] && SSO Antal Beskrivelse 1 SHA-1 hashværdi af det medarbejdercertifikat, der blev anvendt til autentifikation [@Name='dgws:UserCivilRe gistrationnumber'] String 1 Brugers CPR-nummer eller et erstatnings-cprnummer [@Name='dgws:UserGivenN String 0..1 Brugerens for- og mellemnavne, f.eks. Hans H. ame'] [@Name='dgws:UserSurNam String 0..1 Brugerens efternavn f.eks. Hansen e'] [@Name='dgws:UserEmailA String 0..1 Brugerens e-mail-adresse ddress'] [@Name='dgws:UserRole'] String 1 Brugers rolle (Fx "læge" eller "Ansat på OUH") i forbindelse med rettighedstildeling. En bruger kan have flere roller [@Name='dgws:UserOccupa tion'] [@Name='dgws:UserAuthoriz ationcode'] [@Name='dgws:Organisation ID']@NameFormat [@Name='dgws:ITSystemNa me'] [@Name='dgws:Organisation ID'] [@Name='dgws:Organisation Name'] [@Name='dgws:ClientVOCE SHash'] ds:signature[@id=idcardsig nature] ds:canonicalizationmethod@ Algorithm ds:signaturemethod@algorit hm String 0..1 Brugers stilling, f.eks. overlæge String 0..1 Brugerens autorisationskode fra Sundhedsstyrelsen Autorisationsregister ENUM 1 Den type id, som identificerer brugerens organisation. Se enumerationslisten for valide værdier. String 1 Navnet på det it-system, som denne DGWSbesked kom fra String 1 Unikt id for den organisation, brugeren optræder for. Formatet af id'et angives med NameFormat String 0..1 Navn på brugerens organisation base64bin ary ENUM ENUM 1 SHA-1 hashværdi af det virksomhedscertifikat, der blev anvendt til beskedautentifikation (og evt. autentifikation for system id-kort) 1 Digital signatur af id-kortet. Anvendes til autentifikation og til at beskytte integriteten af idkortet (det kan ikke ændres, uden at signaturen bliver ugyldig) 1 Angiver den metode, der er benyttet til at "normalisere" det XML, der skal signeres (SignedInfo-elementet). Kanoniseringen konverterer XML-dokumetet til et standardtegnsæt og -format, der sikrer, at både afsender og modtager ser dokumentet på nøjagtig samme måde, inden dokumentet signeres. WSSE-standarden anbefaler "Exclusive XML Canonisering", der er dokumenteret på W3C, se http://www.w3.org/tr/2001/rec-xml-c14n- 20010315 1 Angiver den metode, der benyttes ved signering af SignedInfo-elementet. Først kanoniseres SignedInfo, derpå beregnes et digest (en "tværsum) vha. SHA-1- metoden (Secure Hash se Se http://www.w3.org/2000/09/xmldsig#sha). Til sidst bruges den private nøgle til at kryptere MedCom. Den Gode Webservice Bilag ver. 1.1 43
Tag / Attribut Type Betingelse Antal Beskrivelse digesten, som gemmes i SignatureValue-feltet ds:reference@uri String ds:digestmethod@algorithm ENUM ds:digestvalue ds:signaturevalue ds:x509certificate base64bin ary base64bin ary base64bin ary 1 Reference peger på det XML-element, der skal signeres. " IDCard" id-attributten på hele id-kortet (Assertion-elementet). I Den Gode Webservice signeres normalt kun id-kortet, men det er også muligt at underskrive hele konvolutten (sikkerhedsniveau 5). # angiver at det, der refereres til, findes indlejret i samme XMLdokument 1 Den metode "SHA-1", der benyttes til at generere "digesten" (tværsummen - chekcifrethashværdien- fingeraftrykket) for den XML, der er signeret (id-kortet i dette tilfælde). Se http://www.w3.org/2000/09/xmldsig#sha1 1 Digesten eller hash-værdien, der er den værdi, der er resultatet af at beregne en SHA-1-digest på objektet. Feltet skal base64binary-kodes 1 Den digitale signatur. Signaturen er de bytes, der er fremkommet ved at signere SignedInfoelementet ved hjælp af den private nøgle. Modtageren dekrypterer denne signatur med den offentlige nøgle fra certifikatet, beregner selv værdien på samme måde som afsenderen og sammenligner de to værdier. Er de ens, er det et bevis for, at dokumentet virkelig er underskrevet af den, der kan identificeres ved certifikatet, og i øvrigt er uændret undervejs 1 KeyInfo (nøgle-info). Indholder det certifikat, hvis indlejrede offentlige nøgle kan dekryptere SignatureValue RequestSecurityTokenResponse-dataliste Tag / Attribut Type Betingelse Antal Beskrivelse soap:envelope@xmlns:wsa String 1 Det officielle namespace for WS-Addressing. WSA bruges til at angive afsender og modtageroplysninger. soap:envelope@xmlns:saml String 1 Det officielle namespace for SAMLsikkerhedsstandarden. SAML benyttes som den standardmekanisme, der transporterer oplysninger om DGWS-brugere. soap:envelope@xmlns:wsse String 1 Det officielle namespace for Webservice Security-standarden. Angiver bestemte XMLtags for brug af signering, token og kryptering. soap:envelope@xmlns:ds String 1 Det officielle namespace for XML Signaturestandarden. Dokumentation findes på http://www.w3.org/tr/xmldsig-core/ soap:envelope@xmlns:dgws String 1 Det lokale namespace for de XML-elementer, der indgår i DGWS. MedCom. Den Gode Webservice Bilag ver. 1.1 44
Tag / Attribut Type Betingelse Antal Beskrivelse soap:envelope@xmlns:soap String 1 Det officielle namespace for soap version 1.1. Dokumentationen findes på soap:envelope@xmlns:wsu String 1 Det officielle namespace for en tilføjelse (utility) til soapstandarden, der bl.a.definerer "Id" på XML-tag-niveau. soap:header 1 soap header wsa:messageid string 1 Unikt id for denne besked. Angives som en GUID wsa:relatesto string 1 Angiver MessageID på den request besked, som dette response er et svar på. wsa:to string 1 Angiver modtageren af beskeden (klienten) wsa:action string 1 Angiver den operation, afsenderen forventer at modtageren udfører. I reglen identisk med wsa:to wsse:security 1 Samlende element for sikkerhedsoplysninger wsu:created datetime 1 Dato og klokkeslæt for påbegyndelse af generering af soap-meddelelsen. Skal ifølge wsse-standarden genereres så tæt på afsendelsestidspunktet som muligt ds:signature[@id=messages ignature] ds:canonicalizationmethod@ Algorithm ds:signaturemethod@algorit hm ENUM ENUM ds:reference@uri String 1 Digital signatur af hele kuverten. Anvendes til beskedautentifikation på niveau 3 og til at beskytte integriteten af hele beskeden (intet kan ændres, uden at signaturen bliver ugyldig) 1 Angiver den metode, der er benyttet til at "normalisere" det XML, der skal signeres (SignedInfo-elementet). Kanoniseringen konverterer XML-dokumetet til et standardtegnsæt og -format, der sikrer, at både afsender og modtager ser dokumentet på nøjagtig samme måde, inden dokumentet signeres. WSSE-standarden anbefaler "Exclusive XML Canonisering", der er dokumenteret på W3C, se http://www.w3.org/tr/2001/rec-xml-c14n- 20010315 1 Angiver den metode, der benyttes ved signering af SignedInfo-elementet. Først kanoniseres SignedInfo, derpå beregnes et digest (en "tværsum) vha. SHA-1 metoden (Secure Hash se Se http://www.w3.org/2000/09/xmldsig#sha). Sluttelig bruges den private nøgle til at kryptere digesten, som gemmes i SignatureValue-feltet 5 Reference peger på det XML-element, der skal signeres. Der signeres 6 elementer: wsa:messageid, wsa:relatesto, wsa:to, wsa:action, samt Body hvilket betyder at disse elementer bindes sammen. Bemærk at id-kortet findes i Body i WS-Trust svar! MedCom. Den Gode Webservice Bilag ver. 1.1 45
Tag / Attribut Type Betingelse ds:digestmethod@algorithm String ds:digestvalue ds:signaturevalue ds:x509certificate base64bin ary base64bin ary base64bin ary Antal Beskrivelse 5 Den metode "SHA-1", der benyttes til at generere "digesten" (tværsummen - chekcifrethashværdien- fingeraftrykket) for den XML, der er signeret (Envelope-elementet i dette tilfælde). Se http://www.w3.org/2000/09/xmldsig#sha1 5 Digesten eller hash-værdien, der er en resulterende værdi af at beregne en SHA-1 digest på objektet. Feltet skal base64binarykodes 1 Den digitale signatur. Signaturen er de bytes, der er fremkommet ved at signere SignedInfoelementet ved brug af den private nøgle. Modtageren dekrypterer denne signatur med den offentlige nøgle fra certifikatet, beregner selv værdien på samme måde som afsenderen og sammenligner de to værdier. Er de ens, er det et bevis for, at dokumentet virkelig er underskrevet af den, der kan identificeres ved certifikatet, og i øvrigt er uændret undervejs 1 KeyInfo (nøgle-info). Indholder det certifikat, hvis indlejrede offentlige nøgle kan dekryptere SignatureValue soap:body Any 1 I DGWS body-elementet indlejres webservicespecifikke requestbeskeder og inputparametre faultcode String 0..1 Angiver at der er sket en fejl på serveren og har altid værdien Server detail String 0..1 Angiver en specifik fejlkode fra enumerationslisten eller en brugspecifik kode. faultstring String 0..1 En tekst, der kan læses af alle, der beskriver, hvorfor fejlen opstod wst:requestsecuritytokenr esponse 0..1 Hvis der ikke opstod en fejl, returneres et STSunderskrevet id-kort under dette element wst:requestsecuritytokenr esponse@context String 1 Den kontekst eller føderation der anvendes. Sættes altid til www.sosi.dk. wst:requestsecuritytokenr esponse String 1 Type af akkreditiv, altid SAML assertions med værdien: urn:oasis:names:tc:saml:2.0:assertion wst:requestedsecuritytoken 1 Umiddelbart herefter indlejres id-kortet saml:assertion@id ID 1 Den del af DGWS, der indeholder oplysninger om afsenderen og bevis for dennes identitet (bruger, system, signatur, username/password etc.) saml:assertion@issueinstant datetime 1 Det tidspunkt, hvor id-kortet blev skabt. Hvis idkortet indeholder en digital signatur, angiver IssueInstant det tidspunkt, hvor beskeden blev underskrevet (dvs. lige inden) saml:assertion@version String 1 SAML versions-id. DGWS benytter p.t. 2.0 saml:issuer String 1 Navn på den organisation, der har udstedt idkortet (eller underskrevet det) saml:subject 1 Identifikation af det subjekt (medarbejder eller MedCom. Den Gode Webservice Bilag ver. 1.1 46
Tag / Attribut Type Betingelse Antal Beskrivelse system) der identificeres ved id-kortets SAMLassertion. saml:nameid@format ENUM 1 Angiver formatet på id'et. Se enumerationslisten for valide værdier. saml:nameid String 1 Id på det subjekt, som id-kortet identificerer. Af typen angivet ved Format-attributten. saml:confirmationmethod ENUM 1 Angiver, hvordan oplysningerne kan godtgøres, f.eks. ved at indehaveren fremviser en nøgle (brugernavn/password, signatur). DGWS bruger kun "urn:oasis:names:tc:saml:2.0:cm:holder-of- ds:keyname String key" 1 Reference til det id, som id-kortets digitale signatur har saml:conditions@notbefore datetime 1 Tidspunkt for id-kortets oprettelse. Id-kortet er ugyldigt før dette tidspunkt. Dette tidspunkt benyttes af webservicen ved beregning af timeout saml:conditions@notonoraf ter datetime 1 Tidspunkt for id-kortets udløb. Sættes til NotBefore + 24 timer. Efter dette tidspunkt er idkortet ugyldigt AuthnInstant String 1 Det tidspunkt brugerens akkreditiver blev verificeret på AuthnContextClassRef String 1 Angivelse af hvilken type akkreditiver brugeren viste. Se enumerationslisten for lovlige værdier. catingauthority String 1 Trivialnavn på den autoritet, der verificerede akkreditiverne. [@id='idcarddata'] 1 Id-kortets indhold [@Name='dgws:IDCardID'] String 1 Et unikt id for dette id-kort. To id-kort må aldrig anvende samme id. GUID. [@Name='dgws:IDCardVersi on'] String 1 Angiver den version af id-kort-formatet, som dette id-kort er lavet ud fra. P.t. findes version 1.0 og 1.1 [@Name='dgws:IDCardType' ENUM 1 Angiver om id-kortet identificerer en medarbejder ] [@Name='dgws:catio nlevel'] [@Name='dgws:ClientMOCE SHash'] ("user") eller et it-system ("system") ENUM 1 Det sikkerhedsniveau, som dette id-kort blev udstedt til. Lovlige værdier er 1 = ingen autentifikation, 2 = brugernavn/password, 3 = digital signatur. base64bin ary && SSO 1 SHA-1 hashværdi af det medarbejdercertifikat, der blev anvendt til autentifikation [@Name='dgws:UserCivilRe gistrationnumber'] String 1 Brugers CPR-nummer eller et erstatnings-cprnummer [@Name='dgws:UserGivenN String 0..1 Brugerens for- og mellemnavne, f.eks. Hans H. ame'] [@Name='dgws:UserSurNam String 0..1 Brugerens efternavn f.eks. Hansen e'] [@Name='dgws:UserEmailA String 0..1 Brugerens e-mail-adresse ddress'] [@Name='dgws:UserRole'] String 1 Brugers rolle (Fx "læge" eller "Ansat på OUH") i MedCom. Den Gode Webservice Bilag ver. 1.1 47
Tag / Attribut Type Betingelse Antal Beskrivelse forbindelse med rettighedstildeling. En bruger kan have flere roller [@Name='dgws:UserOccupa String 0..1 Brugers stilling, f.eks. overlæge tion'] [@Name='dgws:UserAuthoriz ationcode'] String 0..1 Brugerens autorisationskode fra Sundhedsstyrelsen Autorisationsregister [@Name='dgws:Organisation ID']@NameFormat ENUM 1 Den type id, som identificerer brugerens organisation. Se enumerationslisten for valide værdier. [@Name='dgws:ITSystemNa me'] String 1 Navnet på det it-system, som denne DGWSbesked kom fra [@Name='dgws:Organisation ID'] String 1 Unikt id for den organisation, brugeren optræder for. Formatet af id'et angives med NameFormat [@Name='dgws:Organisation String 0..1 Navn på brugerens organisation Name'] [@Name='dgws:ClientVOCE SHash'] ds:signature[@id=idcardsig nature] ds:canonicalizationmethod@ Algorithm ds:signaturemethod@algorit hm base64bin ary ENUM ENUM ds:reference@uri String ds:digestmethod@algorithm ENUM 1 SHA-1 hashværdi af det virksomhedscertifikat, der blev anvendt til beskedautentifikation (og evt. autentifikation for system id-kort) 1 Digital signatur af id-kortet. Anvendes til autentifikation og til at beskytte integriteten af idkortet (det kan ikke ændres, uden at signaturen bliver ugyldig) 1 Angiver den metode, der er benyttet til at "normalisere" det XML, der skal signeres (SignedInfo-elementet). Kanoniseringen konverterer XML-dokumetet til et standardtegnsæt og -format, der sikrer, at både afsender og modtager ser dokumentet på nøjagtig samme måde, inden dokumentet signeres. WSSE-standarden anbefaler "Exclusive XML Canonisering", der er dokumenteret på W3C, se http://www.w3.org/tr/2001/rec-xml-c14n- 20010315 1 Angiver den metode, der benyttes ved signering af SignedInfo-elementet. Først kanoniseres SignedInfo, derpå beregnes et digest (en "tværsum) vha. SHA-1- metoden (Secure Hash se Se http://www.w3.org/2000/09/xmldsig#sha). Til sidst bruges den private nøgle til at kryptere digesten, som gemmes i SignatureValue-feltet 1 Reference peger på det XML-element, der skal signeres. " IDCard" id-attributten på hele id-kortet (Assertion-elementet). I Den Gode Webservice signeres normalt kun id-kortet, men det er også muligt at underskrive hele konvolutten (sikkerhedsniveau 5). # angiver at det, der refereres til, findes indlejret i samme XMLdokument 1 Den metode "SHA-1", der benyttes til at generere "digesten" (tværsummen - chekcifrethashværdien- fingeraftrykket) for den XML, der er signeret (id-kortet i dette tilfælde). Se http://www.w3.org/2000/09/xmldsig#sha1 MedCom. Den Gode Webservice Bilag ver. 1.1 48
Tag / Attribut Type Betingelse ds:digestvalue base64bin ary ds:signaturevalue ds:x509certificate base64bin ary base64bin ary wst:code String wsa:address String Antal Beskrivelse 1 Digesten eller hash-værdien, der er den værdi, der er resultatet af at beregne en SHA-1-digest på objektet. Feltet skal base64binary-kodes 1 Den digitale signatur. Signaturen er de bytes, der er fremkommet ved at signere SignedInfoelementet ved hjælp af den private nøgle. Modtageren dekrypterer denne signatur med den offentlige nøgle fra certifikatet, beregner selv værdien på samme måde som afsenderen og sammenligner de to værdier. Er de ens, er det et bevis for, at dokumentet virkelig er underskrevet af den, der kan identificeres ved certifikatet, og i øvrigt er uændret undervejs 1 KeyInfo (nøgle-info). Indholder det certifikat, hvis indlejrede offentlige nøgle kan dekryptere SignatureValue 1 Angiver status på operationen. Hvis autentifikationen lykkedes returneres denne værdi, hvis den fejlede returneres i stedet en SOAP Fault: http://schemas.xmlsoap.org/ws/2005/02/trust/stat us/valid 1 Angiver hvem der har godkendt id-kortet, dvs. STS. Bilag 4: Enumerationsliste vel'] ds:canonicalizationmethod@alg orithm ds:canonicalizationmethod@alg orithm ds:signaturemethod@algorithm ds:digestmethod@algorithm ds:nameid@format http://www.w3.org/tr/20 01/REC-xml-c14n- 20010315 http://www.w3.org/2001/ 10/xml-exc-c14n# http://www.w3.org/2000/ 09/xmldsig#rsa-sha1 http://www.w3.org/2000/ 09/xmldsig#sha1 http://rep.oio.dk/cpr.dk/x ml/schemas/core/2005/0 3/18/CPR_PersonCivilR Request metanavn Koder Kodebetydning [@Name='dgws:IDCardType'] user Id-kortet repræsenterer en medarbejder [@Name='dgws:IDCardType'] system Id-kortet repræsenterer et system [@Name='dgws: 1 Id-kortet indeholder ingen akkreditiver vel'] [@Name='dgws: 2 Id-kortet indeholder brugernavn/password vel'] [@Name='dgws: 3 Id-kortet indeholder en VOCES eller MOCESsignatur Anvend kanoninseringsalgoritmen "C14N omit comments". Tillades i DGWS, men er ikke så robust som exclusive C14N Anvend kanoninseringsalgoritmen "Exclusive C14N omit comments". Anbefales Anvend RSA-SHA1 som signeringsalgoritme. Anvend SHA1 (secure hash) som metoden, der beregner hashværdier. Feltet indeholder et CPR-nummer på OIOformat - det vil sige uden bindestreg MedCom. Den Gode Webservice Bilag ver. 1.1 49
Request metanavn Koder Kodebetydning egistrationidentifier.xsd ds:nameid@format urn:dgws:names:carepr Feltet indeholder et sygesikringsydernummer ovider:ynumber ds:nameid@format urn:dgws:names:carepr Feltet indeholder et kommunalt P-nummer ovider:pnumber ds:nameid@format urn:dgws:names:carepr ovider:skscode Feltet indeholder en SKSsygehusafdelingskode ds:nameid@format urn:dgws:names:carepr Feltet indeholder et CVR-nummer ovider:cvrnumber ds:nameid@format urn:dgws:names:carepr Feltet indeholder en kode fra SOR. ovider:sor saml:authncontextclassref urn:oasis:names:tc:sam L:2.0:ac:classes:X509 Brugerens identifet blev verificeret med et digitalt certifikat. saml:authncontextclassref urn:oasis:names:tc:sam L:2.0:ac:classes:Passwo Brugerens identitet blev verificeret med et brugernavn / password. rd saml:confirmationmethod urn:oasis:names:tc:sam L:2.0:cm:holder-of-key Feltet indeholder et OCES PID (person identifier number)-nummer. Nummeret kan af TDC udskiftes med det tilsvarende CPRnummer [@Name='dgws:OrganisationID']/ @NameFormat urn:dgws:names:carepr ovider:ynumber Feltet indeholder et unikt id-nummer af anden type end de ovennævnte [@Name='dgws:OrganisationID']/ @NameFormat urn:dgws:names:carepr ovider:pnumber Feltet indeholder et P-nummer, der er produktionsenhedsnummer fra CVR-registeret, der tildeles et CVR-nummer for hver fysisk enhed [@Name='dgws:OrganisationID']/ urn:dgws:names:carepr Feltet indeholder en SKS- @NameFormat [@Name='dgws:OrganisationID']/ @NameFormat ovider:skscode urn:dgws:names:carepr ovider:cvrnumber sygehusafdelingskode Feltet indeholder et CVR-nummer [@Name='dgws:OrganisationID']/ urn:dgws:names:carepr Feltet indeholder en SOR kode @NameFormat ovider:sor faultcode dgws:invalidinput Den sendte besked indeholdt data, der ikke blev forstået af serveren faultcode dgws:invalidheader Der mangler en eller flere obligatoriske DGWS-headere i den medsendte besked, f.eks. id-kort, som altid skal være der faultcode dgws:missingheader Request indeholdt ikke en forventet header, f.eks. id-kortet. Details angiver den manglende header. faultcode dgws:v el Det medsendte id-kort var på et for lavt niveau i forhold til den af servicen krævede vel. Details angiver det nødvendige niveau. faultcode dgws:notauthorized Det medsendte id-kort gav ikke rettigheder nok til at udføre servicen. Faultstring kan evt. angive yderligere detaljer. faultcode dgws:invaliduserpass Username eller password var ugyldigt. faultcode dgws:invalidsignature En digital signatur på beskeden kunne ikke verificeres. Details angiver hvilken. faultcode dgws:invalidcertificate Certifikatet var ugyldigt, dvs. udløbet, spærret, ikke OCES etc. Details angiver hvilket certifikat og hvorfor. MedCom. Den Gode Webservice Bilag ver. 1.1 50
Request metanavn Koder Kodebetydning faultcode dgws:idcardtooold Id-kortet er udløbet eller for gammelt for den pågældende service. Details angiver hvor gammelt id-kortet må være i minutter. faultcode dgws:internalerror En intern fejl opstod under behandlingen af request. faultcode wsa:duplicatemessagei d Denne besked er allerede modtaget tidligere. Details indeholder det MessageId der er tale om. MedCom. Den Gode Webservice Bilag ver. 1.1 51
Bilag 5: OIO-WSDL og DGWS Den Gode Webservice 1.1 benytter OIO-WSDL [OIOWSDL] fra It- og Telestyrelsen som den bærende profil. DGWS WSDL er OIO WSDL med en enkelt undtagelse: OIO-WSDL specificerer, at fejlkoder navngives efter den operation hvori de kan forekomme f.eks. PersonStructureGetFault for en fejl, der forekommer i web service operationen PersonStructureGet. Denne praksis betyder, at fejl angives efter hvor de forekommer og ikke hvad de repræsenterer. I DGWS angives fejl i stedet via den type de repræsenterer, f.eks. InvalidInput for en situation, hvor web service udbyderen ikke kunne validere det XML der blev modtaget fra en klient. Eksemplet nedenfor viser en DGWS OIO-WSDL, men med store dele af types sektionen udeladt af pladshensyn. Steder hvor WSDL er forkortet er angivet med. <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetnamespace="http://rep.oio.dk/medcom.sundcom.dk/xml/wsdl/2007/06/28/" xmlns:tns="http://rep.oio.dk/medcom.sundcom.dk/xml/wsdl/2007/06/28/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types>... <xs:schema...> <xs:import namespace="http://rep.oio.dk/xkom.dk/xml/schemas/2005/03/15/" /> <xs:import namespace="http://rep.oio.dk/ebxml/xml/schemas/dkcc/2005/09/01/" /> <xs:import namespace="http://rep.oio.dk/ebxml/xml/schemas/dkcc/2005/03/15/" /> <xs:import namespace="http://rep.oio.dk/ois.dk/xml/schemas/2006/04/25/" /> <xs:import namespace="http://rep.oio.dk/itst.dk/xml/schemas/2005/06/24/" /> <xs:import namespace="http://rep.oio.dk/cpr.dk/xml/schemas/core/2006/09/01/" /> <xs:import namespace="http://rep.oio.dk/xkom.dk/xml/schemas/2006/01/06/" /> <xs:import namespace="http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/" /> <xs:import namespace="http://rep.oio.dk/cpr.dk/xml/schemas/core/2006/01/17/" /> <xs:element name="personwithhealthcareinformationstructure" type="dgws:personwithhealthcareinformationstructuretype"> <xs:annotation> <xs:documentation>informationer på en person samt dennes læge</xs:documentation> </xs:annotation> </xs:element> <xs:complextype name="personwithhealthcareinformationstructuretype"> <xs:annotation> <xs:documentation>informationer på person og dennes læge der er registreret i CPRregistret.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element ref="dgws:personinformationstructure"> <xs:annotation> <xs:documentation>informationer vedr. personen selv.</xs:documentation> </xs:annotation> </xs:element> <xs:element ref="dgws:personhealthcareinformationstructure"> <xs:annotation> <xs:documentation>informationer vedr. personens læge og sygesikringsgruppe.</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complextype> <xs:schema xmlns:tns="http://medcom.dk/" xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" MedCom. Den Gode Webservice Bilag ver. 1.1 52
targetnamespace="http://rep.oio.dk/medcom.sundcom.dk/xml/wsdl/2007/06/28/"> <xs:import namespace="http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/" /> <xs:import namespace="http://rep.oio.dk/medcom.sundcom.dk/xml/schemas/2007/02/01/" /> <xs:element name="getpersonwithhealthcareinformationin"> <xs:complextype> <xs:sequence> <xs:element ref="cpr2:personcivilregistrationidentifier" /> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="personinformationrequest"> <xs:complextype> <xs:sequence> <xs:element ref="cpr2:personcivilregistrationidentifier" /> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="personwithhealthcareinformationresponse"> <xs:complextype> <xs:sequence> <xs:element ref="s0:personwithhealthcareinformationstructure" /> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="personinformationresponse"> <xs:complextype> <xs:sequence> <xs:element ref="s0:personinformationstructure" /> </xs:sequence> </xs:complextype> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name="personwithhealthcareinformationrequest"> <wsdl:part name="parameters" element="tns:getpersonwithhealthcareinformationrequest" /> </wsdl:message> <wsdl:message name="personinformationrequest"> <wsdl:part name="parameters" element="tns:personinformationrequest" /> </wsdl:message> <wsdl:message name="personwithhealthcareinformationresponse"> <wsdl:part name="parameters" element="tns:personwithhealthcareinformationresponse" /> </wsdl:message> <wsdl:message name="personinformationresponse"> <wsdl:part name="parameters" element="tns:personinformationresponse" /> </wsdl:message> <wsdl:porttype name="personinformation"> <wsdl:operation name="personinformationget"> <wsdl:input message="tns:personinformationrequest" /> <wsdl:output message="tns:personinformationresponse" /> </wsdl:operation> <wsdl:operation name="personwithhealthcareinformationget"> <wsdl:input message="tns:getpersonwithhealthcareinformationin" /> <wsdl:output message="tns:personwithhealthcareinformationresponse" /> </wsdl:operation> </wsdl:porttype> <wsdl:binding name="personinformationbinding" type="tns:personinformation"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="personinformationget"> <soap:operation soapaction="http://rep.oio.dk/medcom.sundcom.dk/xml/wsdl/2007/06/28/#personinformationget" style="document" /> <wsdl:input> <soap:body use="literal" parts="parameters" /> </wsdl:input> <wsdl:output> <soap:body use="literal" parts="parameters" /> </wsdl:output> </wsdl:operation> <wsdl:operation name="personwithhealthcareinformationget"> <soap:operation soapaction="http://rep.oio.dk/medcom.sundcom.dk/xml/wsdl/2007/06/28/#personwithhealthcareinformation Get" style="document" /> <wsdl:input> <soap:body use="literal" parts="parameters" /> MedCom. Den Gode Webservice Bilag ver. 1.1 53
</wsdl:input> <wsdl:output> <soap:body use="literal" parts="parameters" /> </wsdl:output> </wsdl:operation> </wsdl:binding> </wsdl:definitions> MedCom. Den Gode Webservice Bilag ver. 1.1 54
Bilag 6: Testeksempler I dette bilag findes valide testeksempler på DGWS-konvolutter for samtlige sikkerhedsniveauer. Request niveau 1 På det laveste sikkerhedsniveau er der ingen akkreditiver indlejret i kuverten: <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:wsa="http://www.w3.org/2005/08/addressing/" xmlns:saml="urn:oasis:names:tc:saml:2.0:assertion" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:medcom="http://www.medcom.dk/dgws/2007/12/dgws-1.1" xmlns:sosi="http://www.sosi.dk/dgws/2007/12/sosi-1.1" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <soap:header> <wsa:messageid id="wsamessageid">urn:uuid:6b29fc40-ca47-1067-b31d-00dd010662da</wsa:messageid> <wsa:replyto id="wsareplyto"> <wsa:address> http://www.w3.org/2005/08/addressing/anonymous </wsa:address> </wsa:replyto> <wsa:to id="wsato">http://nogens.server.medcom/webservice</wsa:to> <wsa:action id="wsaaction">http://nogens.server.medcom/webservice</wsa:action> <wsse:security> <wsu:timestamp> <wsu:created>2007-11-21t08:01:00z</wsu:created> </wsu:timestamp> <saml:assertion id="idcard" IssueInstant="2007-11-21T07:55:12Z" Version="2.0"> <saml:issuer>lægesystema</saml:issuer> <saml:subject> <saml:nameid Format=" http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/cpr_personcivilregistrationidentifier.xsd ">2606444917</saml:NameID> </saml:subject> <saml:conditions NotBefore="2007-11-21T07:55:12Z" NotOnOrAfter="2007-11-22T07:55:12Z"/> <saml:authnstatement> <saml:authninstant>2007-11-21t07:55:06z</saml:authninstant> <saml:authncontext> <saml:authncontextclassref> urn:oasis:names:tc:saml:2.0:ac:classes:password </saml:authncontextclassref> <saml:catingauthority>lægesystema</saml:catingauthority> </saml:authncontext> </saml:authnstatement> <saml:attributestatement id="idcarddata"> <saml:attribute Name="dgws:IDCardID"> <saml:attributevalue>urn:uuid:abcdefab-cdef-abcd-efab-cdefabcdefab</saml:attributevalue> <saml:attribute Name="dgws:IDCardVersion"> <saml:attributevalue>1.1</saml:attributevalue> <saml:attribute Name="dgws:IDCardType"> <saml:attributevalue>user</saml:attributevalue> <saml:attribute Name="dgws:vel"> <saml:attributevalue>1</saml:attributevalue> <saml:attribute Name="dgws:UserCivilRegistrationNumber"> <saml:attributevalue>2606444917</saml:attributevalue> <saml:attribute Name="dgws:UserGivenName"> <saml:attributevalue>ole H.</saml:AttributeValue> <saml:attribute Name="dgws:UserSurName"> <saml:attributevalue>berggren</saml:attributevalue> <saml:attribute Name="dgws:UserEmailAddress"> MedCom. Den Gode Webservice Bilag ver. 1.1 55
<saml:attributevalue>ohb@nomail.dk</saml:attributevalue> <saml:attribute Name="dgws:UserRole"> <saml:attributevalue>praktiserende_laege</saml:attributevalue> <saml:attribute Name="dgws:UserOccupation"> <saml:attributevalue>læge</saml:attributevalue> <saml:attribute Name="dgws:UserAuthorizationCode"> <saml:attributevalue>24778</saml:attributevalue> <saml:attribute Name="dgws:ITSystemName"> <saml:attributevalue>lægesystema</saml:attributevalue> <saml:attribute Name="dgws:OrganisationID" NameFormat="dgws:ynumber"> <saml:attributevalue>079741</saml:attributevalue> <saml:attribute Name="dgws:OrganisationName"> <saml:attributevalue>lægehuset, Vandværksvej</saml:AttributeValue> </saml:attributestatement> </saml:assertion> </wsse:security> </soap:header> <soap:body id="body"/> </soap:envelope> Request niveau 2 Nedenstående eksempel viser en forespørgsel på niveau 2, dvs. hvor der anvendes brugernavn og password som akkreditiver: <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:wsa="http://www.w3.org/2005/08/addressing/" xmlns:saml="urn:oasis:names:tc:saml:2.0:assertion" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:medcom="http://www.medcom.dk/dgws/2007/12/dgws-1.1" xmlns:sosi="http://www.sosi.dk/dgws/2007/12/sosi-1.1" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <soap:header> <wsa:messageid id="wsamessageid">urn:uuid:6b29fc40-ca47-1067-b31d-00dd010662da</wsa:messageid> <wsa:replyto id="wsareplyto"> <wsa:address> http://www.w3.org/2005/08/addressing/anonymous </wsa:address> </wsa:replyto> <wsa:to id="wsato">http://nogens.server.medcom/webservice</wsa:to> <wsa:action id="wsaaction">http://nogens.server.medcom/webservice</wsa:action> <wsse:security> <wsu:timestamp> <wsu:created>2007-11-21t08:01:00z</wsu:created> </wsu:timestamp> <saml:assertion id="idcard" IssueInstant="2007-11-21T07:55:12Z" Version="2.0"> <saml:issuer>lægesystema</saml:issuer> <saml:subject> <saml:nameid Format=" http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/cpr_personcivilregistrationidentifier.xsd ">2606444917</saml:NameID> <saml:subjectconfirmation> <saml:confirmationmethod>urn:oasis:names:tc:saml:2.0:cm:holder-ofkey</saml:confirmationmethod> <saml:subjectconfirmationdata> <wsse:usernametoken> <wsse:username>olehberggren</wsse:username> <wsse:password>ohbpaww5</wsse:password> </wsse:usernametoken> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject> <saml:conditions NotBefore="2007-11-21T07:55:12Z" NotOnOrAfter="2007-11-22T07:55:12Z"/> <saml:authnstatement> <saml:authninstant>2007-11-21t07:55:06z</saml:authninstant> <saml:authncontext> MedCom. Den Gode Webservice Bilag ver. 1.1 56
<saml:authncontextclassref> urn:oasis:names:tc:saml:2.0:ac:classes:password </saml:authncontextclassref> <saml:catingauthority>lægesystema</saml:catingauthority> </saml:authncontext> </saml:authnstatement> <saml:attributestatement id="idcarddata"> <saml:attribute Name="dgws:IDCardID"> <saml:attributevalue>urn:uuid:abcdefab-cdef-abcd-efab-cdefabcdefab</saml:attributevalue> <saml:attribute Name="dgws:IDCardVersion"> <saml:attributevalue>1.1</saml:attributevalue> <saml:attribute Name="dgws:IDCardType"> <saml:attributevalue>user</saml:attributevalue> <saml:attribute Name="dgws:vel"> <saml:attributevalue>2</saml:attributevalue> <saml:attribute Name="dgws:UserCivilRegistrationNumber"> <saml:attributevalue>2606444917</saml:attributevalue> <saml:attribute Name="dgws:UserGivenName"> <saml:attributevalue>ole H.</saml:AttributeValue> <saml:attribute Name="dgws:UserSurName"> <saml:attributevalue>berggren</saml:attributevalue> <saml:attribute Name="dgws:UserEmailAddress"> <saml:attributevalue>ohb@nomail.dk</saml:attributevalue> <saml:attribute Name="dgws:UserRole"> <saml:attributevalue>praktiserende_laege</saml:attributevalue> <saml:attribute Name="dgws:UserOccupation"> <saml:attributevalue>maskinarbejder</saml:attributevalue> <saml:attribute Name="dgws:UserAuthorizationCode"> <saml:attributevalue>24778</saml:attributevalue> <saml:attribute Name="dgws:OrganisationID" NameFormat="dgws:ynumber"> <saml:attributevalue>079741</saml:attributevalue> <saml:attribute Name="dgws:OrganisationName"> <saml:attributevalue>lægehuset, Vandværksvej</saml:AttributeValue> <saml:attribute Name="dgws:ITSystemName"> <saml:attributevalue>lægesystema</saml:attributevalue> </saml:attributestatement> </saml:assertion> </wsse:security> </soap:header> <soap:body id="body"/> </soap:envelope> Request niveau 3 Nedenstående eksempel viser en forespørgsel på niveau 3, dvs. hvor der anvendes en digital signatur skabt med et VOCES- eller MOCES-certifikat. I dette tilfælde er der tale om en MOCES-signatur hvorfor IDCardType har værdien user. <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:wsa="http://www.w3.org/2005/08/addressing/" xmlns:saml="urn:oasis:names:tc:saml:2.0:assertion" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dgws="http://www.dgws.dk/dgws/2007/12/dgws-1.1" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <soap:header> MedCom. Den Gode Webservice Bilag ver. 1.1 57
<wsa:messageid id="wsamessageid">urn:uuid:6b29fc40-ca47-1067-b31d-00dd010662da</wsa:messageid> <wsa:replyto id="wsareplyto"> <wsa:address>http://www.w3.org/2005/08/addressing/anonymous</wsa:address> </wsa:replyto> <wsa:to id="wsato">http://nogens.server.dgws/webservice</wsa:to> <wsa:action id="wsaaction">http://nogens.server.dgws/webservice</wsa:action> <wsse:security> <wsu:timestamp> <wsu:created>2007-11-21t08:01:00z</wsu:created> </wsu:timestamp> <saml:assertion id="idcard" IssueInstant="2007-11-21T07:55:12Z" Version="2.0"> <saml:issuer>dgws-sts</saml:issuer> <saml:subject> <saml:nameid Format=" http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/cpr_personcivilregistrationidentifier.xsd ">2606444917</saml:NameID> <saml:subjectconfirmation> <saml:confirmationmethod>urn:oasis:names:tc:saml:2.0:cm:holder-ofkey</saml:confirmationmethod> <saml:subjectconfirmationdata> <ds:keyinfo> <ds:keyname>idcardsignature</ds:keyname> </ds:keyinfo> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject> <saml:conditions NotBefore="2007-11-21T07:55:12Z" NotOnOrAfter="2007-11-22T07:55:12Z"/> <saml:authnstatement> <saml:authninstant>2007-11-21t07:55:06z</saml:authninstant> <saml:authncontext> <saml:authncontextclassref> urn:oasis:names:tc:saml:2.0:ac:classes:x509 </saml:authncontextclassref> <saml:catingauthority>dgws-sts</saml:catingauthority> </saml:authncontext> </saml:authnstatement> <saml:attributestatement id="idcarddata"> <saml:attribute Name="dgws:IDCardID"> <saml:attributevalue>urn:uuid:abcdefab-cdef-abcd-efab-cdefabcdefab</saml:attributevalue> <saml:attribute Name="dgws:IDCardVersion"> <saml:attributevalue>1.1</saml:attributevalue> <saml:attribute Name="dgws:IDCardType"> <saml:attributevalue>user</saml:attributevalue> <saml:attribute Name="dgws:vel"> <saml:attributevalue>3</saml:attributevalue> <saml:attribute Name="dgws:ClientMOCESHash"> <saml:attributevalue>alilaerbquie1/t6ykrkqlze13y=</saml:attributevalue> <saml:attribute Name="dgws:UserCivilRegistrationNumber"> <saml:attributevalue>2606444917</saml:attributevalue> <saml:attribute Name="dgws:UserGivenName"> <saml:attributevalue>ole H.</saml:AttributeValue> <saml:attribute Name="dgws:UserSurName"> <saml:attributevalue>berggren</saml:attributevalue> <saml:attribute Name="dgws:UserEmailAddress"> <saml:attributevalue>ohb@nomail.dk</saml:attributevalue> <saml:attribute Name="dgws:UserRole"> <saml:attributevalue>praktiserende_laege</saml:attributevalue> <saml:attribute Name="dgws:UserOccupation"> <saml:attributevalue>maskinarbejder</saml:attributevalue> <saml:attribute Name="dgws:UserAuthorizationCode"> <saml:attributevalue>24778</saml:attributevalue> <saml:attribute Name="dgws:ITSystemName"> MedCom. Den Gode Webservice Bilag ver. 1.1 58
<saml:attributevalue>lægesystema</saml:attributevalue> <saml:attribute Name="dgws:OrganisationID" NameFormat="dgws:ynumber"> <saml:attributevalue>079741</saml:attributevalue> <saml:attribute Name="dgws:OrganisationName"> <saml:attributevalue>lægehuset, Vandværksvej</saml:AttributeValue> <saml:attribute Name="dgws:ClientVOCESHash"> <saml:attributevalue>benhurrbquie1/t6ykrkqlze13y=</saml:attributevalue> </saml:attributestatement> <ds:signature id="idcardsignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>g3cubvicjk36xj0ifycju0l11we=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue> BaWKC9PQRD1vDyf6ttx4/OKqP7I4TEm8m0B2AVV4O4OTGHWhkU9j9PvLQBIx+JdOYKGynzMRTJ8G j5qmjh6gh/ca2mgkj9bqinrvedxuw4/qntyz0yw/8kso4x7mjda7/pn0owidgcxkw3y4wjglrr2d DFqTSzKLyR5ochINlFg=</ds:SignatureValue> <ds:keyinfo> <ds:x509data> <ds:keyname>2f9b7c21</ds:keyname> </ds:x509data> </ds:keyinfo> </ds:signature> </saml:assertion> <ds:signature id="messagesignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#wsamessageid"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>1234bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsareplyto"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>5678bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsato"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>9012bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsaaction"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> MedCom. Den Gode Webservice Bilag ver. 1.1 59
<ds:digestvalue>abcdbvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#body"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>fklmbvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>fklmbvicjk36xj0ifycju0l11we=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue> SklMC9PQRD1vDyf6ttx4/OKqP7I4TEm8m0B2AVV4O4OTGHWhkU9j9PvLQBIx+JdOYKGynzMRTJ8G j5qmjh6gh/ca2mgkj9bqinrvedxuw4/qntyz0yw/8kso4x7mjda7/pn0owidgcxkw3y4wjglrr2d DFqTSzKLyR5ochINlFg=</ds:SignatureValue> <ds:keyinfo> <ds:x509data> <ds:x509certificate> PUUKBDCCBG2gAwIBAgIEQDZLNzANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGEwJESzEMMAoGA1UE ChMDVERDMSIwIAYDVQQDExlUREMgT0NFUyBTeXN0ZW10ZXN0IENBIElJMB4XDTA1MDYwNjEyMDQw MFoXDTA3MDYwNjEyMzQwMFowfTELMAkGA1UEBhMCREsxLzAtBgNVBAoUJlREQyBUT1RBTEzYU05J TkdFUiBBL1MgLy8gQ1ZSOjI1NzY3NTM1MT0wFAYDVQQDEw1UZXN0IEJydWdlciAyMCUGA1UEBRMe Q1ZSOjI1NzY3NTM1LVJJRDoxMTE4MDYxMDQzMzU2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB gqdma2uvze+4t1i0inhmvafwb2d81q3ag7ds06egy+eljqyumay5evisv4qynwmnv6y1svi3lpd/ oqkdeyntegms/wr7+dbanwbuexnlzry4no4u3drdajvl4nkjdv/dkg1pmfuwmaiykqoltwhe8bcf 7VPXtovQ12CLO7uydoBzTQIDAQABo4ICzTCCAskwDgYDVR0PAQH/BAQDAgP4MCsGA1UdEAQkMCKA DzIwMDUwNjA2MTIwNDAwWoEPMjAwNzA2MDYxMjM0MDBaMEYGCCsGAQUFBwEBBDowODA2BggrBgEF BQcwAYYqaHR0cDovL3Rlc3Qub2NzcC5jZXJ0aWZpa2F0LmRrL29jc3Avc3RhdHVzMIIBAwYDVR0g BIH7MIH4MIH1BgkpAQEBAQEBAQIwgecwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWth dc5kay9yzxbvc2l0b3j5migzbggrbgefbqccajcbpjakfgnuremwawibarqbl1reqybuzxn0ienl cnrpzmlryxrlcibmcmegzgvubmugq0egdwrzdgvkzxmgdw5kzxigt0leideums4xljeums4xljeu MS4xLjIuIFREQyBUZXN0IENlcnRpZmljYXRlcyBmcm9tIHRoaXMgQ0EgYXJlIGlzc3VlZCB1bmRl cibpsuqgms4xljeums4xljeums4xljeumi4wggyjyiziayb4qgenba0wc2vtcgxvewvlv2vimcag A1UdEQQZMBeBFXN1cHBvcnRAY2VydGlmaWthdC5kazCBlgYDVR0fBIGOMIGLMFagVKBSpFAwTjEL MAkGA1UEBhMCREsxDDAKBgNVBAoTA1REQzEiMCAGA1UEAxMZVERDIE9DRVMgU3lzdGVtdGVzdCBD QSBJSTENMAsGA1UEAxMEQ1JMMjAxoC+gLYYraHR0cDovL3Rlc3QuY3JsLm9jZXMuY2VydGlmaWth dc5kay9vy2vzlmnybdafbgnvhsmegdawgbqcmalhgkw4urdfbclb8froggrmfjadbgnvhq4efgqu nqf7pqwirbzkfhwkchoi1bgdx4ywcqydvr0tbaiwadazbgkqhkig9n0hqqaeddakgwrwny4xawid qdanbgkqhkig9w0baqufaaobgqbp+zmrburdsgirxmmwffct4nap3w+xrpqy3icizuw2fcbrtthy ani91ufrjbqhg9rznxaghipzu/txqssqv+m76ki8zb2+r0fwlyrabvclopufrf6prksytynxsngs hqn6re1147c9k315hxg3qmmuu+rbfyvrgkwx0wif3lorlg==</ds:x509certificate> </ds:x509data> </ds:keyinfo> </ds:signature> </wsse:security> </soap:header> <soap:body id="body"/> </soap:envelope> Response niveau 3 Dette response indeholder et gyldigt svar fra en webserviceudbyder: <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:wsa="http://www.w3.org/2005/08/addressing/" xmlns:saml="urn:oasis:names:tc:saml:2.0:assertion" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dgws="http://www.dgws.dk/dgws/2007/12/dgws-1.1" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <soap:header> <wsa:messageid id="wsamessageid">urn:uuid:abcdef12-abcd-ef12-abcd-abcdef123456</wsa:messageid> <wsa:relatesto id="wsarelatesto" RelationShip="http://www.w3.org/2005/08/addressing/reply" MedCom. Den Gode Webservice Bilag ver. 1.1 60
>urn:uuid:6b29fc40-ca47-1067-b31d-00dd010662da</wsa:relatesto> <wsa:to id="wsato">http://www.w3.org/2005/08/addressing/anonymous</wsa:to> <wsa:action id="wsaaction">http://www.w3.org/2005/08/addressing/anonymous</wsa:action> <wsse:security> <wsu:timestamp> <wsu:created>2005-08-24t10:03:46z</wsu:created> </wsu:timestamp> <saml:assertion id="idcard" IssueInstant="2007-11-21T07:55:12Z" Version="2.0"> <saml:issuer>dgws-sts</saml:issuer> <saml:subject> <saml:nameid Format=" http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/cpr_personcivilregistrationidentifier.xsd ">2606444917</saml:NameID> <saml:subjectconfirmation> <saml:confirmationmethod> urn:oasis:names:tc:saml:2.0:cm:holder-of-key </saml:confirmationmethod> <saml:subjectconfirmationdata> <ds:keyinfo> <ds:keyname>idcardsignature</ds:keyname> </ds:keyinfo> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject> <saml:conditions NotBefore="2007-11-21T07:55:12Z" NotOnOrAfter="2007-11-22T07:55:12Z"/> <saml:authnstatement> <saml:authninstant>2007-11-21t07:55:06z</saml:authninstant> <saml:authncontext> <saml:authncontextclassref> urn:oasis:names:tc:saml:2.0:ac:classes:x509 </saml:authncontextclassref> <saml:catingauthority>dgws-sts</saml:catingauthority> </saml:authncontext> </saml:authnstatement> <saml:attributestatement id="idcarddata"> <saml:attribute Name="dgws:IDCardID"> <saml:attributevalue>urn:uuid:abcdefab-cdef-abcd-efab-cdefabcdefab</saml:attributevalue> <saml:attribute Name="dgws:IDCardVersion"> <saml:attributevalue>1.1</saml:attributevalue> <saml:attribute Name="dgws:IDCardType"> <saml:attributevalue>system</saml:attributevalue> <saml:attribute Name="dgws:vel"> <saml:attributevalue>3</saml:attributevalue> <saml:attribute Name="dgws:ITSystemName"> <saml:attributevalue>medicinkort</saml:attributevalue> <saml:attribute Name="dgws:OrganisationID" NameFormat="dgws:ynumber"> <saml:attributevalue>079741</saml:attributevalue> <saml:attribute Name="dgws:OrganisationName"> <saml:attributevalue>lægemiddelstyrelsen</saml:attributevalue> <saml:attribute Name="dgws:ClientVOCESHash"> <saml:attributevalue>benhurrbquie1/t6ykrkqlze13y=</saml:attributevalue> </saml:attributestatement> <ds:signature id="idcardsignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> MedCom. Den Gode Webservice Bilag ver. 1.1 61
<ds:digestvalue>fklmbvicjk36xj0ifycju0l11we=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue> BaWKC9PQRD1vDyf6ttx4/OKqP7I4TEm8m0B2AVV4O4OTGHWhkU9j9PvLQBIx+JdOYKGynzMRTJ8G j5qmjh6gh/ca2mgkj9bqinrvedxuw4/qntyz0yw/8kso4x7mjda7/pn0owidgcxkw3y4wjglrr2d DFqTSzKLyR5ochINlFg=</ds:SignatureValue> <ds:keyinfo> <ds:x509data> <ds:keyname>2f9b7c21</ds:keyname> </ds:x509data> </ds:keyinfo> </ds:signature> </saml:assertion> <ds:signature id="messagesignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#wsamessageid"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>1234bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsarelatesto"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>5678bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsato"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>9012bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsaaction"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>abcdbvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#body"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>fklmbvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:digestvalue>pfk18mvyk/y37elsl0par5juks0=</ds:digestvalue> MedCom. Den Gode Webservice Bilag ver. 1.1 62
</ds:signedinfo> <ds:signaturevalue> Z98DghxEfAEw5eVRIxy7iu6hAJ5DU8f3WigKNeNO1w9a4tlOsu7XPKPV/x6/CpWGYN6Z3JXEKdJmtp1s +6slXZ5szK0Mzv6G+tcKv63eYUNv70RUsQ5GndSirrfSHXxX4/mjvmrFSIryAX3HhwZtj4hCFzQVx5nu 32qsh3esSw4= </ds:signaturevalue> <ds:keyinfo> <ds:x509certificate> MIIFBDCCBG2gAwIBAgIEQDZLNzANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGEwJESzEMMAoGA1UE ChMDVERDMSIwIAYDVQQDExlUREMgT0NFUyBTeXN0ZW10ZXN0IENBIElJMB4XDTA1MDYwNjEyMDQw MFoXDTA3MDYwNjEyMzQwMFowfTELMAkGA1UEBhMCREsxLzAtBgNVBAoUJlREQyBUT1RBTEzYU05J TkdFUiBBL1MgLy8gQ1ZSOjI1NzY3NTM1MT0wFAYDVQQDEw1UZXN0IEJydWdlciAyMCUGA1UEBRMe Q1ZSOjI1NzY3NTM1LVJJRDoxMTE4MDYxMDQzMzU2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB gqdma2uvze+4t1i0inhmvafwb2d81q3ag7ds06egy+eljqyumay5evisv4qynwmnv6y1svi3lpd/ oqkdeyntegms/wr7+dbanwbuexnlzry4no4u3drdajvl4nkjdv/dkg1pmfuwmaiykqoltwhe8bcf 7VPXtovQ12CLO7uydoBzTQIDAQABo4ICzTCCAskwDgYDVR0PAQH/BAQDAgP4MCsGA1UdEAQkMCKA DzIwMDUwNjA2MTIwNDAwWoEPMjAwNzA2MDYxMjM0MDBaMEYGCCsGAQUFBwEBBDowODA2BggrBgEF BQcwAYYqaHR0cDovL3Rlc3Qub2NzcC5jZXJ0aWZpa2F0LmRrL29jc3Avc3RhdHVzMIIBAwYDVR0g BIH7MIH4MIH1BgkpAQEBAQEBAQIwgecwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWth dc5kay9yzxbvc2l0b3j5migzbggrbgefbqccajcbpjakfgnuremwawibarqbl1reqybuzxn0ienl cnrpzmlryxrlcibmcmegzgvubmugq0egdwrzdgvkzxmgdw5kzxigt0leideums4xljeums4xljeu MS4xLjIuIFREQyBUZXN0IENlcnRpZmljYXRlcyBmcm9tIHRoaXMgQ0EgYXJlIGlzc3VlZCB1bmRl cibpsuqgms4xljeums4xljeums4xljeumi4wggyjyiziayb4qgenba0wc2vtcgxvewvlv2vimcag A1UdEQQZMBeBFXN1cHBvcnRAY2VydGlmaWthdC5kazCBlgYDVR0fBIGOMIGLMFagVKBSpFAwTjEL MAkGA1UEBhMCREsxDDAKBgNVBAoTA1REQzEiMCAGA1UEAxMZVERDIE9DRVMgU3lzdGVtdGVzdCBD QSBJSTENMAsGA1UEAxMEQ1JMMjAxoC+gLYYraHR0cDovL3Rlc3QuY3JsLm9jZXMuY2VydGlmaWth dc5kay9vy2vzlmnybdafbgnvhsmegdawgbqcmalhgkw4urdfbclb8froggrmfjadbgnvhq4efgqu nqf7pqwirbzkfhwkchoi1bgdx4ywcqydvr0tbaiwadazbgkqhkig9n0hqqaeddakgwrwny4xawid qdanbgkqhkig9w0baqufaaobgqbp+zmrburdsgirxmmwffct4nap3w+xrpqy3icizuw2fcbrtthy ani91ufrjbqhg9rznxaghipzu/txqssqv+m76ki8zb2+r0fwlyrabvclopufrf6prksytynxsngs hqn6re1147c9k315hxg3qmmuu+rbfyvrgkwx0wif3lorlg== </ds:x509certificate> </ds:keyinfo> </ds:signature> </wsse:security> </soap:header> <soap:body id="body"/> </soap:envelope> Response Fejlet Dette eksempel viser en fejlet besked, hvor webserviceudbyderen har konstateret, at der manglede input til webservicen, og returnerer en webservicespecifik fejlkode dgws:invalidinput : <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:wsa="http://www.w3.org/2005/08/addressing/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:dgws="http://www.medcom.dk/dgws/2007/12/dgws-1.1" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <soap:header> <wsa:messageid id="wsamessageid">urn:uuid:abcdef12-abcd-ef12-abcd-abcdef123456</wsa:messageid> <wsa:relatesto id="wsarelatesto" RelationShip="http://www.w3.org/2005/08/addressing/reply">urn:uuid:6B29FC40-CA47-1067-B31D- 00DD010662DA</wsa:RelatesTo> <wsa:to id="wsato">http://www.w3.org/2005/08/addressing/anonymous</wsa:to> <wsa:action id="wsaaction">http://www.w3.org/2005/08/addressing/anonymous</wsa:action> <wsse:security> <wsu:timestamp> <wsu:created>2005-08-24t10:03:46z</wsu:created> </wsu:timestamp> </wsse:security> </soap:header> <soap:body> <soap:fault> <faultcode>dgws:invalidinput</faultcode> <faultstring>formatet af input er ikke gyldigt: PersonInformationStructure må ikke være tom</faultstring> <detail> <![CDATA[<PersonInformationStructure> </PersonInformationStructure>]]> MedCom. Den Gode Webservice Bilag ver. 1.1 63
</detail> </soap:fault> </soap:body> </soap:envelope> RequestSecurityToken Eksemplet viser et WS-Trust RequestSecurityToken kald fra et it-system til en STS. I eksemplet er der indlejret et niveau 3 id-kort. Signaturerne er ikke valide og kan ikke bruges til udvikling! <?xml version="1.0"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:saml="urn:oasis:names:tc:saml:2.0:assertion" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:dgws="http://www.dgws.dk/dgws/2007/12/dgws-1.1" xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <soap:header> <wsa:messageid id="wsamessageid">urn:uuid:6b29fc40-ca47-1067-b31d-00dd010662da</wsa:messageid> <wsa:replyto id="wsareplyto"> <wsa:address>http://www.w3.org/2005/08/addressing/anonymous</wsa:address> </wsa:replyto> <wsa:to id="wsato">http://sosi.sts.medcom</wsa:to> <wsa:action id="wsaaction">http://nogens.server.dgws/webservice</wsa:action> <wsse:security> <wsu:timestamp> <wsu:created>2007-10-30t10:06:31z</wsu:created> </wsu:timestamp> <ds:signature id="messagesignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#body"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:digestvalue>znstyybuvenbkcjzxjl7rv1kcuk=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue>hspvt2ujvywneje6yh3n8e2qm+3wmkgjloismjbr1lgnxjttlb+sjxy Ps0fJpVRvhShCASSoqRTFP1YYn1pNgdhxzUoFhwVRw9D8+CQnubu3npJDDnJOK/zjsiD+Q22EhAT4Ad7gJfmGiplyVaf KXEPBXEVnzRI1Pxmk12pGKLw=</ds:SignatureValue> <ds:keyinfo> <ds:x509data> <ds:x509certificate>miie6dccbfggawibagieqdavxtanbgkqhkig9w0baqufada/mqswcqydvqq GEwJESzEMMAoGA1UEChMDVERDMSIwIAYDVQQDExlUREMgT0NFUyBTeXN0ZW10ZXN0IENBIElJMB4XDT A2MTIxMTA1MDg1MFoXDTA4MTIxMTA1Mzg1MFowfjELMAkGA1UEBhMCREsxLjAsBgNVBAoTJUpFUk5BT ERFUkJZRU5TIFZFTk5FUiAvLyBDVlI6MTkzNDM2MzQxPzAWBgNVBAMTD01pa2UgdmFsaWRNT0NFUzAl BgNVBAUTHkNWUjoxOTM0MzYzNC1SSUQ6MTE2NTgxMzg0OTgwOTCBnzANBgkqhkiG9w0BAQEFAAOBjQA wgykcgyeamgjrlawz0qywdtzslkiavusv0nw05masc6auiv9dn16qqeqwactzk33tweynclkflbm2yq CRLFKSZIexK3K5DpQEv9rgonVRGgczXMEw3j/vcsoS3wDDyvjFD734tpvda/fy5/NNyNRsfz0wPKRa6 b3ysn5jbide0yuyu9f6yxecaweaaaocarawggksma4ga1uddweb/wqeawid+darbgnvhraejdaiga8y MDA2MTIxMTA1MDg1MFqBDzIwMDgxMjExMDUzODUwWjBGBggrBgEFBQcBAQQ6MDgwNgYIKwYBBQUHMAG GKmh0dHA6Ly90ZXN0Lm9jc3AuY2VydGlmaWthdC5kay9vY3NwL3N0YXR1czCCAQMGA1UdIASB+zCB+D CB9QYJKQEBAQEBAQECMIHnMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNlcnRpZmlrYXQuZGsvcmVwb 3NpdG9yeTCBswYIKwYBBQUHAgIwgaYwChYDVERDMAMCAQEagZdUREMgVGVzdCBDZXJ0aWZpa2F0ZXIg ZnJhIGRlbm5lIENBIHVkc3RlZGVzIHVuZGVyIE9JRCAxLjEuMS4xLjEuMS4xLjEuMS4yLiBUREMgVGV zdcbdzxj0awzpy2f0zxmgznjvbsb0aglzienbigfyzsbpc3n1zwqgdw5kzxigt0leideums4xljeums 4xLjEuMS4xLjIuMB8GCWCGSAGG+EIBDQQSFhBlbXBsb3llZVdlYk5vRGlyMIGWBgNVHR8EgY4wgYswV qbuofkkudbomqswcqydvqqgewjeszemmaoga1uechmdverdmsiwiaydvqqdexluremgt0nfuybtexn0 ZW10ZXN0IENBIElJMQ0wCwYDVQQDEwRDUkw1MDGgL6AthitodHRwOi8vdGVzdC5jcmwub2Nlcy5jZXJ 0aWZpa2F0LmRrL29jZXMuY3JsMB8GA1UdIwQYMBaAFByYCUcaTDi5EMUEKVvx9E6Aasx+MB0GA1UdDg QWBBR5+sA7XAkW6XvF0xtmZVtoXkQIcTAJBgNVHRMEAjAAMBkGCSqGSIb2fQdBAAQMMAobBFY3LjEDA gooma0gcsqgsib3dqebbquaa4gbaeikkdcftsoffvdvwxn3oleywzejfd/vsacsmeg6v5cfjzzgde8m 9W1L1x1jdan4qQxFfH6fc3NnOgKISn3KM0CSzCAqhovbVSC1j5FV3JMwJnLZEMRlrOnERAQ/1FHEr0L MedCom. Den Gode Webservice Bilag ver. 1.1 64
/PmYZENQftorR0z5WnZP8K8znxeqvDjzllHvTkFZK</ds:X509Certificate> </ds:x509data> </ds:keyinfo> </ds:signature> </wsse:security> </soap:header> <soap:body id="body"> <wst:requestsecuritytoken> <wst:tokentype>urn:oasis:names:tc:saml:2.0:assertion</wst:tokentype> <wst:requesttype>http://schemas.xmlsoap.org/ws/2005/02/security/trust/issue</wst:requesttype> <wst:claims> <saml:assertion id="idcard" IssueInstant="2007-10-30T10:06:31Z" Version="2.0"> <saml:issuer>testissuer</saml:issuer> <saml:subject> <saml:nameid Format=" http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/cpr_personcivilregistrationidentifier.xsd ">1111111118</saml:NameID> <saml:subjectconfirmation> <saml:confirmationmethod> urn:oasis:names:tc:saml:2.0:cm:holder-of-key </saml:confirmationmethod> <saml:subjectconfirmationdata> <ds:keyinfo> <ds:keyname>idcardsignature</ds:keyname> </ds:keyinfo> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject> <saml:conditions NotBefore="2007-10-30T10:06:31Z" NotOnOrAfter="2007-10-31T10:06:31Z"/> <saml:attributestatement id="idcarddata"> <saml:attribute Name="dgws:IDCardID"> <saml:attributevalue> urn:uuid:550e8400-e29b-41d4-a716-446655440000 </saml:attributevalue> <saml:attribute Name="dgws:IDCardVersion"> <saml:attributevalue>1.1</saml:attributevalue> <saml:attribute Name="dgws:IDCardType"> <saml:attributevalue>user</saml:attributevalue> <saml:attribute Name="dgws:vel"> <saml:attributevalue>3</saml:attributevalue> <saml:attribute Name="dgws:UserCivilRegistrationNumber"> <saml:attributevalue>1111111118</saml:attributevalue> <saml:attribute Name="dgws:UserGivenName"> <saml:attributevalue>anders</saml:attributevalue> <saml:attribute Name="dgws:UserSurName"> <saml:attributevalue>and</saml:attributevalue> <saml:attribute Name="dgws:UserEmailAddress"> <saml:attributevalue>aand@andeby.dk</saml:attributevalue> <saml:attribute Name="dgws:UserRole"> <saml:attributevalue>nurse</saml:attributevalue> <saml:attribute Name="dgws:UserAuthorizationCode"> <saml:attributevalue>19901</saml:attributevalue> <saml:attribute Name="dgws:OrganisationID" NameFormat="dgws:cvrnumber"> <saml:attributevalue>19343634</saml:attributevalue> <saml:attribute Name="dgws:OrganisationName"> <saml:attributevalue>orgname</saml:attributevalue> </saml:attributestatement> <ds:signature id="idcardsignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#IDCard"> MedCom. Den Gode Webservice Bilag ver. 1.1 65
<ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:digestvalue>znstyybuvenbkcjzxjl7rv1kcuk=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue>hspvt2ujvywneje6yh3n8e2qm+3wmkgjloismjbr1lgnxjttlb+sj XyPs0fJpVRvhShCASSoqRTFP1YYn1pNgdhxzUoFhwVRw9D8+CQnubu3npJDDnJOK/zjsiD+Q22EhAT4Ad7gJfm GiplyVafKXEPBXEVnzRI1Pxmk12pGKLw=</ds:SignatureValue> <ds:keyinfo> <ds:x509data> <ds:x509certificate>miie6dccbfggawibagieqdavxtanbgkqhkig9w0baqufada/mqswcqydvqq GEwJESzEMMAoGA1UEChMDVERDMSIwIAYDVQQDExlUREMgT0NFUyBTeXN0ZW10ZXN0IENBIElJMB4XDT A2MTIxMTA1MDg1MFoXDTA4MTIxMTA1Mzg1MFowfjELMAkGA1UEBhMCREsxLjAsBgNVBAoTJUpFUk5BT ERFUkJZRU5TIFZFTk5FUiAvLyBDVlI6MTkzNDM2MzQxPzAWBgNVBAMTD01pa2UgdmFsaWRNT0NFUzAl BgNVBAUTHkNWUjoxOTM0MzYzNC1SSUQ6MTE2NTgxMzg0OTgwOTCBnzANBgkqhkiG9w0BAQEFAAOBjQA wgykcgyeamgjrlawz0qywdtzslkiavusv0nw05masc6auiv9dn16qqeqwactzk33tweynclkflbm2yq CRLFKSZIexK3K5DpQEv9rgonVRGgczXMEw3j/vcsoS3wDDyvjFD734tpvda/fy5/NNyNRsfz0wPKRa6 b3ysn5jbide0yuyu9f6yxecaweaaaocarawggksma4ga1uddweb/wqeawid+darbgnvhraejdaiga8y MDA2MTIxMTA1MDg1MFqBDzIwMDgxMjExMDUzODUwWjBGBggrBgEFBQcBAQQ6MDgwNgYIKwYBBQUHMAG GKmh0dHA6Ly90ZXN0Lm9jc3AuY2VydGlmaWthdC5kay9vY3NwL3N0YXR1czCCAQMGA1UdIASB+zCB+D CB9QYJKQEBAQEBAQECMIHnMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNlcnRpZmlrYXQuZGsvcmVwb 3NpdG9yeTCBswYIKwYBBQUHAgIwgaYwChYDVERDMAMCAQEagZdUREMgVGVzdCBDZXJ0aWZpa2F0ZXIg ZnJhIGRlbm5lIENBIHVkc3RlZGVzIHVuZGVyIE9JRCAxLjEuMS4xLjEuMS4xLjEuMS4yLiBUREMgVGV zdcbdzxj0awzpy2f0zxmgznjvbsb0aglzienbigfyzsbpc3n1zwqgdw5kzxigt0leideums4xljeums 4xLjEuMS4xLjIuMB8GCWCGSAGG+EIBDQQSFhBlbXBsb3llZVdlYk5vRGlyMIGWBgNVHR8EgY4wgYswV qbuofkkudbomqswcqydvqqgewjeszemmaoga1uechmdverdmsiwiaydvqqdexluremgt0nfuybtexn0 ZW10ZXN0IENBIElJMQ0wCwYDVQQDEwRDUkw1MDGgL6AthitodHRwOi8vdGVzdC5jcmwub2Nlcy5jZXJ 0aWZpa2F0LmRrL29jZXMuY3JsMB8GA1UdIwQYMBaAFByYCUcaTDi5EMUEKVvx9E6Aasx+MB0GA1UdDg QWBBR5+sA7XAkW6XvF0xtmZVtoXkQIcTAJBgNVHRMEAjAAMBkGCSqGSIb2fQdBAAQMMAobBFY3LjEDA gooma0gcsqgsib3dqebbquaa4gbaeikkdcftsoffvdvwxn3oleywzejfd/vsacsmeg6v5cfjzzgde8m 9W1L1x1jdan4qQxFfH6fc3NnOgKISn3KM0CSzCAqhovbVSC1j5FV3JMwJnLZEMRlrOnERAQ/1FHEr0L /PmYZENQftorR0z5WnZP8K8znxeqvDjzllHvTkFZK</ds:X509Certificate> </ds:x509data> </ds:keyinfo> </ds:signature> </saml:assertion> </wst:claims> </wst:requestsecuritytoken> </soap:body> </soap:envelope> RequestSecurityTokenResponse Hvis alt går vel modtager klientsystemet et STS underskrevet id-kort. Eksemplet nedenfor er udstedt på niveau 3: <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:saml="urn:oasis:names:tc:saml:2.0:assertion" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:dgws="http://www.dgws.dk/dgws/2007/12/dgws-1.1" xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <soap:header> <wsa:messageid id="wsamessageid">urn:uuid:abcdef12-abcd-ef12-abcd-abcdef123456</wsa:messageid> <wsa:relatesto id="wsarelatesto" RelationShip="http://www.w3.org/2005/08/addressing/reply">urn:uuid:6B29FC40-CA47-1067-B31D- 00DD010662DA</wsa:RelatesTo> <wsa:to id="wsato">http://www.w3.org/2005/08/addressing/anonymous</wsa:to> <wsa:action id="wsaaction">http://www.w3.org/2005/08/addressing/anonymous</wsa:action> <wsse:security> <wsu:timestamp> <wsu:created>2007-11-13t16:42:54z</wsu:created> </wsu:timestamp> <ds:signature id="messagesignature"> <ds:signedinfo> MedCom. Den Gode Webservice Bilag ver. 1.1 66
<ds:canonicalizationmethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#wsamessageid"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>1234bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsarelatesto"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>5678bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsato"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>9012bvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#wsaaction"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>abcdbvicjk36xj0ifycju0l11we=</ds:digestvalue> <ds:reference URI="#body"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:digestvalue>fklmbvicjk36xj0ifycju0l11we=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue> Z98DghxEfAEw5eVRIxy7iu6hAJ5DU8f3WigKNeNO1w9a4tlOsu7XPKPV/x6/CpWGYN6Z3JXEKdJmtp1s +6slXZ5szK0Mzv6G+tcKv63eYUNv70RUsQ5GndSirrfSHXxX4/mjvmrFSIryAX3HhwZtj4hCFzQVx5nu 32qsh3esSw4= </ds:signaturevalue> <ds:keyinfo> <ds:x509certificate> MIIFBDCCBG2gAwIBAgIEQDZLNzANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGEwJESzEMMAoGA1UE ChMDVERDMSIwIAYDVQQDExlUREMgT0NFUyBTeXN0ZW10ZXN0IENBIElJMB4XDTA1MDYwNjEyMDQw MFoXDTA3MDYwNjEyMzQwMFowfTELMAkGA1UEBhMCREsxLzAtBgNVBAoUJlREQyBUT1RBTEzYU05J TkdFUiBBL1MgLy8gQ1ZSOjI1NzY3NTM1MT0wFAYDVQQDEw1UZXN0IEJydWdlciAyMCUGA1UEBRMe Q1ZSOjI1NzY3NTM1LVJJRDoxMTE4MDYxMDQzMzU2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB gqdma2uvze+4t1i0inhmvafwb2d81q3ag7ds06egy+eljqyumay5evisv4qynwmnv6y1svi3lpd/ oqkdeyntegms/wr7+dbanwbuexnlzry4no4u3drdajvl4nkjdv/dkg1pmfuwmaiykqoltwhe8bcf 7VPXtovQ12CLO7uydoBzTQIDAQABo4ICzTCCAskwDgYDVR0PAQH/BAQDAgP4MCsGA1UdEAQkMCKA DzIwMDUwNjA2MTIwNDAwWoEPMjAwNzA2MDYxMjM0MDBaMEYGCCsGAQUFBwEBBDowODA2BggrBgEF BQcwAYYqaHR0cDovL3Rlc3Qub2NzcC5jZXJ0aWZpa2F0LmRrL29jc3Avc3RhdHVzMIIBAwYDVR0g BIH7MIH4MIH1BgkpAQEBAQEBAQIwgecwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWth dc5kay9yzxbvc2l0b3j5migzbggrbgefbqccajcbpjakfgnuremwawibarqbl1reqybuzxn0ienl cnrpzmlryxrlcibmcmegzgvubmugq0egdwrzdgvkzxmgdw5kzxigt0leideums4xljeums4xljeu MS4xLjIuIFREQyBUZXN0IENlcnRpZmljYXRlcyBmcm9tIHRoaXMgQ0EgYXJlIGlzc3VlZCB1bmRl cibpsuqgms4xljeums4xljeums4xljeumi4wggyjyiziayb4qgenba0wc2vtcgxvewvlv2vimcag A1UdEQQZMBeBFXN1cHBvcnRAY2VydGlmaWthdC5kazCBlgYDVR0fBIGOMIGLMFagVKBSpFAwTjEL MAkGA1UEBhMCREsxDDAKBgNVBAoTA1REQzEiMCAGA1UEAxMZVERDIE9DRVMgU3lzdGVtdGVzdCBD QSBJSTENMAsGA1UEAxMEQ1JMMjAxoC+gLYYraHR0cDovL3Rlc3QuY3JsLm9jZXMuY2VydGlmaWth dc5kay9vy2vzlmnybdafbgnvhsmegdawgbqcmalhgkw4urdfbclb8froggrmfjadbgnvhq4efgqu nqf7pqwirbzkfhwkchoi1bgdx4ywcqydvr0tbaiwadazbgkqhkig9n0hqqaeddakgwrwny4xawid qdanbgkqhkig9w0baqufaaobgqbp+zmrburdsgirxmmwffct4nap3w+xrpqy3icizuw2fcbrtthy ani91ufrjbqhg9rznxaghipzu/txqssqv+m76ki8zb2+r0fwlyrabvclopufrf6prksytynxsngs hqn6re1147c9k315hxg3qmmuu+rbfyvrgkwx0wif3lorlg== </ds:x509certificate> </ds:keyinfo> </ds:signature> MedCom. Den Gode Webservice Bilag ver. 1.1 67
</wsse:security> </soap:header> <soap:body id="body"> <wst:requestsecuritytokenresponse Context="www.sosi.dk"> <wst:tokentype>urn:oasis:names:tc:saml:2.0:assertion</wst:tokentype> <wst:requestedsecuritytoken> <saml:assertion IssueInstant="2007-11-13T16:37:54Z" Version="2.0" id="idcard"> <saml:issuer>teststs</saml:issuer> <saml:subject> <saml:nameid Format=" http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/cpr_personcivilregistrationidentifier.xsd ">1111111118</saml:NameID> <saml:subjectconfirmation> <saml:confirmationmethod>urn:oasis:names:tc:saml:2.0:cm:holder-ofkey</saml:confirmationmethod> <saml:subjectconfirmationdata> <ds:keyinfo> <ds:keyname>idcardsignature</ds:keyname> </ds:keyinfo> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject> <saml:conditions NotBefore="2007-11-13T16:37:54Z" NotOnOrAfter="2007-11-14T16:37:54Z"/> <saml:authnstatement> <saml:authninstant>2007-11-21t07:55:06z</saml:authninstant> <saml:authncontext> <saml:authncontextclassref>urn:oasis:names:tc:saml:2.0:ac:classes:x509</saml:authncontextclassref> <saml:catingauthority>sosi-sts</saml:catingauthority> </saml:authncontext> </saml:authnstatement> <saml:attributestatement id="idcarddata"> <saml:attribute Name="dgws:IDCardID"> <saml:attributevalue>urn:uuid:550e8400-e29b-41d4-a716-446655440000</saml:attributevalue> <saml:attribute Name="dgws:IDCardVersion"> <saml:attributevalue>1.1</saml:attributevalue> <saml:attribute Name="dgws:IDCardType"> <saml:attributevalue>user</saml:attributevalue> <saml:attribute Name="dgws:vel"> <saml:attributevalue>3</saml:attributevalue> <saml:attribute Name="dgws:ClientMOCESHash"> <saml:attributevalue>vsoppml2xetrwvtlkc80o/jqd84=</saml:attributevalue> <saml:attribute Name="dgws:UserCivilRegistrationNumber"> <saml:attributevalue>1111111118</saml:attributevalue> <saml:attribute Name="dgws:UserGivenName"> <saml:attributevalue>anders</saml:attributevalue> <saml:attribute Name="dgws:UserSurName"> <saml:attributevalue>and</saml:attributevalue> <saml:attribute Name="dgws:UserEmailAddress"> <saml:attributevalue>aand@andeby.dk</saml:attributevalue> <saml:attribute Name="dgws:UserRole"> <saml:attributevalue>nurse</saml:attributevalue> <saml:attribute Name="dgws:UserAuthorizationCode"> <saml:attributevalue>19901</saml:attributevalue> <saml:attribute Name="dgws:ITSystemName"> <saml:attributevalue>sositest</saml:attributevalue> <saml:attribute Name="dgws:OrganisationID" NameFormat="dgws:cvrnumber"> <saml:attributevalue>19343634</saml:attributevalue> <saml:attribute Name="dgws:OrganisationName"> <saml:attributevalue>orgname</saml:attributevalue> MedCom. Den Gode Webservice Bilag ver. 1.1 68
<saml:attribute Name="dgws:ClientVOCESHash"> <saml:attributevalue>pmqppml2xetrwvtlkc80o/jqd84=</saml:attributevalue> </saml:attributestatement> <ds:signature id="idcardsignature"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#IDCard"> <ds:transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:digestvalue>mcy18mvyk/y37elsl0par5juks0=</ds:digestvalue> </ds:signedinfo> <ds:signaturevalue>y08dghxefaew5evrixy7iu6haj5du8f3wigkneno1w9a4tlosu7xpkpv/x6/cpwgyn6z3jxekdjmtp1s+ 6slXZ5szK0Mzv6G+tcKv63eYUNv70RUsQ5GndSirrfSHXxX4/mjvmrFSIryAX3HhwZtj4hCFzQVx5nu32qsh3esSw4=</ds:Sign aturevalue> <ds:keyinfo> <ds:x509data> <ds:keyname>2f9b7c21</ds:keyname> </ds:x509data> </ds:keyinfo> </ds:signature> </saml:assertion> </wst:requestedsecuritytoken> <wst:status> <wst:code>http://schemas.xmlsoap.org/ws/2005/02/trust/status/valid</wst:code> </wst:status> <wst:issuer> <wsa:address>sosi-sts</wsa:address> </wst:issuer> </wst:requestsecuritytokenresponse> </soap:body> </soap:envelope> MedCom. Den Gode Webservice Bilag ver. 1.1 69