STS Fejlsituationer i STS Fejlsituationer
STS Fejlsituationer ii REVISION HISTORY NUMBER DATE DESCRIPTION NAME 0.4 2013-04 N
STS Fejlsituationer iii Indhold 1 Introduktion 1 2 Behandling af forespørgsel 1 2.1 Verificeret forespørgsel................................................ 1 2.2 Afvist forespørgsel.................................................. 2 3 Fejlsituationer 3 3.1 Parse SecurityToken Request............................................. 3 3.2 Check Authentication Level............................................. 4 3.3 Verify ID Card.................................................... 4 3.4 Verify Certificate................................................... 4 3.5 Verify ACL...................................................... 5 3.6 Verify SystemInfo................................................... 5 3.7 Verify UserInfo.................................................... 5 3.7.1 CPR check.................................................. 5 3.7.2 Autorisations check.............................................. 6
STS Fejlsituationer 1 / 6 1 Introduktion Denne note er rettet mod personer der skal forstå hvorledes forespørgsler mod STS behandles i relation til diagnosticering af support henvendelser. Noten forventes at skulle udvides eller suppleres af andet dokument, som adresserer behov for både indkommende support henvendelser samt support ved tilslutning af eksempelvis lægepraksissystemer. 2 Behandling af forespørgsel Ved behandling af en forespørgsel om udstedelse af ID-kort hos en STS gennemgås en række skridt. Forløbet er skitseret forsimplet nedenfor, med de skridt der har primær relevans i forhold til diagnosticering af udstedelse. Hvert skridt kan føre til en afvisning af forespørgslen, mens succesfuld verifikation leder til signering og dermed udstedelse af et ID-kort. 2.1 Verificeret forespørgsel Ved succesfuld udstedelse af et STS signeret ID-kort returneres et SOAP svar fra STS indeholdende relevante ID-kort attributter (SAML assertions), dvs. både verificerede (f.eks CVR) og berigede (f.eks. CPR), samt øvrig information jævnfør DGWS. <?xml version="1.0" encoding="utf-8"?> <soapenv:envelope...> <soapenv:header> <wsse:security id="aaabl0ncnmxd26quzor4jlnpu0k="> <wsu:timestamp> <wsu:created>2011-04-12t15:17:41</wsu:created> </wsu:timestamp>
STS Fejlsituationer 2 / 6 </wsse:security> </soapenv:header> <soapenv:body> <wst:requestsecuritytokenresponse Context="www.sosi.dk"> <wst:tokentype>urn:oasis:names:tc:saml:2.0:assertion:</wst:tokentype> <wst:requestedsecuritytoken>... </wst:requestedsecuritytoken> <wst:status> <wst:code>http://schemas.xmlsoap.org/ws/2005/02/trust/status/valid</wst:code> </wst:status> <wst:issuer> <wsa:address>teststs</wsa:address> </wst:issuer> </wst:requestsecuritytokenresponse> </soapenv:body> </soapenv:envelope> Ovenstående eksempel viser en del af et svar indeholdende et STS signeret ID-kort. I eksemplet er namespace erklæringer samt alle ID-kort attributter fjernet af hensyn til overskuelighed. Vigtige elementer ved diagnosticering er: wsu:timestamp: Tidspunkt for udstedelse wst:requestsecuritytokenresponse: Findes altid for succesfuldt udstedte ID-kort wst:requestedsecuritytoken: Indeholder ID-kortets attributter wst:status: Indeholder status for ID-kortet (WS-Trust) wst:issuer: Viser hvilken STS (føderation) ID-kortet er udstedt af 2.2 Afvist forespørgsel På tilsvarende vis leverer en STS ved afvist forespørgsel et SOAP svar (Fault) indeholdende yderligere information om fejlen. Nedenstående eksempel viser (igen uden namespace erklæringer) elementerne i svaret der bruges i forbindelse med diagnosticering: wsu:timestamp: Tidspunkt for behandling faultcode: Kategorisering af årsag til afvisning faultactor: Information om afvisningens oprindelse faultstring: Kort beskrivelse af årsagen til afvisningen Det er kombinationen af faultcode, faultactor og faultstring som identificerer fejlen, hvor faultstring typisk indeholder den nødvendige information for nærmere fejlsøgning. Faultcode værdier faultcode skal ikke betragtes som entydige fejlkoder, men skal ses i sammenhæng og bør betragtes som en gruppering af de fejltyper der kan opstå ved behandling af kald til tjenester på en STS: wst:invalidrequest wst:failedauthentication wst:requestfailed wst:authenticationbadelements wst:badrequest
STS Fejlsituationer 3 / 6 wst:invalidtimerange FAULTACTOR VÆRDIER dk:sosi:sts: Fejl ved behandling af ID-kort udstedelse dk:sosi:sts:its: Fejl ved veksling af ID-kort til OIOIDWS-H token dk:sosi:sts:nbo: Fejl ved billetomveksling dk:sosi:sts:seal: Fejl ved håndtering af ID-kort, f.eks. verifikation af signatur og serialisering/deserialisering dk:sosi:sts:cvrridcpr: Fejl ved opslag i RID-CPR tjeneste eller brug af resultatet fra opslaget dk:sosi:sts:autorisation: Fejl ved opslag i autorisationsregister eller brug af resultatet fra opslaget Eksempel på afvist forespørgsel <?xml version="1.0" encoding="utf-8"?> <soapenv:envelope...> <soapenv:header> <wsse:security id=""> <wsu:timestamp> <wsu:created>2011-04-12t15:17:39</wsu:created> </wsu:timestamp> </wsse:security> </soapenv:header> <soapenv:body> <soapenv:fault> <faultcode>wst:invalidrequest</faultcode> <faultstring>the request was invalid or malformed</faultstring> <faultactor>dk:sosi:sts</faultactor> </soapenv:fault> </soapenv:body> </soapenv:envelope> 3 Fejlsituationer De følgende afsnit beskriver en delmængde af de fejlsituationer, man som anvender kan komme ud for i forbindelse med udstedelse af ID-kort mod en STS. Beskrivelserne består af Passende overskrift STS svar: SOAP fault fra STS svaret Årsag: Hvor findes fejlen, f.eks. anvender (kalder af STS), bruger (ejer af certifikat/id-kort), eller STS Forklaring: En kort beskrivelse af problemet Løsning: Hvad man kan gøre for at løse/diagnostisere problemet I forbindelse med fejlsøgning sammenholdes den konkrete SOAP fejl med de beskrevne STS svar ved hjælp af faultcode, faultactor og faultstring. 3.1 Parse SecurityToken Request
STS Fejlsituationer 4 / 6 Ugyldig ID-kort version STS svar - faultcode = wst:requestfailed :seal - faultstring = The specified request failed IDCard version * not supported. Supported versions are: [1.0.1, 1.0] Årsag Forklaring Løsning Anvender Forespørgslen indeholder et ID-kort med en version der ikke understøttes af STS (se DGWS for detaljer). Klienten rettes, så kun understøttede ID-kort versioner anvendes. Nyere versioner af både Seal.Java og Seal.NET producerer ID-kort med korrekt version. 3.2 Check Authentication Level Ugyldig Authentication Level STS svar - faultcode = wst:requestfailed - faultstring = The specified RequestSecurityToken is not understood: Authentication level not supported (*) Årsag Anvender Forklaring Forespørgslen indeholder et ID-kort med et authentication level der ikke er understøttet, dvs. forskelligt fra level 3 eller 4 (se DGWS for detaljer). Løsning Klienten rettes, så kun understøttede authentication level versioner anvendes. 3.3 Verify ID Card ID-kort gyldighed STS svar - faultcode = wst:invalidtimerange - faultstring = The requested time range is invalid or unsupported: IDCard have maximum validity of 24 hours + [*] Årsag Anvender Forklaring Forespørgslen anmoder om et ID-kort med gyldighed mere end 24 timer, hvilket ikke understøttes (se DGWS for detaljer). Løsning Klienten rettes, så kun ID-kort med gyldighed på 24 timer eller mindre forsøges udstedt. ID-kort gyldighed STS svar - faultcode = wst:invalidtimerange - faultstring = The requested time range is invalid or unsupported: IDCard is created after or expires before current system time Årsag Anvender, STS Forklaring ID-kortet er udstedt på et system, der ikke er tidssynkroniseret med STS. Hvis tiden afviger signifikant (der tillades nogen tidsdrift), kan ID-kortet ikke udstedes. Løsning Såfremt STS tiden ikke er korrekt vil der generelt være problemer med udstedelsen af ID-kort. Fejlen vil derfor overvejende skulle fejlsøges hos anvenderen: 1. Undersøg om anvenderens IT-system anvender korrekt tid 2. Check om NTP anvendes, evt. hyppighed og NTP server 3. Synkroniser tid 3.4 Verify Certificate
STS Fejlsituationer 5 / 6 Ugyldig udsteder - faultstring = Authentication failed: certificate issued by invalid party Årsag Anvender Forklaring Det underskrivende certifikat er ikke udstedt i føderationen og kan derfor ikke anvendes til udstedelse af ID-kort. Løsning 1. Undersøg hvilken STS der er brugt, dvs. Test eller Produktion. 2. Undersøg hvilken CA der har udstedt certifikatet 3.5 Verify ACL MOCES certifikat black listed - faultstring = Authentication failed: MOCES is blacklisted [CVR:*-RID:*] Årsag STS Forklaring Det underskrivende certifikat er black listed i STS en og kan derfor ikke udstede ID-kort. Løsning 1. Bekræft at certifikatet er black listed 2. Undersøg årsagen til black listing 3.6 Verify SystemInfo CVR uoverensstemmelse - faultstring = Authentication failed: cvr mismatch Årsag Anvender Forklaring CVR i ID-kortet svarer ikke til CVR i certifikatets subject serial number. Løsning 1. Verificer CVR nummer i STS forespørgsel 2. Find CVR i certifikatet 3.7 Verify UserInfo 3.7.1 CPR check Ugyldig CPR nummer :cvrridcpr - faultstring = Authentication failed: cvrrid-cpr mismatch [CVR:*-RID:*,*] Årsag Anvender, bruger Forklaring MOCES Certifikat og CPR-nummer fra ID-kort stemmer ikke overens, og identitet kan ikke bekræftes. Løsning 1. Undersøg om det anvendte certifikat svarer til ID-kortet 2. Undersøg om CPR i ID-kort er som forventet 3. Undersøg hvilket CPR er tilknyttet certifikatet Manglende CPR nummer tilknytning :cvrridcpr - faultstring = Authentication failed: illegal cvrrid [CVR:*-RID:*] Årsag Anvender, bruger
STS Fejlsituationer 6 / 6 Manglende CPR nummer tilknytning Forklaring Det anvendte MOCES certifikat har ikke noget tilknytte CPR-nummer og identitet kan ikke bekræftes. Løsning Check at der er tilknyttet et CPR til certifikatet hos DanID Fejl ved CPR nummer opslag STS svar - faultcode = wst:requestfailed :cvrridcpr - faultstring = The specified request failed:* Årsag STS Forklaring STS har ikke kunnet foretage opslag imod RID-CPR tjeneste og dermed ikke kunnet verificere ID-kortet. Løsning 1. Gentag forespørgsel efter kort pause 2. Ved gentagne fejl kontakt helpdesk med detaljeret fejlbesked 3.7.2 Autorisations check Manglende autorisation :autorisation - faultstring = Authentication failed: missing authorization Årsag Forklaring Der findes ikke nogle tilknyttede gyldige autorisationer til CPR-nummeret i autorisationsregisteret. Løsning Check at brugeren har en gyldig autorisation. Forkert autorisation :autorisation - faultstring = Authentication failed: authorization not found (available *) Årsag Forklaring Der blev ikke fundet en autorisation tilknyttet CPR-nummeret, som matcher autorisations- eller uddannelseskode i ID-kortet. Løsning Check brugerens autorisationer mathcer med de medsendte oplysninger i ID-kortet, dvs. SAML attributtern UserAuthorizationCode (autorisationskode) og UserRole (uddannelseskode). Flere autorisationer fundet :autorisation - faultstring = Authentication failed: multiple authorizations found (*) Årsag Forklaring Der blev fundet mere end én autorisation tilknyttet CPR-nummeret, som matcher autorisations- eller uddannelseskode i ID-kortet. Løsning Angiv i ID-kortet hvilken autorisation der skal bruges, dvs. enten med angivelse af autorsations- eller uddannelseskode.