Anslutning till CGI:s Identity Provider
Ändringshistorik
Datum | Version | Kommentar |
---|---|---|
2018-04-25 | 3.0 | Omgjord för webb |
2018-09-27 | 3.0.1 | Freja, eIDAS IDP |
2018-11-07 | 3.1 | Allmänna uppdateringar |
2018-12-19 | 3.2 | Fel Freja metadata, Norskt BankID test |
2019-09-02 | 3.3 | Uppdatering av metadatalänkar |
2020-02-24 | 3.3.1 | Korrigerat metadatalänk Freja IDP produktion |
2021-09-23 | 3.3.2 | Nya metadatalänkar Tekniskt Ramverk (test) |
- Anslutning till CGI:s Identity Provider
- 1 CGI:s IdP SAML 2.0
- 2 Metadata
- 3 SAML-attribut
- 4 Exempelmeddelanden IdP
- 5 Anslutning
- 6 Tydlighet att inloggning sker på annan domän
- 7 Eget domännamn
- 9 Exempel på SP programvaror
- 10 Övriga funktioner
- 11 Federering
1 CGI:s IdP SAML 2.0
1.1 Introduktion
Detta dokument beskriver CGI:s implementation av SAML i sin Identity Provider (IdP) för en normal standardanslutning. För specifikationer och generell information om SAML hänvisas till OASIS på http://www.oasis-open.org/specs/index.php#saml.
Vänligen kontakta CGI på funktionstjanster@cgi.com om ni vill göra en anslutning som inte följer den standardanslutning som beskrivs i detta dokument.
1.2 Översikt
CGI:s IdP-tjänst baseras på en SAML 2.0 standard med vissa givna profiler. Kunder som litar på vår IdP kallas för Service Provider (SP) och måste kunna hantera de protokoll och profiler som IdP-tjänsten hanterar.
1.3 SAML 2.0 Profiles
SAML specificerar ett antal profiler som beskriver olika användningsfall. CGI stödjer två profiler: ”Web browser SSO”- och ”Single Logout SLO”-profilerna.
1.4 SAML 2.0 Bindings
I SAML 2.0 finns ett antal så kallade ”bindings”, olika sätt som meddelanden mellan SP och IdP utbyts på. Vi använder normalt två av dessa sätt i en standardanslutning.
I SSO-profilen används ”HTTP Redirect (GET) ” för SP och på IdP används ”HTTP POST”.
I SLO-profilen används bindningen ”HTTP POST” både i SLO Request och Response.
1.5 SSO – Single Sign-On
Vid vanlig SP-initierad inloggning:
- Klienten hämtar en sida som kräver autentisering.
- SP kontrollerar om klienten har en inloggad session. Om ej, genereras ett SAML ”authentication request”-meddelande och klienten riktas om till IdP med meddelandet.
- Klienten skickar ”authentication request”-meddelandet med GET-metoden till IdP.
- Om klienten inte redan är inloggad mot IdP tillkommer steg för eventuellt val av autentiseringmetod samt autentisering.
- Efter autentiseringen skickas en webbsida tillbaka till klienten. Webbsidan innehåller responsen samt kod för att klienten skall posta den till SP.
- Responsen postas till SP.
- SP kontrollerar att responsen stämmer. Om den stämmer loggas användaren in och den önskade sidan returneras.
1.6 IdP-initierad inloggning (Unsolicited Response)
1.6 SLO – Single Logout
Observera att en SP som skickar SLO till IdP:n samtidigt stoppar all fortsatt federering för användaren. En SP måste vara medveten om vad avsikten vid en utloggning är. En utloggning av användaren i SP:s egna system är en sak, men att även sända en SLO kan orsaka problem om användaren har för avsikt att från en federering arbeta vidare hos annan SP.
2 Metadata
Metadata-filerna beskriver IdP-funktionen mer formellt och innehåller även certifikatet som används för att signera assertions i både test och i produktion.
Vi rekommenderar att ni i ert SP-system antingen har en tydlig rutin för att manuellt uppdatera med ny metadata från IdP:n eller att ni bygger in en automatisk hämtning av ny metadatafil när ”validUntil” har gått ut. Ibland måste metadatat ändras, exempelvis när certifikatet på IdP:n går ut och måste bytas. Om någon viktig förändring kommer ske i metadatafilen går CGI ut med information till alla kunder i förväg.
Ta alltid ut metadata direkt från IdP test eller IdP produktion för att vara säker på att få senaste version. Detta görs enklast genom att ange nedanstående länkar eller hämtar hem metadatafilen (xml).
2.1 Metadata för testmiljö*
IdP | länk |
---|---|
Privata e-legitimationer (alla tillgängliga hos CGI) | https://m00-mg-local.testidp.funktionstjanster.se/samlv2/idp/metadata/0/30 |
Privata Tjänstelegitimationer | https://m00-mg-local.testidp.funktionstjanster.se/samlv2/idp/metadata/1/31 |
*Det finns dedikerade IDP:er för varje e-legitimation. Kontakta oss för mer information. |
2.2 Metadata produktion*
IdP | länk |
---|---|
Privata e-legitimationer (alla tillgängliga hos CGI) | https://m00-mg-local.idp.funktionstjanster.se/samlv2/idp/metadata/0/30 |
Företag e-tjänstelegitimationer | https://m00-mg-local.idp.funktionstjanster.se/samlv2/idp/metadata/1/31 |
*Det finns dedikerade IDP:er för varje e-legitimation. Kontakta oss för mer information. |
3 SAML-attribut
Som standard används nedanstående attribut-profiler, om annan önskas meddela CGI vid beställning.
3.1 e-legitimationer för privatpersoner
CGI har tagit hänsyn till den information som finns i privata e-legitimationer med statlig legitimitet i Sverige samt även arbetet inom EU kring federeringslösningar. Nya SAML-attribut kan komma att tillkomma.
Alla attribut i SAML-biljetten kommer direkt från certifikatet, och i vissa fall är det delar av datat i certifikatet som är utmappat. Attribut från externa datakällor kan framöver också komma att läggas in som tilläggstjänst.
Beroende på e-legitimationsutfärdare kan attribut skilja. Attribut som inte kan mappas mot certifikatinformation plockas bort i svaret.
(Värdet OSIF: motsvarar samma parameter enligt OSIF 2.1 standarden.)
saml:Attribute Name | Beskrivning |
---|---|
Subject_SerialNumber | Svenskt personnummer med 12 siffror. OSIF: Subject.SerialNumber |
Subject_GivenName | Förnamn. Ett eller flera, beror på olika CA. OSIF: Subject.GivenName |
Subject_Surname | Efternamn. OSIF: Subject.Surname |
Subject_CommonName | För- och efternamn. OSIF: Subject.commonName (if included) |
Subject_CountryName | Landskod, SE=Sverige OSIF: Subject.CountryName |
Gender | F (female)/M (male) Använd näst sista siffran i personnumret: Jämn siffra F, udda siffra M. |
dateOfBirth | YYYYMMDD (ISO 8601). 8 första siffrorna i Subject_SerialNumber |
age | Ålder i år. Räknas fram från 8 första siffrorna i Subject_SerialNumber |
Issuer_CommonName | Namn på CA . OSIF: Issuer.CommonName |
Issuer_OrganizationName | Organisationsnamn på CA (Utgivaren av e-legitimationen). OSIF: Issuer.OrganizationName |
SecurityLevelDescription | Inloggningsmetodens läsbara namn. Text beskrivning av autentiseringsmetod. OSIF: securitylevel.description |
SecurityLevel | 3 för e-legitimation på fil och 4 för e-legitimation på kort. OSIF: security.level |
sn_id | Personnummer med 10 siffror istället för 12 (position 3-12 i OSIF:Subject.SerialNumber). |
CertificateSerialNumber | e-legitimationen/klientcertifikatets unika serienummer. Kan användas främst i forensic syfte. OSIF: SerialNumber Förväxla ej med personnummer i Subject_SerialNumber |
ValidationType | Om revokeringskontroll skett med OCSP eller CRL. OSIF:validation.type |
ValidationResponse | Signerat ”kvitto” från CA om spärrkontroll skett med OCSP, eller information om vilken CRL som använts. OSIF:validation.response |
LoginMethod | Beskrivet den tekniska inloggningsmetoden. Kan vara bra om en efterföljande signatur skall ske: ccp8 – Telia ”challenge” inloggning NetiD ccp10 – BankID på samma enhet (GRP) ccp11 – BankID på annan enhet (GRP) |
urn:oid:1.2.752.29.4.13 | Svenskt personnummer med 12 siffror. OSIF: Subject.SerialNumber |
urn:oid:2.5.4.42 | Förnamn. Ett eller flera, beror på olika CA. OSIF: Subject.GivenName |
urn:oid:2.5.4.4 | Efternamn. OSIF: Subject.Surname |
urn:oid:2.16.840.1.113730.3.1.241 | För- och efternamn. OSIF: Subject.commonName (if included) |
urn:oid:1.3.6.1.5.5.7.9.1 | YYYYMMDD (ISO 8601). 8 första siffrorna i Subject_SerialNumber |
urn:oid:1.2.752.201.3.2 | Referensid, används för att identifiera en transaktion istället för personnummer/ipadress. |
norEduPersonNIN | Svenskt personnummer med 12 siffror. |
authServerSignatureType | Format AuthServerSignatur förväntas vara. Exempelvis xmldsig/jws |
authServerSignature | Signerat svar från utgivaren. |
3.2 Tekniskt ramverk
Om anslutning sker till IdP som följer DIGGs tekniska ramverk kommer attributen i svaret att följa attributprofilen som anges i ramverket. Följande attribut kan förekomma i svaret.
saml:Attribute Friendly Name | saml:Attribute name | Beskrivning |
---|---|---|
sn | urn:oid:2.5.4.4 | Surname |
givenName | urn:oid:2.5.4.42 | Given Name |
displayName | urn:oid:2.16.840.1.113730.3.1.241 | Display Name |
gender | urn:oid:1.3.6.1.5.5.7.9.3 | Gender |
personalIdentity-Number | urn:oid:1.2.752.29.4.13 | National civic registration number/code |
dateOfBirth | urn:oid:1.3.6.1.5.5.7.9.1 | Date of birth |
birthName | urn:oid:1.2.752.201.3.8 | Name at the time of birth |
street | urn:oid:2.5.4.9 | Street address |
postOfficeBox | urn:oid:2.5.4.18 | Post box |
postalCode | urn:oid:2.5.4.17 | Postal code |
l | urn:oid:2.5.4.7 | Locality |
c | urn:oid:2.5.4.6 | Country |
placeOfBirth | urn:oid:1.3.6.1.5.5.7.9.2 | Place of birth |
countryOfCitizenship | urn:oid:1.3.6.1.5.5.7.9.4 | Country of citizenship |
countryOfResidence | urn:oid:1.3.6.1.5.5.7.9.5 | Country of Residence |
telephoneNumber | urn:oid:2.5.4.20 | Telephone number |
mobile | urn:oid:0.9.2342.19200300.100.1.41 | Mobile number |
urn:oid:0.9.2342.19200300.100.1.3 | E-mail address | |
o | urn:oid:2.5.4.10 | Organization name |
ou | urn:oid:2.5.4.11 | Organizational unit name |
organizationIdentifier | urn:oid:2.5.4.97 | Organizational identifier code |
orgAffiliation | urn:oid:1.2.752.201.3.1 | <uid>@<orgnr> |
transactionIdentifier | urn:oid:1.2.752.201.3.2 | Transaction identifier |
authContextParams | urn:oid:1.2.752.201.3.3 | Authentication Context Parameters. |
userCertificate | urn:oid:1.2.752.201.3.10 | User certificate |
userSignature | urn:oid:1.2.752.201.3.11 | User signature |
authServerSignature | urn:oid:1.2.752.201.3.13 | Authentication server signature |
sad | urn:oid:1.2.752.201.3.12 | Signature activation data |
prid | urn:oid:1.2.752.201.3.4 | Provisional identifier |
pridPersistence | urn:oid:1.2.752.201.3.5 | Provisional identifier persistence indicator |
personalIdentity-NumberBinding | urn:oid:1.2.752.201.3.6 | National civic registration number/code binding URI |
eidasPersonIdentifier | urn:oid:1.2.752.201.3.7 | eIDAS uniqueness identifier for natural persons |
eidasNatural-PersonAddress | urn:oid:1.2.752.201.3.9 | eIDAS Natural Person Address |
3.3 e-tjänstelegitimationer
Vi har tagit hänsyn till den information som finns i de e-tjänstelegitimationer som idag har en spridning i Sverige, utgivna av Steria och SITHS.
eID-tjänsten har en IdP speciellt för e-tjänstelegitimationer, IdP företag.
saml:Attribute Name | Beskrivning |
---|---|
Subject_SerialNumber | Kan se lite olika ut för respektive CA, men innehåller bl.a. organisationsnummer. Hela strängen är dock unik för den användaren i den organisationen. OSIF: Subject.SerialNumber |
Subject_GivenName | Förnamn. Ett eller flera, beror på olika CA. OSIF: Subject.GivenName |
Subject_Surname | Efternamn OSIF: Subject.Surname |
Subject_CommonName | Kan se olika ut beroende på CA. Normalt namn, titel och firmanamn. Bygg ingen logik kring detta. OSIF: Subject.commonName (if included) |
Subject_OrganisationName | Juridiskt firmanamn. OSIF: Subject.OrganizationName |
Subject_LocalityName | Geografisk ort. OSIF: usercert.subject.localityName (if included) |
Subject_CountryName | Landskod, SE=Sverige. OSIF: Subject.CountryName |
Subject_EmployeeID | Ett unikt id för individen i den organisationen. Kan vara ett anställningsnummer. position 13- slut i OSIF: Subject.SerialNumber |
Subject_emailAdress | e-postaddress. OSIF:Subject.email (if included) |
Subject_Title | Titel. Kan vara både text på en satt titel, eller en titelkod enligt SSYK. OSIF: usercert.subject.title (if included) |
Issuer_CommonName | Namn på CA .. OSIF: Issuer.CommonName |
Issuer_OrganisationName | Organisationsnamn på CA (Utgivaren av e-legitimationen). OSIF: Issuer.OrganizationName |
SecurityLevelDescription | Inloggningsmetodens läsbara namn. Text beskrivning av autentiseringsmetod. OSIF: securitylevel.description |
SecurityLevel | 3 för e-legitimation på fil och 4 för e-legitimation på kort. OSIF: security.level |
CertificateSerialNumber | e-tjänstelegitimationens unika serienummer. Kan användas främst i forensic syfte. OSIF: SerialNumber |
Subject_OrganisationNumber | Organisationsnummer, 10-siffror. |
ValidationType | Om revokeringskontroll skett med OCSP eller CRL. OSIF:validation.type |
ValidationResponse | Signerat ”kvitto” från CA om spärrkontroll skett med OCSP, eller information om vilken CRL som använts. OSIF:validation.response |
4 Exempelmeddelanden IdP
Exempel på meddelanden från testmiljön: Authentication Request , Authentication Response, Logout Request och Logout Response. Observera att exemplen är uttagna vid en viss tidpunkt och att mindre uppdateringar kan ha skett.
4.1 Authentication Request
I produktion har CGI:s IdP kontroll på vilka SP som det är tillåtet att skicka svar till. Vi behöver alltså ha adressen AssertionConsumerServiceURL som skall användas. Vi kan godkänna alla URL:er under en adress, som: https://sp.exempel.com/*
Antingen kopplas AssertionConsumerServiceURL till en SP och ett unikt ServiceID i eID-tjänsten. Om flera olika ”kunder” i samma e-tjänst använder samma AssertionConsumerServiceURL måste även saml:Issuer även användas och detta måste då vara unikt för varje SP.
Men IdP test godkänner * som Issuer/EntityID och AssertionConsumerServiceURL, så för testmiljön kan ni ange vilken adress ni vill.
```xml
```
4.2 Authentication Response
Exempel på en lyckad inloggning med e-legitimation (test) med BankID
xml
<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" Destination="https://my.sp/service" ID="_03d09018d388a67710d2dfb9abc4a2de80" InResponseTo="_92530e1eb6c65269f4bf192684236e94" IssueInstant="2018-07-11T05:40:51.499Z" Version="2.0">
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
https://m00-mg-local.testidp.funktionstjanster.se/samlv2/idp/metadata/0/0
</saml2:Issuer>
<saml2p:Status>
<saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</saml2p:Status>
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xs="http://www.w3.org/2001/XMLSchema" ID="_0314187957f3e443b738f07bbb8cc4999d" IssueInstant="2018-07-11T05:40:51.499Z" Version="2.0">
<saml2:Issuer>
https://m00-mg-local.testidp.funktionstjanster.se/samlv2/idp/metadata/0/0
</saml2:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<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="#_0314187957f3e443b738f07bbb8cc4999d">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xs"/>
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>coH/v/cL2sUA0NrbtlRbPghnTYs=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
Q7fcIl/lbYK9+B+YRPup6cMGqqzk26mtJO6n9GUaeB5ZEqTabCuUSuifX1WVEpDCdHxI+AwkTM0b5QNdGBWDpTsUPDDmcpHlaK+RcfSPKDwfRt45MZ5Bd8cxYGO66bMNSLYWBGwHNcuz3dVDPnCX/Mk4rIS7ovMHnHftpebarVzOf6bdZ0u11ML9YPa7QOdVfjXIAlTkmofLdu1jaYy8mXZypyDYqfG07l8NtuPf+uaZqUtXLKpDijfqt8Q5hc0SLZif5gQIlCyMTNFI11Q7i7A5eMQZWggNVztlwqeLrsm4nPm1z6p3gprZN/wnoYhjgu/LX7lrph179joi2+ekEw==
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIIE1zCCA7+gAwIBAgISESFuhLPvw43EYoLwuCaHpSHsMA0GCSqGSIb3DQEBBQUAMC4xETAPBgNV BAoTCEFscGhhU1NMMRkwFwYDVQQDExBBbHBoYVNTTCBDQSAtIEcyMB4XDTEzMDYxMzA4MDgzNloX DTE4MDYxMzA4MDgzNlowTDEhMB8GA1UECxMYRG9tYWluIENvbnRyb2wgVmFsaWRhdGVkMScwJQYD VQQDFB4qLnRlc3RpZHAuZnVua3Rpb25zdGphbnN0ZXIuc2UwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQDfkLxHfEIFI6Sr+JW9cQkXRDG714aRIXCN0+NdrPi2BPAmK34gVAxiED1pavsD A7vQRmgd4RTrTCGFnL87wKZ9ZpBwkJd2j5VpT1Augn80hPPlSL097q3iCpxZSYekxpdoo120Dsdz oFdiwhsK8AUfKn/KGJFaYxYL05+iUgVY2FYrRRuy3IpYcmz7UUpmYV37tWeYbnwJ+O53uPDOCK5e nQ8vufakAPGFbOSvRCAuJ0doCQMFBjWbNZnAcpSLCL45YOxnNPLho70y22ID97mDCyRVy3vQd7dC 2gp391XfgRtTYHhHy1O1Qun8N5tEgRGlYeogQI+hzutT9/+72i2zAgMBAAGjggHPMIIByzAOBgNV HQ8BAf8EBAMCBaAwSQYDVR0gBEIwQDA+BgZngQwBAgEwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93 d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wRwYDVR0RBEAwPoIeKi50ZXN0aWRwLmZ1bmt0 aW9uc3RqYW5zdGVyLnNlghx0ZXN0aWRwLmZ1bmt0aW9uc3RqYW5zdGVyLnNlMAkGA1UdEwQCMAAw HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9j cmwyLmFscGhhc3NsLmNvbS9ncy9nc2FscGhhZzIuY3JsMH8GCCsGAQUFBwEBBHMwcTA8BggrBgEF BQcwAoYwaHR0cDovL3NlY3VyZTIuYWxwaGFzc2wuY29tL2NhY2VydC9nc2FscGhhZzIuY3J0MDEG CCsGAQUFBzABhiVodHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3NhbHBoYWcyMB0GA1UdDgQW BBQreTDWAazuWiWVhrSs73MOyLXnBDAfBgNVHSMEGDAWgBQU6hlV8A4NMsYfdDO3jmYaTBIxHjAN BgkqhkiG9w0BAQUFAAOCAQEAuETgY/eviBQ7JD+Dm3RZzmQNbGGlpUjkBexmSdmBoy/yV4ZzN830 aiqe0/wq9LKt/t/cglDZpjgGqJ3m+0TycoyrgI6DPBnBvPZTUWnjp/ZV/kBWQL1hNCc+LxoxAXbC OnUQN8ecSKNVxyCqGLRI4zw9It8tCPPHRL0P++HSaIM/UItGWWBBp1qGHAnSnGHwFceCQYLwMVVE vdsQ0aJFSniw9x/FymRVdpWJXV3vHuaXdcYj8z2NFSAOCfFWWjfIueKUXdQlVQbrQNMhxZixiiZy UYkwvRU6geuoOfDY0iz1nZRWhfnfhgorLOVK3FTsUHqiroYcTOxvC9PFYQgZiA==
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<saml2:Subject>
<saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">_037aac8d632fd7f13285e7a02659e7a350</saml2:NameID>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml2:SubjectConfirmationData Address="85.119.130.113" InResponseTo="_92530e1eb6c65269f4bf192684236e94" NotOnOrAfter="2018-07-11T06:27:28.499Z" Recipient="https://my.sp/service"/>
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions NotBefore="2018-07-11T05:35:51.499Z" NotOnOrAfter="2018-07-11T06:27:28.499Z">
<saml2:AudienceRestriction>
<saml2:Audience>https://my.sp</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement AuthnInstant="2018-07-11T05:40:51.499Z" SessionIndex="_03c4e0466dbad35018b45b01fa0a3b0fb4">
<saml2:SubjectLocality Address="85.119.130.113"/>
<saml2:AuthnContext>
<saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:SoftwarePKI</saml2:AuthnContextClassRef>
</saml2:AuthnContext>
</saml2:AuthnStatement>
<saml2:AttributeStatement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<saml2:Attribute Name="Subject_SerialNumber">
<saml2:AttributeValue xsi:type="xs:string">196001046710</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="Subject_GivenName">
<saml2:AttributeValue xsi:type="xs:string">Börje</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="Subject_Surname">
<saml2:AttributeValue xsi:type="xs:string">Åkeland</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="Subject_CommonName">
<saml2:AttributeValue xsi:type="xs:string">Börje Åkeland</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="Subject_CountryName">
<saml2:AttributeValue xsi:type="xs:string">SE</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="Gender">
<saml2:AttributeValue xsi:type="xs:string">M</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="dateOfBirth">
<saml2:AttributeValue xsi:type="xs:string">19600104</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="age">
<saml2:AttributeValue xsi:type="xs:string">58</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="Issuer_CommonName">
<saml2:AttributeValue xsi:type="xs:string">Testbank A Customer CA1 v1 for BankID Test</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="Issuer_OrganizationName">
<saml2:AttributeValue xsi:type="xs:string">Testbank A AB (publ)</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="SecurityLevelDescription">
<saml2:AttributeValue xsi:type="xs:string">SoftwarePKI</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="SecurityLevel">
<saml2:AttributeValue xsi:type="xs:string">3</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="ValidationOcspResponse">
<saml2:AttributeValue xsi:type="xs:string">
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
</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="sn_id">
<saml2:AttributeValue xsi:type="xs:string">6001046710</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="CertificateSerialNumber">
<saml2:AttributeValue xsi:type="xs:string">46faf4f3b1d8624b</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="Subject_OrganisationName">
<saml2:AttributeValue xsi:type="xs:string">Testbank A AB (publ)</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="LoginMethod">
<saml2:AttributeValue xsi:type="xs:string">ccp10</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="authServerSignatureType">
<saml2:AttributeValue xsi:type="xs:string">xmldsig</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="authServerSignature">
<saml2:AttributeValue xsi:type="xs:string">
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvQ2Fub25pY2FsaXphdGlvbk1ldGhvZD48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiI+PC9TaWduYXR1cmVNZXRob2Q+PFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LmJhbmtpZC5jb20vc2lnbmF0dXJlL3YxLjAuMC90eXBlcyIgVVJJPSIjYmlkU2lnbmVkRGF0YSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L1RyYW5zZm9ybT48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiI+PC9EaWdlc3RNZXRob2Q+PERpZ2VzdFZhbHVlPlp3OWNxd0VVWCt5UjRWcUkwQ20yZ1dXOUlZdUZEYTRQSTE0S0RvKzJaT1U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48UmVmZXJlbmNlIFVSST0iI2JpZEtleUluZm8iPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9UcmFuc2Zvcm0+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiPjwvRGlnZXN0TWV0aG9kPjxEaWdlc3RWYWx1ZT5hUldoZGcvVlVsdG40K3FGRjA2V0tLUW9JcS9iOHVTTUpxRjFLZk9EN29VPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5aRWZVQ0pTcC9FK3RoZVBBWWtZTDcwQ2xaRnFhckpkRHZYVnI5ZlNRYXZBYW9FczJpZlo5Q3NZMEF6MHl5Z2hrRW91UTVGSm9PZmwxWlVPdWsyUXVYWGFsTzd0cmkyM0U2M1o5dFR3dFBzNUdJUjFXZ2FuUkhzTDRhV28wYjg5eTZnMWxsM1pVaVdpQVoyTVNTSXpUaFJYTnpRSGZOSzhsUVBWWGxzeUwxNWcrZUc4eXhIOHJsQzhSbEh2YVh5UE5uNUxqdFJPbnRFT2VhYlZTWjJOUzJHT1hNRTNZYVA5QldrMkRHbjRPOVFLS09MY1BRQStwVVp1ZzE2OVJtSzRkR1JkUVNWaDUyMTVEaEcybE1vbmw0ZXJ6eTNrTjJMYXllaWt4UEdqSEl3dkV1c0UwSitDd3VmdWJ6b2dMNExwMFdvVVY3QnR3WWhMTXRLby9RRlVDZHc9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJiaWRLZXlJbmZvIj48WDUwOURhdGE+PFg1MDlDZXJ0aWZpY2F0ZT5NSUlGV2pDQ0EwS2dBd0lCQWdJSVJ2cjA4N0hZWWtzd0RRWUpLb1pJaHZjTkFRRUxCUUF3ZURFTE1Ba0dBMVVFQmhNQ1UwVXhIVEFiQmdOVkJBb01GRlJsYzNSaVlXNXJJRUVnUVVJZ0tIQjFZbXdwTVJVd0V3WURWUVFGRXd3eE1URXhNVEV4TVRFeE1URXhNekF4QmdOVkJBTU1LbFJsYzNSaVlXNXJJRUVnUTNWemRHOXRaWElnUTBFeElIWXhJR1p2Y2lCQ1lXNXJTVVFnVkdWemREQWVGdzB4T0RBMU16QXlNakF3TURCYUZ3MHlNREExTXpBeU1UVTVOVGxhTUlHN01Rc3dDUVlEVlFRR0V3SlRSVEVkTUJzR0ExVUVDZ3dVVkdWemRHSmhibXNnUVNCQlFpQW9jSFZpYkNreEVUQVBCZ05WQkFRTUNNT0ZhMlZzWVc1a01ROHdEUVlEVlFRcURBWkN3N1p5YW1VeEZUQVRCZ05WQkFVVERERTVOakF3TVRBME5qY3hNREU0TURZR0ExVUVLUXd2S0RFNE1EVXpNU0F4TWk0d01Da2dRc08yY21wbElNT0ZhMlZzWVc1a0lDMGdRbUZ1YTBsRUlIRERwU0JtYVd3eEdEQVdCZ05WQkFNTUQwTER0bkpxWlNERGhXdGxiR0Z1WkRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSlZuQ0o5bU43TGQwKzB4STdyVWovaGtPWTBnNUs2aU90Zi96WDk0TWw5Sy9qajVjQzM4eHc0UkVDNitLbXRiM1hjN0gxV0YyMVp4c0g1SCtDS0R0YkRBcFVSaHVOcTVQSlZNd3MyWHNEYmxhSG9nOGE3eDVwSTVCQXB1eHhNR2N4VXIxM0x1UTladFN1SFNrT05ETXhlMHhQQTZ3TGZPL05Db3MvamJCbzdxRCtaeENsTDNTa3YraUVDUGZjYU9jNVdvSWJlcCthUks5eC83RGtKVkVHYmJGWlVIc1psY1RvVGl6amgxZm04UmR6SkpsY3MxWTNJZmIwbUpmTnFkMjlNdzJaRU9CTmdkQ3Y1TkphNEJYdDdraXJXenBvUFJsdEh0TUpQWDROMDVCUGNBaldySlY2Q2RKY2ltYzhDSWIrNlg5bnBCMVZNaHNFY3BDQk1CUDRzQ0F3RUFBYU9Cb3pDQm9EQTdCZ2dyQmdFRkJRY0JBUVF2TUMwd0t3WUlLd1lCQlFVSE1BR0dIMmgwZEhBNkx5OTBaWE4wTG5KbGRtOWpZWFJwYjI1emRHRjBkWE11YzJVd0VRWURWUjBnQkFvd0NEQUdCZ1FxQXdRRk1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBZkJnTlZIU01FR0RBV2dCUmdlbjJuV1lPTW42U3hGK29OUTBPVlErYVovVEFkQmdOVkhRNEVGZ1FVVmc3WklnZFlEUjA0ZXJkd0l6a3pOeW0vb2xrd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFHQ01haWxVdjJWYkhTRzJqcjh1VzBUZjNjcXdjSi9mRVZjZzBoYWhUVW1SQjJWNHZvalgzSUVsSVBZWkQ4ejY3ODZFUUc4NEZQTVVOSHVjK2RxeVRvQ25TREJJS1pEdy9zU29zL0VNWUZrZlhVS2pmMHJBcTlSdVRybllLSGFLK2lxTVBOU1czWDdjRER0MythMEMvREtSbUQ2ZWhFYjFGeXBkL1B2WjliSVlLaHNaWjBCUlRqNlJvRXN5aXVJNGZXM09uN1czS0IwTitZSFZ2RVIxVEVxaGp6ZGpmYjM5QkxXcERGaHkzVnVpTFBuSndPWDFsbDZ6dEVscUpPdWxyVnRqUVVRajZrK2pieWova3pMMjlkMHBkTFBycUhZNlNxcGUrK0ZaTUNhL3J4a0NuVlhoUVpaZUlJWm01UkllQWRCSHB2MlVEb0FJeXpuZEE3SkdpN2FTRVkxQ2phc3pycFdTWmdCcytWdVpmdkZ1L0lMNHJHeW5WaXZxQUNYdlFVSnhjTDBxWXdSYlVzT3FDZmxwSFVkTE5KN3FCdjYzNzhmWTBQdmlZOC85VDE3Zjhxc0dLbHJYZ28rWG1abWQwSE8vaHFCeWtZMUwyUmFvYWlCTEdPNHZDQmZRZ1VzRzVidnQ5TklpRkVYNHZMV1ZaOGVmbVNLNzBDbFdnMFVKZFhzandIS2RCZ3YwWlBLczZsaU5LY0dkY2orZW9nTzVOVitRQm04QmFuNmtSREZ4SWJQY01TSlpzWEdEU0Q3Qi9BckJpemFWQ3pLbGRSOUFFaStLYTlDQmo5SjhHTHB3cXJ6QkpJRGMyOWswR0lpS0VQTnp5VDVkdGRHRmtubHVNYkdQMDlRTWlXZFBvZUNNMnVidzh6UUpYZ0svUG9POTlGaWRQOEcySVQ2ejwvWDUwOUNlcnRpZmljYXRlPjxYNTA5Q2VydGlmaWNhdGU+TUlJRjNqQ0NBOGFnQXdJQkFnSUlGblpWeWVobVhZd3dEUVlKS29aSWh2Y05BUUVOQlFBd2JqRUxNQWtHQTFVRUJoTUNVMFV4SFRBYkJnTlZCQW9NRkZSbGMzUmlZVzVySUVFZ1FVSWdLSEIxWW13cE1SVXdFd1lEVlFRRkV3d3hNVEV4TVRFeE1URXhNVEV4S1RBbkJnTlZCQU1NSUZSbGMzUmlZVzVySUVFZ1EwRWdkakVnWm05eUlFSmhibXRKUkNCVVpYTjBNQjRYRFRFeE1Ea3lNakUwTWpFeE5Gb1hEVE0wTVRJd01URTBNakV4TkZvd2VERUxNQWtHQTFVRUJoTUNVMFV4SFRBYkJnTlZCQW9NRkZSbGMzUmlZVzVySUVFZ1FVSWdLSEIxWW13cE1SVXdFd1lEVlFRRkV3d3hNVEV4TVRFeE1URXhNVEV4TXpBeEJnTlZCQU1NS2xSbGMzUmlZVzVySUVFZ1EzVnpkRzl0WlhJZ1EwRXhJSFl4SUdadmNpQkNZVzVyU1VRZ1ZHVnpkRENDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFJVzBEUG9wTEVodGF3VlJ3TnJFNDMxR1ZzaC9IbldWc1hkZ09qelVzRDdRRDMwL3RmT0hST1FpOW5MdURXa1kxZkVVeFowNllxNUx0Uk9vRnBrVFE2U1JpMlJnaVVrdUNOcU1Fd3NqMmVpYTdLaFlSSWsvWEpra0ZwMUJ2RTYySTYzdnRVelp6UzY5SEFzTU5QbGZkTFUycElaMkFuZDJRSjJkQzB4aW1tRmpZNWs1L3o3L05rM0pHQmJheExIL1g2emhjTnFPcHIyU3J2OUcrbGsrR3Z5N2hRTEltTkxSVis0RzNtYWxIajZRTSt3RGNSS3ZUNFYraVJkdnpQOW84MDMvZytHTDVxaXVmVzZSZFQrMmx3R2lmUDJkM3N1TDc5dUdXMUhPOHFiaWkvaTRIVHhEZnRLZFhGc2xGclhmUisrUVVVNEIrdjZReWI0ckYzcWhEZmVha2dmTDh1emZ0TXRUTVJsb3d4SWIwOGp4Q2VoQ1NhWTBDTUJIUVRTMEx0WDFDL1ZqTTZVYmJwU2EyODB6U0wreFhsUzdTNzI3c0pCNzIyZnpXUjMvTlNwM01aVGJFMFFBcU1URU5ZNHBmd2MvbFh3Vm44VHZBTncxRkl4RTdpa3dJQk1GU282ZVgyVUREejlhaTZkelJyWWZ0STQ0RXRMVHYzS1Y1VURXY0lic1JCdmxnQlFxcXVwaGN1UlZ2MWE2WG85eGVIMitvK0Jzcitzb3VtaUM2eklGdVV1QnhCNHVxc1NxZVZRRmtJYWVwaW53aFg1Q0pCWkxjT1JhTVpGNkkxa0d2RURaT1ZZWE9FdDlQV2cvU3NTY0dNK3NmMjUxMEd6MGYyb21Rak9MNUJlemRZWUtOQXd6aXo5VTFJcjFWcHZ6a0pGNFNBM1cwNWNtampLWkFnTUJBQUdqZGpCME1CMEdBMVVkRGdRV0JCUmdlbjJuV1lPTW42U3hGK29OUTBPVlErYVovVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjhHQTFVZEl3UVlNQmFBRktQeWVIa2RLMFdLeWVIS2xRbmxubS9PeTA3Rk1CRUdBMVVkSUFRS01BZ3dCZ1lFS2dNRUJUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0RRWUpLb1pJaHZjTkFRRU5CUUFEZ2dJQkFEeGh5eldTem9reUcraFVDcDNVZzdRWnhiTUxLKzZJWXArOGFjUnVUU0ZmcjVtYUgzTXJ5ZDg3L0IyeTlLM2ZXK0ZYUUxwZGhWSG92S0pPQVF5di90M0NBNjJaR3J6aEFYR3FDY1I5U240NGVjS1JKUEU5WkpiemFsbzR3dEtSVXYwNFcyWmdGdW5ZVE41NVRzTm4zYkd6Y0lpQWRkTXE5VE1Ld0lqbDZwNWk2b0lqQW10OS83NVFmN3FRLzF4MjBFVWRzdis4UVBJcDF2bEI4dkF6QXRvKzhiWkZDUnNkTVZMUlJrOTZDb1M1M3Y0YURZWUFNeG1zVGJndkxxVlU1L0NOZlZFZ1ZlU3BGVlN6NmZsYkZNQlpkNUxPUGdsaS9sUko3Rldld1F2clphS2dmSmdkbVVVdkNwaTBlRCsvS0Juc0VKTGJoZG5LL0IraVRvNEE2QndvUis5WGhPUXlOTVRCL1NEdFNZY3pKMzV2RmhaZktKNS8wcHNxWFNKSC8yNXdBNHBlLzM0RVJ6UTFtZ2xhZHQ2Sk9obldmOTJKdzVqZHc3QkZwdGc3bG1Ja0R5WURVKzZSeUVzQXJDaWJJKzI4eUY1L2ZDWkN1VWR3RHc5aUhwb29kZjFoOHQxZ2ZQbm5ta2N3R1RmUGcvZHVVZ2tGd0tZOTdTemZaZ1IwMmhkN3h4bzVwSzc5Y3ppbU1GMkdURnc5U1dTbmxaSzcxZm9ZMjVGelNVSE5tdUdIaEZ6Rzk4QUZJdDBWTHdpVGo4dEplU2pUaTQxaWYyMzd2RE52c2VwdCs4L3R0ODAvZjQ1S3pQTmZXVUIwNi9GR3Iwd2ZvWWdacDRQaTlSUlRYekRhZndqN3FMZHVhZXBSckxjRVVwWFdDR3J1U1V5bHh4Q2hkQlR3VnpabjwvWDUwOUNlcnRpZmljYXRlPjxYNTA5Q2VydGlmaWNhdGU+TUlJRjB6Q0NBN3VnQXdJQkFnSUlVWW1mZHRxdHk4MHdEUVlKS29aSWh2Y05BUUVOQlFBd2JURWtNQ0lHQTFVRUNnd2JSbWx1WVc1emFXVnNiQ0JKUkMxVVpXdHVhV3NnUWtsRUlFRkNNUjh3SFFZRFZRUUxEQlpDWVc1clNVUWdUV1Z0WW1WeUlFSmhibXR6SUVOQk1TUXdJZ1lEVlFRRERCdFVaWE4wSUVKaGJtdEpSQ0JTYjI5MElFTkJJSFl4SUZSbGMzUXdIaGNOTVRFd09USXlNVFF4TlRBeldoY05NelF4TWpNeE1UUXdNVE16V2pCdU1Rc3dDUVlEVlFRR0V3SlRSVEVkTUJzR0ExVUVDZ3dVVkdWemRHSmhibXNnUVNCQlFpQW9jSFZpYkNreEZUQVRCZ05WQkFVVERERXhNVEV4TVRFeE1URXhNVEVwTUNjR0ExVUVBd3dnVkdWemRHSmhibXNnUVNCRFFTQjJNU0JtYjNJZ1FtRnVhMGxFSUZSbGMzUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDVHFVN3V4azVRemJYUzZBclhJR1RXTmVaWHo2NWJ6ZGdveGI3OUx2WWgvcDdrY0syNW1BMnR6R3BPM1FTMWVLSkp1ODRHOVVOem00bU1sNmNuZ25YY2p4RVRZaUVxdGlqckE1bWZ6ODY1L1g2VWdPcFg3RGtvdVE4ZDVlRHloSjQ5VXJEcWxyZ29WTXgzMjJrTTBTWjRoZVZlWDgzZTFJU0ZpeXhxWkJLeGgyNXlLWUVaQTRFeklyRGoydGk4Q1JyV1BIQ1RXYUlGcGNkNVR5TWhwVVRQbjREendQaFBHV01STnhnT0FlUDRCU0RCN1I2YXo0cm94N1RQa2Qyc1dHMU9Eai8wSVJQaEpTMWRRMUI3UWlOSFk1OFJqbk5UaEVRS3dkV1dNUE1LUHRoU2QrR0VqTDlHRGFmWXhPc0lyS0ZZd2xZTkJXM0M1bWJlM1QrM2orQXhqNlcySGJnbUpYUEdJdEx1Y3hZMWtQd1Q5TDd1NW5JeGFST21oMXVUd1lxcjlwdUdxNnNvSm5nZ0VTM0s0UEloTTZrYW12bkNDUFhvcVdDQ3J1U0VQVmd5RVpFaTBzaHkrODFRc2ViMWdjOXJZZ1ZyRW5MQk9JeU1xYVR0RXhhRnByWWJ2MWYvQXdXdGpGVWkyWGlTZE44YU1wK2txYmkrMXRLSlVVUExDK0NyZHU5ZkZvLzhsc2xTZGV3K1NuUFZGZVZ6NUNPS2J0NkdURTR4Y0plUnpXNXdRMHc3YityR0xXaEp2d1JKc1M1R1h2cWEzTGc4RXlXaUxKc3d1VEZhRXdQVUR2WkJ2eUZaRVplcnRLZ1piUll2ZXpvOS9ncnd5Qittb3JWckxyeXU5Y2hZRVl3RTU1MHV6eUt0elhVenlnVjhGcFhlOURwbXBPU2ZHTUFVUlFJREFRQUJvM1l3ZERBZEJnTlZIUTRFRmdRVW8vSjRlUjByUllySjRjcVZDZVdlYjg3TFRzVXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWZCZ05WSFNNRUdEQVdnQlJLOTZOcUNOb0lPQmNaVXlqSTJxYldOTmhhdWpBUkJnTlZIU0FFQ2pBSU1BWUdCQ29EQkFVd0RnWURWUjBQQVFIL0JBUURBZ0VHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElDQVFEUDFEb3hqRWpleUcyN3hlYWkrbXB4eEpvcUIxUkRWVEVZODZSZE55bHVVS1FPSWJmS0pNbVgrRFg0dlR1VVFTMzUzOXh6SEt3cGo2Z2sraVpWakYxVW9KdEdwK3F1cmpqYXJPaDQ0cysrczB5V0tpS3JKQkVsb0puOG8rWVhGVDhDN2UxV3RxSlZvYUZkREJDdm9oSnlLMjBQS1M3L25VRzViN0o2aXEzNTE3WXZqYjREOTRMdDBkSE5TZ0QyQklJSG1Oa3BTWVdneWkxc2VhdmhONUFqdGZKcjRwMTAxdTJTc05jTEFyNDJBNWZyYW45dkwyOUhqYU0yTVRVOEwwT3hvSVg4bGdjcFV5OXdjaTdsSFFLT2l3YU9jSUtmQ0MxcU03bE81ejBjNFArbzB6VDYxODN4SlYzcm13MjJHR1lkNDBFQnFXOTdvcUJLMElqK0tsNXN1eWNaNEoycUsxYVZjaVlCWnNCTmxidG16L2s4SHVCeHk5V2JFZVBzWS82MUk1MGZCTFNBa1ZrL1RlYTRqK05OSEoxaW1wN0JvMThhTG84cGxiOWUyaVplSUR6SDF1NjZvMFJGWWJIZG5KRDhDblBlQkxWZ1N2RXFtQlMxMWZnSHI4MS90azVsSnhjS2VqZHNFZnR6R1F4d3VIdy9wamtqb2JJa3hycm9YcGE2aVhva1Z5SDRiZTE2K2YvZERhRWtoOVJmOExoMVVFUVB4eHBDeUlTTWlmSDVwTDc4REtoR25oOFZmaTdFZXNVVjFrNlkzZVZDRncyQ0NLV2N2WHNKYjlRcUxGc0RxSWxXUGg2YkJnTTRhWGZwZTBhckRyZ1lSYmJ4OEw2b3VoeXhBSHdqdHo5aTBsWGV6V01YNWY3UVlSRU1UQzV5QlBOVFRQMmZDTnNvelE9PTwvWDUwOUNlcnRpZmljYXRlPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3Q+PGJhbmtJZFNpZ25lZERhdGEgeG1sbnM9Imh0dHA6Ly93d3cuYmFua2lkLmNvbS9zaWduYXR1cmUvdjEuMC4wL3R5cGVzIiBJZD0iYmlkU2lnbmVkRGF0YSI+PHNydkluZm8+PG5hbWU+WTI0OVFtRnVhMGxFSUZKUUlHSjFjM1JsYzNRZ1kyVnlkREV3TEc1aGJXVTlSblZ1YTNScGIyNXpkR3JEcEc1emRHVnlJRlJsYzNRc2MyVnlhV0ZzVG5WdFltVnlQVFUxTmpZek1EUTVNamdzYnoxQ1lXNXJTVVFnVkdWemRDeGpQVk5GPC9uYW1lPjxub25jZT40alZJMzJtNDM1dTNIZVJIcmFTV2d6Tjk3dEk9PC9ub25jZT48ZGlzcGxheU5hbWU+Um5WdWEzUnBiMjV6ZEdyRHBHNXpkR1Z5SUZSbGMzUT08L2Rpc3BsYXlOYW1lPjwvc3J2SW5mbz48Y2xpZW50SW5mbz48ZnVuY0lkPklkZW50aWZpY2F0aW9uPC9mdW5jSWQ+PHZlcnNpb24+VUdWeWMyOXVZV3c5Tnk0MExqQXVNalltUW1GdWEwbEVYMlY0WlQwM0xqUXVNQzR5TmlaQ1NWTlFQVGN1TkM0d0xqSTJKbkJzWVhSbWIzSnRQWGRwYmpZMEptOXpYM1psY25OcGIyNDlkMmx1TnlaMWFHazlaM2N6TUdoMlFtZzRRMkV2VlRWNFVrTXdOMW94YURSdU1UUjZaQ1pzWldkaFkzbDFhR2s5WjNKUmQyRnBOalpDUlN0bFQzTjJRamRxU0VoRVkwczRUbVpTZENaaVpYTjBYMkpsWm05eVpUMHhOVE16TURjNU1ESTRKbE50WVhKMFEyRnlaRjlTWldGa1pYSTlRbkp2WVdSamIyMGdRMjl5Y0NCRGIyNTBZV04wWldRZ1UyMWhjblJEWVhKa0lEQW08L3ZlcnNpb24+PGVudj48YWk+PHR5cGU+VjBsT1JFOVhVdz09PC90eXBlPjxkZXZpY2VJbmZvPmQybHVOdz09PC9kZXZpY2VJbmZvPjx1aGk+Z3czMGh2Qmg4Q2EvVTV4UkMwN1oxaDRuMTR6ZDwvdWhpPjxmc2liPjE8L2ZzaWI+PHV0Yj5jczE8L3V0Yj48cmVxdWlyZW1lbnQ+PGNvbmRpdGlvbj48dHlwZT5DZXJ0aWZpY2F0ZVBvbGljaWVzPC90eXBlPjx2YWx1ZT4xLjIuMy40LjU8L3ZhbHVlPjwvY29uZGl0aW9uPjwvcmVxdWlyZW1lbnQ+PHVhdXRoPnB3PC91YXV0aD48L2FpPjwvZW52PjwvY2xpZW50SW5mbz48L2JhbmtJZFNpZ25lZERhdGE+PC9PYmplY3Q+PC9TaWduYXR1cmU+
</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
</saml2p:Response>
4.3 Logout Request
Observera att Logout Request inte per automatik fungerar hela vägen ut i IdP test. IdP:n vet inte var SLO-responsen skall skickas, men användaren blir ändå utloggad ur IdP:n. Skall hela SLO-flödet testas i IdP test måste test-SP konfigureras in speciellt i IdP test vilket normalt inte görs/ingår. I produktion konfigureras SLO normalt för varje SP.
```xml
```
4.4 Logout Response
Exempel på Logout Response.
```xml
4.5 Authentication Response – Login Fail + Avbryt/Cancel
Om användaren misslyckas med inloggningen med sin e-legitimation hos IdP visar IdP:n direkt upp felmeddelanden till användaren.
OBS om ni önskar få tillbaka responsen så meddela CGI i samband med beställning.
```xml
StatusMessage innehåller ett ReferensID följt av något av följande fel.
ALREADY_IN_PROGRESS
CANCELLED
CERTIFICATE_ERR
EXPIRED_TRANSACTION
INVALID_PARAMETERS
START_FAILED
USER_CANCEL
UNKNOWN
4.5.1 DIGG tekniskt ramverk
Ifall det finns behov av att få cancel enligt DIGG tekniska ramverk så är det möjligt, dock kräver det att kör mot specifik IDP som har den inställningen.
```xml
```
5 Anslutning
När en SP ska ansluta sig till IdP produktion behöver en del uppgifter utbytas. Dessa uppgifter skall fyllas i Teknisk Bilaga del2 eller annat lämpligt sätt och skickas till funktionstjanster@cgi.com.
5.1 Certifikat för att verifiera XML-DSig
SP måste verifiera att signaturen på IdP:ns svar är korrekt (XML-C14N). För detta behövs CGI:s publika nyckel för IdP-tjänsten. Certifikatet återfinns i metadatat.
6 Tydlighet att inloggning sker på annan domän
Vi rekommenderar att varje SP på sina sidor förklarar att tjänsten säker inloggning sker från CGI och att URL på inloggningssidan kommer vara på funktionstjanster.se
Detta för att vara tydlig till användaren och undvika att användaren blir osäker.
7 Eget domännamn
Det är möjligt att använda eget domännamn på federationen om så önskas. Då ser era användare t.ex. m0x-mg-local.idp.myndighet.se istället för m0x-mg-local.idp.funktionstjanster.se i adressfältet. Kunden behöver delegera en subdomän till funktionstjänsters DNS för att detta ska fungera.
9 Exempel på SP programvaror
SAML 2.0 har ett mycket brett leverantörsstöd. Det finns för alla olika plattformar och miljöer.
9.1 Licensierade produkter – svenska leverantörer
MobilityGuard – Testat av kund + leverantören
Nordic Edge – Testat av leverantören
PortWise – Testat av leverantören
Abou - Testat av leverantören
9.2 Licensierade produkter – internationella leverantörer
IBM Tivoli Federated Identity Manager TFIM
Oracle Federation Manager
Ping Identity
RSA Federated Identity Manager
Siteminder Federated Security Manager
Microsoft ADFS
SAP
9.3 Open Source
OpenSAML – Java, bibliotek för den som utvecklar själv
OpenSSO (Numera OpenAM under ForgeRock)
Shibboleth
OIOSAML.NET
SimpelSamlPHP
sustainsys.saml2
10 Övriga funktioner
10.1 Språkstöd
Det finns möjlighet att införa kundanpassade sidor på IdP:n med språkstöd. Vilket språk som skall visas styrs av vad som anges i requesten. Alla texter som sen skall visas behöver in i en språkfil alternativ hanteras via CSS med fördel för kundanpassade sidor. Detta är lite arbete att sätta upp, men skall man ha många olika språk är det bäst att göra rätt från början. Fördelen är att alla feltexter då också kommer på rätt språk. För att välja språk i anropet kan "?lang=en" eller "?lang=sv" läggas till på AssertionConsumerServiceUrl i AuthnRequest-anropet.
Det är även möjligt att använda sig av en ”flagga” på sidan som byter språket via länk.
```html /mg-local/setlanguage?lang=en
/mg-local/setlanguage?lang=sv ```
10.2 Begär en autentiseringsmetod eller LOA-klass
10.2.1 Begär LOA-klass med AuthnContextClassRef
För att begära en specifik LOA-klass skicka med klassens uri i AuthnContextClassRef. För definition av LOA-klasser se DIGGs tekniska ramverk
LOA-klasser kan endast nyttjas via IdP som stödjer tekniskt ramverk, se metadata ovan.
För mer information kontakta funktionstjanster@cgi.com
10.2.2 Begär autentiseringsmetod med local.methodid
Använd i första hand en IdP som enbart har en autentiseringsmetod.
En SP kan i requesten till IdP:n direkt ange vilken autentiseringsmetod som skall användas. Alternativt anropa en IDP som bara har en inloggningsmetod. Nedan beskrivs hur man skickar med metod i AuthnRequest-anropet. Om man listar inloggningsmetoderna i den egna Discovery-tjänsten minimeras det GUI som IdP:n visar till användaren.
I requesten så kan vi ta mot och tolka strängen local.methodid
IdP test har följande möjliga inloggningsmetoder:
- BankID(på den här enheten) local.methodid.ccp10
- Mobilt BankID (på annan enhet) local.methodid.ccp11
- Telia (inloggning med Net iD) local.methodid.ccp8
- övriga Steria, SignGuard (dubbelriktad ssl): local.methodid.ccp2
Exempel: Inloggning med BankID i test.
```xml
<saml2:AuthnContextClassRef xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">urn:local.methodid.ccp10</saml2:AuthnContextClassRef>
```
IdP produktion har följande möjliga inloggningsmetoder:
-
BankID(på den här enheten): local.methodid.ccp10
-
Mobilt BankID(på annan enhet): local.methodid.ccp11
-
Telia e-legitimation: local.methodid.ccp8
-
Övriga Steria, SignGuard: local.methodid.ccp1
10.4 Skicka med personnummer till inloggningsmetoden
Det är även möjligt att skicka med personnummer om man har valt att använda sig av BankID på annan enhet.
```xml
```
10.5 Information kring respektive certifikatsutgivare
10.5.1 Telia
Vid inloggning med Telia så försöker den först verifiera att det finns en NetID installation, om den ej finner någon installation av NetID så kommer den försöka med dubbelsidig SSL. Dock måste användaren manuellt som det ser ut idag göra denna bekräftelse.
10.5.2 BankID
BankID hanteras som BankID på samma enhet och BankID på annan enhet.
10.5.2.1 BankID på samma enhet
Denna metod använder sig av BankID funktionen autostart.
10.5.2.2 BankID på annan enhet
Denna metod kräver att personnumer matas in. Detta kan ske på SP sidan om så önskas. Personnummer måste även skickas med vid signering om inloggning skett med BankID på annan enhet.
10.5.3 Mobilt BankID, BankID på kort, BankID på fil
Idag accepteras alla typer av BankID, det är dock möjligt att separera dessa om så önskas. Då blir det fler alternativ för användaren som visas på discoverytjänsten.
10.6 ipv4/ipv6
Vår IdP hanterar både ipv4 och ipv6. Om användaren har dualstack så är det operativsystemet som avgör vilket som kommer användas. Oftast är det ipv6.
11 Federering
- Federering(SSO) är ej standard för nya tjänster. Det innebär att man måste beställa vilka man skall tillåtas federera med.
11.1 Tvingad autentisering eller kontroll av att användare fortfarande är inloggad (aktiv) i IdP:n
För en användare som loggat in med e-legitimation via IdP:n, så är den inloggningen giltig (aktiv) i 60 minuter såvida en SLO-request inte skickats. Detta innebär att användaren kan växla mellan olika e-tjänster och få SSO. (så kallad federering). Men ibland är detta inte önskvärt utan e-tjänsten kanske vill kräva en ny autentisering. Det kan också vara så att e-tjänsten vill kontrollera att användaren verkligen fortfarande är inloggad i IdP:n och att IdP:n inte mottagit någon SLO-request för användaren från annan SP eller att 60-minuters gränsen inte passerat. Dessa två funktioner går att använda och kombinera i SAML standarden med ForceAuthn och IsPassive.
I AuthnRequesten kan SP:n sätta dels ForceAuthn och dels IsPassive för att styra hur IdP:n ska hantera inloggningen.
- IsPassive=true innebär att om användaren inte är inloggad på IdP:n skickas AuthnFailed tillbaka till SP:n (ingen användarinteraktion tillåts).
- ForceAuthn=true innebär att användaren måste logga in, oavsett om användaren redan var inloggad. (användarinteraktion krävs)
CGI kan konfigurera varje SP med "Only allow active authn" som Ja eller Nej. Med detta kan olika ”funktioner” med isPassive fås:
Om "Only allow active authn" för SP är Ja (aktiverad):
-
..och IsPassive är false tvingas alltid användaren att logga in.
-
..och IsPassive är true skickas alltid authnfail till SP:n.
Om "Only allow active authn" INTE är aktiverad (Nej):
-
..och IsPassive är false blir man inloggad automatiskt om man är inloggad, annars får man logga in manuellt.
-
..och IsPassive är true returneras direkt AuthOk eller AuthFail beroende på om användaren är inloggad eller ej.