Sie befinden sich im Service: Identity Management

Attribute-Checker

Attribute-Checker

 Detailinformation

Der AttributeChecker kann auf Service Provider (SP) Seite eingerichtet werden, um dem Nutzer eine Übersicht zu geben, welche Attribute bei der Anmeldung, vom zuständigen IdentityProvider (IdP), nicht übertragen wurden. Meist tritt dieses Phänomen auf, wenn die fehlenden Attribute vom IdP nicht freigegeben werden. Hier kann ggf. Verwaltungsaufwand entstehen. Daher gibt es im Beispiel-Template unten, die Möglichkeit den IdP Support seiner jeweiligen Einrichtung zu kontaktieren.

Hier eine Beispiel-Ansicht:

Attribute Checker Handler

Der AttributeChecker validiert die Benutzer Session anhand von erforderlichen Attributen.

Wenn die Anforderungen erfüllt sind, erfolgt der Login, andernfalls wird stattdessen eine Fehlerseite angezeigt.

Die Attribute sind hier "hartcodiert" und müssen manuell definiert werden.

Konfiguration

Konfigurierbar ist der AttributeChecker in der shibboleth2.xml unter den <ApplicationDefaults> oder in einem <ApplicationOverride>.

Dort muss ein Session Hook hinzugefügt werden:

sessionHook="/Shibboleth.sso/AttrChecker".

Weiterhin wird noch ein Metadaten Attribut Prefix hinzugefügt:

metadataAttributePrefix="Meta-"

welches für die Darstellung der Seite gebraucht wird.

Hinweis:

Das Template "attrChecker.html" ist nicht generisch und muss manuell pro SP angepasst werden. Sollte also eine SP Installation mehrere SPs haben, so muss für jeden SP, bei dem die Attribute geprüft werden, dieses Template angepasst werden.

 

Beispielkonfiguration

Application Defaults

<ApplicationDefaults entityID="https://<HOST>/shibboleth"

  REMOTE_USER="eppn persistent-id targeted-id"

  signing="front" encryption="false"

  sessionHook="/Shibboleth.sso/AttrChecker"

  metadataAttributePrefix="Meta-" >

Außerdem muss der AttributeChecker -Handler im <Sessions>-Element definiert werden.

Die erforderlichen Attribute werden unter dem Attribut attributes definiert (hier eppn und displayName):

<Sessions ....>

  <Handler type="AttributeChecker" Location="/AttrChecker" template="attrChecker.html"

           attributes="eppn displayName" flushSession="true"/>

</Sessions>

Um an die Metadaten Informationen für das attrChecker.html-Template zu kommen, muss noch ein <AttributeExtractor> definiert werden.

<!-- Extracts support information for IdP from its metadata. -->

<AttributeExtractor type="Metadata" errorURL="errorURL" DisplayName="displayName"

                    InformationURL="informationURL" PrivacyStatementURL="privacyStatementURL"

                    OrganizationURL="organizationURL">

  <ContactPerson id="Support-Contact"  contactType="support" formatter="$EmailAddress" />

  <Logo id="Small-Logo" height="16" width="16" formatter="$_string"/>

</AttributeExtractor>

Application Override

<ApplicationOverride id="checkattributes" entityID="https://<HOST>/checkattributes/shibboleth"

  sessionHook="/checkattributes/Shibboleth.sso/AttrChecker" metadataAttributePrefix="Meta-">

Außerdem muss der AttributeChecker -Handler im <Sessions>-Element definiert werden.

Die erforderlichen Attribute werden unter dem Attribut attributes definiert (hier eppn und displayName):

<Sessions ....>

  <Handler type="AttributeChecker" Location="/AttrChecker" template="attrChecker.html"

           attributes="eppn displayName" flushSession="true"/>

</Sessions>

Um an die Metadaten Informationen für das attrChecker.html-Template zu kommen, muss noch ein <AttributeExtractor> definiert werden.

<!-- Extracts support information for IdP from its metadata. -->

<AttributeExtractor type="Metadata" errorURL="errorURL" DisplayName="displayName"

                    InformationURL="informationURL" PrivacyStatementURL="privacyStatementURL"

                    OrganizationURL="organizationURL">

  <ContactPerson id="Support-Contact"  contactType="support" formatter="$EmailAddress" />

  <Logo id="Small-Logo" height="16" width="16" formatter="$_string"/>

</AttributeExtractor>

 

Template Beispiel:

Jedes Attribut das überprüft werden soll, muss händisch hinzugefügt werden. Im Beispiel wird eine Tabelle mit dem jeweils fehlenden Attribut angezeigt.

<!--TableStart-->

<tr <shibmlpifnot displayName><shibmlpifnot givenName> class='warning text-danger'</shibmlpifnot></shibmlpifnot>>

    <td>displayName</td>

    <td><shibmlp displayName /></td>

    <td></td>

</tr>

<tr <shibmlpifnot givenName><shibmlpifnot displayName> class='warning text-danger'</shibmlpifnot></shibmlpifnot>>

    <td>givenName</td>

    <td><shibmlp givenName /></td>

</tr>

<tr <shibmlpifnot sn><shibmlpifnot displayName> class='warning text-danger'</shibmlpifnot></shibmlpifnot>>

    <td>sn</td>

    <td><shibmlp sn /></td>

</tr>

<tr <shibmlpifnot mail> class='warning text-danger'</shibmlpifnot>>

    <td>mail</td>

    <td><shibmlp mail /></td>

</tr>

<tr <shibmlpifnot eppn> class='warning text-danger'</shibmlpifnot>>

    <td>eduPersonPrincipalName</td>

    <td><shibmlp eppn /></td>

</tr>

<tr>

    <td>eduPersonTargetedID</td>

    <td><shibmlp persistent-id /></td>

</tr>

<tr>

    <td>eduPersonScopedAffiliation (optional)</td>

    <td><shibmlp affiliation /></td>

</tr>

<!--TableEnd-->

Auch der Text an den IdP Betreiber muss angepasst werden:

The attributes that were not released to the service are:

 * <shibmlpifnot cn>cn</shibmlpifnot>

 * <shibmlpifnot mail>mail</shibmlpifnot>

Die Namen der Attribute richten sich nach der attribute-map.xml.

zuletzt geändert am 29.01.2021

Wie hat Ihnen dieser Inhalt geholfen?