Vid federerad inloggning med SAML finns en funktion för att möjliggöra för tjänster att hänvisa användare som har hindrande inloggningsproblem tillbaka till hjälpsidor hos användarens organisation. Samtliga identitetsutfärdare (IdP) i SWAMID har en "errorURL" i metadatan med information om hur användare ska lösa hindrande inloggningsrelaterade problem. Tidigare har bara en generell webbadress kunnat konfigureras som "errorURL" för en identitetsutfärdare som då behöver täcka alla olika typer av fel. Under 2020 kompletterades detta med en utökning som gör att tjänster kan hänvisa användare till mer specifika informationssidor hos användarens organisation vid olika typer av fel för att bättre kunna hjälpa användaren att lösa hindrande inloggningsproblem.
Sedan mars 2021 har samtliga identitetsutfärdare i SWAMID en registrerad errorURL. En del identitetsutfärdare använder traditionellt enkel errorURL men de flesta använder idag nedanstående beskrivna utökade hantering. |
Se SAML V2.0 Metadata Deployment Profile for errorURL Version 1.0 för definitionen av den utökade hanteringen av errorURL.
Felen som omfattas av errorURL-hanteringen är endast de fel som användaren förväntas kunna lösa själv eller med hjälp av sin identitetsutfärdare. Det finns fyra olika felkatagorier:
Vid användning av tillägget till errorURL konstrueras URL:en med ett antal specifika strängar som tjänster kan byta ut till olika värden beroende på fel som uppstår vid inloggning. Den viktigaste av dessa är strängen "ERRORURL_CODE" som byts ut mot "IDENTIFICATION_FAILURE", "AUTHENTICATION_FAILURE" eller någon av de andra felkategorierna.
En errorURL för en identitetsutfärdare skulle exempelvis kunna vara
https://saml-error.example.com/ERRORURL_CODE.html
Vid fel i kategorin IDENTIFICATION_FAILURE skulle då länken som tjänsten ger till användaren bli
https://saml-error.example.com/IDENTIFICATION_FAILURE.html
På denna adress kan identitetsutfärdaren beskriva hur användare som får ett fel av denna kategori bör agera för att lösa just den typen av problem.
För att möjliggöra ännu tydligare information till användaren finns förutom ERRORURL_CODE även dessa strängar som tjänsten kan ge lämpliga värden:
ERRORURL_TS - tid då felet inträffade (unix time eller sekunder sedan 1970-01-01)
ERRORURL_RP - entityID för tjänsten
ERRORURL_TID - en transaktionsidentifierare i tjänsten (för användning i kommunikation i tjänsten om det uppkomna felet, för den specifika användaren)
ERRORURL_CTX - mer specificerad kontext för felet (t.ex. vilka attribut som saknas, vilken behörighet som saknas eller något annat som underlättar felsökandet för eventuell support hos identitetsutgivutfärdaren)
Dessa ytterligare attribut kan användas i en dynamisk implementation av errorURL för att ytterligare förbättra informationen till användare som får problem vid inloggning i tjänster. En mer dynamisk errorURL för en identitetsutfärdare skulle kunna vara
https://saml-error.example.com/?errorurl_code=ERRORURL_CODE&errorurl_ts=ERRORURL_TS&errorurl_rp=ERRORURL_RP&errorurl_tid=ERRORURL_TID&errorurl_ctx=ERRORURL_CTX
Om exempelvis en tjänst som kräver att användare uppfyller tillitsnivån SWAMID AL2 får en inloggning på tillitsnivå SWAMID AL1 kan tjänsten hänvisa användaren till
https://saml-error.example.com/?errorurl_code=AUTHORIZATION_FAILURE&errorurl_ts=1607969220&errorurl_rp=https://www.student.ladok.se/student-sp&errorurl_tid=error-5fd7a9c448086&errorurl_ctx=http%3A%2F%2Fwww.swamid.se%2Fpolicy%2Fassurance%2Fal2
Där kan då identitetsutfärdaren beskriva för användaren hur denne löser det uppkomna problemet, t.ex. bekräfta sin identitet för att uppnå tillräcklig nivå inkl. detaljerad information om hur användare gör det.
För att tjänster ska kunna utnyttja errorURL:en för användares identitetsutfärdare behöver detta läsas ut ur identitetsutfärdarens metadata. Detta hanteras olika i olika SAML Service Providers.
För att läsa ut errorURL för en användares identitetsutfärdare i Shibboleth Service Provider behöver tillägget Metadata Attribute Extraction aktiveras i konfigurationen. Instruktioner finns under rubriken Activate Metadata Attribute Extraction for Identity Provider metadata på 3.3 Configure Shibboleth SP - Check for Identity Assurance or REFEDS SIRTFI.
När detta är gjort finns errorURL:en (i förekommande fall) tillgänglig i HTTP-headern/miljövariabeln Meta-errorURL.
Läs noga igenom profilen SAML V2.0 Metadata Deployment Profile for errorURL Version 1.0, där beskrivs i vilka fall som errorURL:en kan användas och hur. Se även beskrivningen under Utökad hantering av errorURL ovan.
Försök beskriva felet så utförligt som möjligt ur tjänstens synvinkel för att hjälpa användaren att åtgärda det.
För att ytterligare förbättra möjligheten till relevant information till användare vid olika fel används en konvension kring ERRORURL_CTX i SWAMID. Tjänster rekommenderas att lägga till dessa strängar till eventuell annan ERRORURL_CTX vid respektive fel, och identitetsutfärdare rekommenderas att hantera dessa speciellt:
Felkategori och specifikt fel | ERRORURL_CTX | Rekommenderad instruktion till användaren på errorURL:en |
---|---|---|
AUTHORIZATION_FAILURE | http://www.swamid.se/policy/assurance/al1 | Uppmana användaren att kontakta identitetsutfärdarens support och upplysa om att SWAMID AL1 inte skickas till tjänsten |
AUTHORIZATION_FAILURE Krav på SWAMID AL2 uppfylls ej | http://www.swamid.se/policy/assurance/al2 | Beskriv hur användaren kan bekräfta sin identitet hos identitetsutfärdaren |
AUTHORIZATION_FAILURE Krav på SWAMID AL3 uppfylls ej | http://www.swamid.se/policy/assurance/al3 | Beskriv hur användaren kan verifiera sin identitet hos identitetsutfärdaren och i samband med detta även få tillgång till tvåfaktorsautentisering |
Dessa komplement är implementerade i exempelimplementationen och i den federationsgemensamma errorURL:en i SWAMID.
Alla identitetsutfärdare i SWAMID är inte godkända för tillitsprofilen SWAMID Assurance Level 2 Profile. Vilka som är godkända framgår på SWAMID Members. Oavsett om användarens identitetsutfärdare är godkänd eller inte så behöver användaren informeras om att det krävs en bekräftad identitet för inloggning i tjänsten.
Förslag på text, tillsammans med en länk till identitetsutfärdarens errorURL (i förekommande fall) med dessa förutsättningar:
Säkerhetskrav uppfylls ej
Ni har loggat in i Ladok för studenter med en användare som inte uppfyller aktuella säkerhetskrav. För att använda Ladok för studenter behöver ni bekräfta er användaridentitet. Kontakta helpdesk, service desk, IT-support eller motsvarande för er inloggningstjänst för hjälp.
Er inloggningstjänst tillhandahåller en informationssida som ni uppmanas använda för att lösa detta problem: https://administrationsverktyg.umu.se/ErrorURL/
Aktuella säkerhetskrav: SWAMID Identity Assurance Level 2 Profile
Länken ska konstrueras enligt följande:
Hämta identitetsutfärdarens errorURL från dess metadata
Ersätt ERRORURL_CODE med AUHORIZATION_FAILURE
Ersätt ERRORURL_TS med aktuell tid, på formen unix time, exempelvis 1616057384
Ersätt ERRORURL_RP med tjänstens entityID, exempelvis https://www.student.ladok.se/student-sp
Ersätt ERRORURL_TID med en intern transaktionsidentifierare, om det skulle underlätta eventuell felsökning i kommunikation med tjänstens support
Ersätt ERRORURL_CTX med http://www.swamid.se/policy/assurance/al2
Resulterande länk skulle exempelvis kunna bli denna:
https://administrationsverktyg.umu.se/ErrorUrl/?errorurl_code=AUTHORIZATION_FAILURE&errorurl_ts=1607969220&errorurl_rp=https://www.student.ladok.se/student-sp&errorurl_tid=ERRORURL_TID&errorurl_ctx=http%3A%2F%2Fwww.swamid.se%2Fpolicy%2Fassurance%2Fal2
Personnummer används som identifierande attribut i många tjänster i SWAMID, bland annat kontoaktiveringsportaler, Ladok och Antagning.se. Inom de flesta studieadministrativa systemen används attributet norEduPersonNIN för överföring av personnummer. Andra tjänster använder normalt personalIdentityNumber.
Det finns ett specialfall inom SWAMID där just norEduPersonNIN har använts för att indikera att identitetsutfärdaren med stor tillförlitlighet vet vilken personen bakom ett användarkonto är. Detta har då använts för att signalera att identiteten är "bekräftad". I och med tillitsprofilen SWAMID Identity Assurance Level 2 Profile så planeras detta fasas ut. |
I de fall personnummer saknas så är det lämpligt att tjänsten meddelar detta, och också ger stöd till användaren i kommunikationen med sin identitetsutfärdare (IdP).
Förslag på text, tillsammans med en länk till identitetsutfärdarens errorURL (i förekommande fall) med dessa förutsättningar:
Din identitetsutfärdare skickade ingen identitet
Ingen identitet skickades med när du loggade in i Ladok för studenter. Kontakta helpdesk, service desk, IT-support eller motsvarande för er inloggningstjänst för hjälp.
Er inloggningstjänst tillhandahåller en informationssida som ni uppmanas använda för att lösa detta problem: https://administrationsverktyg.umu.se/ErrorURL/
Teknisk information: norEduPersonNIN (personnummer) saknas
Länken ska konstrueras enligt följande:
Hämta identitetsutfärdarens errorURL från dess metadata
Ersätt ERRORURL_CODE med IDENTIFICATION_FAILURE
Ersätt ERRORURL_TS med aktuell tid, på formen unix time, exempelvis 1616057384
Ersätt ERRORURL_RP med tjänstens entityID, exempelvis https://www.student.ladok.se/student-sp
Ersätt ERRORURL_TID med en intern transaktionsidentifierare, om det skulle underlätta eventuell felsökning i kommunikation med tjänstens support
Ersätt ERRORURL_CTX med "norEduPersonNIN http://www.geant.net/uri/dataprotection-code-of-conduct/v1"
Resulterande länk skulle exempelvis kunna bli denna:
https://administrationsverktyg.umu.se/ErrorUrl/?errorurl_code=IDENTIFICATION_FAILURE&errorurl_ts=1607969220&errorurl_rp=https://www.student.ladok.se/student-sp&errorurl_tid=ERRORURL_TID&errorurl_ctx=norEduPersonNIN
Shibboleth Service Provider kan hantera vissa hindrande inloggningsrelaterade problem internt. I fallet problem med autentisering/authnContextClass så måste felmeddelandet hanteras inne i Shibboleth. För hantering av saknade attribut är den inbyggda "AttributeChecker Handler" ett alternativ till hantering av detta i tjänsten.
AttributeChecker aktiveras i shibboleth.xml. Exempel med krav på attributet eppn:
<Handler type="AttributeChecker" Location="/AttrChecker" template="attrChecker.html" attributes="eppn" flushSession="true"/> |
Shibboleth tillåter ett par macron i templates. Den är dock ganska begränsad och kan kompletteras med javascript.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link rel="stylesheet" type="text/css" href="<shibmlp styleSheet/>" /> <title>Din identitetsutfärdare skickade ingen identitet</title> </head> <body> <shibmlpif entityID> <h1>Din identitetsutfärdare skickade ingen identitet</h1> Ingen identitet skickades med när du loggade in i Ladok för studenter. Kontakta helpdesk, service desk, IT-support eller motsvarande för er inloggningstjänst för hjälp. <script> var missing_attributes = "<shibmlpifnot mail>mail </shibmlpifnot><shibmlpifnot eppn>eppn </shibmlpifnot><shibmlpifnot assurance>eduPersonAssurance </shibmlpifnot>"; </script> <shibmlpif Meta-errorURL> <p> Er inloggningstjänst tillhandahåller en informationssida som ni uppmanas använda för att lösa detta problem: <script> var errorurl = "<shibmlp Meta-errorURL />"; var now = "<shibmlp now />"; var ts = Date.parse(now.replace(/:/g, ":"))/1000; if (errorurl) { errorurl = errorurl.replace(/ERRORURL_CODE/, "IDENTIFICATION_FAILURE"); errorurl = errorurl.replace(/ERRORURL_TS/, ts); errorurl = errorurl.replace(/ERRORURL_RP/, "<shibmlp target />"); errorurl = errorurl.replace(/ERRORURL_CTX/, missing_attributes); var errorurl_short = errorurl.replace(/\?.*/, ""); document.write('<a href="' + errorurl + '">' + errorurl_short + '</a>.'); } </script> </shibmlpif> <p> Teknisk information: <script>document.write(missing_attributes);</script> saknas </shibmlpif> <shibmlpifnot entityID> <h1>Session invalidated</h1> <p>Your session was already invalidated before your information could be examined for completeness.</p> </shibmlpifnot> </body> </html> |
<Handler type="AttributeChecker" Location="/AttrChecker" template="attrChecker.html" attributes="eppn" flushSession="true"/> |