Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
languagexml
titleattrCheckersessionError.html
collapsetrue
<?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(/&#58;:/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
languagexml
titleattrChecker.html
collapsetrue
<?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(/&#58;/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"/>