...
Vid misslyckad autentisering hos identitetsutfärdaren på grund av exempel felaktigt lösenord så stannar användaren normalt hos identitetsutfärdaren och denne får hantera eventuella felmeddelanden och rekommentationer till användaren. I de fall tjänsten begär en autentisering med en specifik authnContextClass (exempelvis https://refeds.org/profile/mfa) som inte identitetsutfärdaren kan uppfylla så skickas dock normalt användaren tillbaka till tjänsten med ett SAML-fel. Detta hanteras internt i Shibboleth Service Provider som ett sessionsfel, dock så följer information från inloggningsbegäran inte med till hanteringssidan för sessionsfel.
Sessionsfel hanteras av html-felen den template som definieras i shibboleth.xml:
...
Shibboleth tillåter ett par macron i templates. Den är dock ganska begränsad och kan kompletteras med javascript. Exempel med krav på attributet norEduPersonNIN:som hänvisar användaren till identitetsutfärdarens errorURL när autentisering misslyckas, sannolikt på grund av misslyckad MFA-autentisering. Denna gissning bygger på att eventType är Login och att SAML-felkoden är något av AuthnFailed, NoPassive eller NoAuthnContext.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<?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>Session Error</title> </head> <body> <shibmlpif<h1>Ett entityID> <h1>Dinfel identitetsutfärdareuppstod skickadei ingen identitet<sessionen</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> <shibmlpifnot Meta-errorURL> <p> Kontakta din inloggningstjänst för felsökning. </shibmlpifnot> <shibmlpif Meta-errorURL> <script> var eventtype = '<shibmlp eventType/>'; var statuscode2 = '<shibmlp statusCode2/>'; statuscode2 = statuscode2.replace(/:/g, ":"); var missing_attributeserrorurl = "<shibmlpifnot<shibmlp norEduPersonNIN>norEduPersonNINMeta-errorURL </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 var now = "<shibmlp now />"; now = now.replace(/::/g, ":"); var ts = Date.parse(now)/1000; if (errorurl) {eventtype === "Login" && errorurl && ( errorurlstatuscode2 === errorurl.replace(/ERRORURL_CODE/, "IDENTIFICATION_FAILURE");"urn:oasis:names:tc:SAML:2.0:status:AuthnFailed" || errorurlstatuscode2 = errorurl.replace(/ERRORURL_TS/, ts);=== "urn:oasis:names:tc:SAML:2.0:status:NoPassive" || errorurlstatuscode2 === errorurl.replace(/ERRORURL_RP/, "<shibmlp target />"); "urn:oasis:names:tc:SAML:2.0:status:NoAuthnContext")) { errorurl = errorurl.replace(/ERRORURL_CTXCODE/, missing_attributes + "http://www.geant.net/uri/dataprotection-code-of-conduct/v1"AUTHENTICATION_FAILURE"); var errorurl_short = errorurl.replace(/\?.*ERRORURL_TS/, ""ts); document.write('<a href="' + errorurl + '">' + errorurl_short + '</a>.'= errorurl.replace(/ERRORURL_RP/, "<shibmlp target />"); } </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> | ||||||
No Format | ||||||
<Handler type="AttributeChecker" Location="/AttrChecker" template="attrChecker.html" errorurl = errorurl.replace(/ERRORURL_CTX/, "https://refeds.org/profile/mfa"); var errorurl_short = errorurl.replace(/\?.*/, ""); attributes="eppn" flushSession="true"/> document.write('<p>Er inloggningstjänst tillhandahåller en informationssida som ni uppmanas använda för att lösa detta problem: \ <a href="' + errorurl + '">' + errorurl_short + '</a>.'); } else { document.write('<p>Kontakta din inloggningstjänst för felsökning.'); } </script> </shibmlpif> <p> Teknisk information: <p><font size="-1"><pre> <shibmlp errorType/> at (<shibmlp requestURL/>) <shibmlp errorText/> <shibmlpif statusCode> Error from identity provider: Status: <shibmlp statusCode/> <shibmlpif statusCode2> Sub-Status: <shibmlp statusCode2/> </shibmlpif> <shibmlpif statusMessage> Message: <shibmlp statusMessage/> </shibmlpif> </shibmlpif> </pre> </body> </html> |
AttributeChecker
AttributeChecker aktiveras i shibboleth.xml. Exempel med krav på attributet norEduPersonNIN:
...
Shibboleth tillåter ett par macron i templates. Den är dock ganska begränsad och kan kompletteras med javascript. Exempel med krav på som hänvisar användaren till identitetsutfärdarens errorURL när attributet norEduPersonNIN saknas:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<?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 norEduPersonNIN>norEduPersonNIN </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 />";
now = now.replace(/:/g, ":");
var ts = Date.parse(now)/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 + "http://www.geant.net/uri/dataprotection-code-of-conduct/v1");
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>
| ||||||
No Format | ||||||
<Handler type="AttributeChecker" Location="/AttrChecker" template="attrChecker.html" attributes="eppn" flushSession="true"/> |