Här beskriver vi CGI:s implementation av SAML i sin Identity Provider (IdP) för en normal standardanslutning. Vänligen kontakta CGI via funktionstjanster@cgi.com om ni vill göra en anslutning som inte följer den standardanslutning som beskrivs i detta dokument eller om ni har frågor av teknisk karaktär och önskar vägledning.
1 Ö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.1 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.2 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.3 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.
ClientService ProviderIdentity Provider1. Hämtar sida som kräver inlogg (GET)2. Ompekning till IDP med AuthnRequest3. Skicka AuthnRequest till IDP (GET)Autentiseringenskiljer mellanolika metoder.opt[ 4. Autentiseringsförfarande ]5 Ompekning till SP med AuthnResponse6 Skicka AuthnResponse till SP (POST)7 Leverera begärd sidaClientService ProviderIdentity Provider
1.4 IdP-initierad inloggning (Unsolicited Response)
1.5 SLO – Single Logout
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. 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 när ni hämtar hem metadatafilen (xml).
3 SAML-attribut
Som utgångspunkt och grundkonfiguration följer vi DIGG Tekniskt Ramverk 1.1.4 ( Tekniska anslutningsregler för Sweden Connect-federationen ) samt 1.3.3 ( Tekniska anslutningsregler för Sweden Connect-federationen )
Vilket innebär att vi svarar uncertified-loa3 på LoA3. Observera att det tydligt framgår att "Det står en tredjeparts-legitimeringstjänst fritt att definiera egna identifierare" val av att så långt det går följa tekniskt ramverk görs för att upprätthålla en så god interopabilitet som möjligt.
3.1 Attributsprofiler
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.
Valbara attributsprofiler
NAME | FRIENDLY NAME | DESCRIPTION | ELN-AP-Pnr-01 | ELN-AP-NaturalPerson-01 | ELN-AP-OrgPerson-01 | ELN-AP-eIDAS-NatPer-01 | DIGG-AP-HSAid-01 |
---|
urn:oid:2.5.4.4 | sn | Surname | X | X | | X | X |
urn:oid:2.5.4.42 | givenName | Given Name | X | X | | X | X |
urn:oid:2.16.840.1.113730.3.1.241 | displayName | Display Name | X | X | X | | X |
urn:oid:1.2.752.29.4.13 | personalIdentity-Number | National civic registration number/code | X | | | | |
urn:oid:1.3.6.1.5.5.7.9.1 | dateOfBirth | Date of birth | X | | | X | X |
urn:oid:1.3.6.1.5.5.7.9.3 | gender | Gender | | | | X | |
urn:oid:1.2.752.201.3.8 | birthName | Name at the time of birth | | | | X | |
urn:oid:2.5.4.6 | c | Country | | | | X | |
urn:oid:1.3.6.1.5.5.7.9.2 | placeOfBirth | Place of birth | | | | X | |
urn:oid:2.5.4.10 | o | Organizational name | | | X | | |
urn:oid:2.5.4.97 | organizationIdentifier | Organizational identifier code | | | X | | |
urn:oid:1.2.752.201.3.1 | orgAffiliation | <uid>@<orgnr> | | | X | | |
urn:oid:1.2.752.201.3.2 | transactionIdentifier | Transaction identifier | | | | X | |
urn:oid:1.2.752.201.3.4 | prid | Provisional identifier | | | | X | |
urn:oid:1.2.752.201.3.5 | pridPersistence | Provisional identifier persistence indicator | | | | X | |
urn:oid:1.2.752.201.3.7 | eidasPersonIdentifier | eIDAS uniqueness identifier for natural persons | | | | X | |
urn:oid:1.2.752.201.3.9 | eidasNatural-PersonAddress | eIDAS Natural Person Address | | | | X | |
urn:oid:1.2.752.29.6.2.1 | employeeHsaId | HSA-ID | | | | | X |
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 SITHS och Freja OrgID.
eID-tjänsten har en IdP speciellt för e-tjänstelegitimationer, IdP företag. Se 2.2 Tjänstelegitimationer ovan.
NAME | FRIENDLY NAME | DESCRIPTION |
---|
XX | | |
YY | | |
ZZ | | |
ÅÅ | | |
ÄÄ | | |
ÖÖ | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
4 Exempelmeddelanden IdP
4.1 Authentication Request
Kort förklaring kring vad detta är behövs.
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 (ACS) som skall användas. Vi kan godkänna alla URL:er under en adress, som: https://sp.exempel.com/*
AssertionConsumerServiceURL kopplas 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.
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"...
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="_1e4918edeca3909b15fd301648da48e3bcc2da3724" Version="2.0" IssueInstant="2024-09-26T12:11:47Z" Destination="https://eid-connect.test.funktionstjanster.se/saml2/62b41ad31dbc33e6bb963f44/sso/get" AssertionConsumerServiceURL="https://www.testaeid.se/saml/module.php/saml/sp/saml2-acs.php/default-sp" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" > <saml:Issuer>https://www.testaeid.se/saml/module.php/saml/sp/metadata.php/default-sp</saml:Issuer> <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" AllowCreate="true" /> </samlp:AuthnRequest>
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"...
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
https://my.sp/
_10ebf5c504763052dd842ad20f8bbfb1f5
_1004c6a48dc3f03a94c9b98c23e53b06aa
```
4.4 Logout Response
Exempel på Logout Response.
```xml
https://m00-mg-local.idp.funktionstjanster.se/samlv2/id p/metadata/0/10Logout successful ```
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
https://my.sp/0MzT-aPAv;USER_CANCEL ```
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
https://m00-mg-local.testidp.funktionstjanster.se/samlv2/idp/metadata/0/24User pressed cancel
```
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.
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. http://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.
10 Övriga funktioner
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 ```
Länkar behöver uppdateras om länkar ska presenteras/exemplifieras.
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
```xml https://my.sp/191212121212
```
Varför finns detta här? Passar det bättre under annat avsnitt eller i FAQ? Är det relevant på en översikt kring SAML/IdP? Ska det flyttas till tidigare avsnitt?
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.
11 Federering
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.
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):
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.