Dies ist eine alte Version des Dokuments!


REFEDS Assurance Framework - Identity Provider

(allgemeine Informationen zu Verlässlichkeit/Assurance)

Work in Progress

Diese Seite ist noch im Aufbau begriffen!

Lesen Sie bitte die Spezifikation!
Bei Fragen wenden Sie sich bitte an das DFN-AAI Team.

Um als Identity Provider bzw. Heimateinrichtung grundsätzliche Konformität mit dem REFEDS Assurance Framework zu signalisieren und entsprechende Attributwerte zu übertragen, müssen vier sog. Conformance Criteria erfüllt sein:

  1. The Identity Provider is operated with organizational-level authority
  2. The Identity Provider is trusted enough that it is (or it could be) used to access the organization’s own systems
  3. Generally-accepted security practices are applied to the Identity Provider
  4. Federation metadata is accurate, complete, and includes at least one of the following: support, technical, admin, or security contacts

Ab 1.1.2023 wird die Erfüllung dieser Kriterien eine der Voraussetzungen für die Teilnahme an der DFN-AAI sein. Aktuell gelten hierfür noch die Anforderungen der Verlässlichkeitsklasse ''Basic''. Siehe hierzu auch Voraussetzungen für die Teilnahme an der DFN-AAI und Best Practices.

Beachten Sie bitte auch folgendes:

Nachweislich falsche Angabe zur Verlässlichkeit von Identitäten führen zum Ausschluss aus der DFN-AAI!

Wichtiger Hinweis:
Die folgenden Beispiele sind als Anregungen gedacht und sollten keinesfalls unreflektiert via copy + paste übernommen werden!

Bitte recherchieren Sie gründlich, welche Kriterien des REFEDS Assurance Framework seitens Ihrer Heimateinrichtung auf welche Weise und ggf. für welche Nutzendengruppen erfüllt sind. Von dieser Faktenlage ausgehend erstellen Sie bitte eine entsprechend angepasste Attribute Resolver Konfiguration.

Da eduPersonAssurance keine personenbezogenen Daten enthält und Service Provider die Information zur Verlässlichkeit von Identitäten für die Autorisierungsentscheidung benötigen, sollte dieses Attribut grundsätzlich an alle Service Provider übertragen werden. Siehe hierzu das Beispiel zur Attribute Filter Basiskonfiguration.

Um das Attribut eduPersonAssurance - sofern gewünscht - vom User Consent auszunehmen, muss die Datei consent-intercept-config.xml entsprechend angepasst werden.

Um gegenüber Service Providern die grundsätzliche Konformität mit dem REFEDS Assurance Framework zu signalisieren, genügt es, das sog. 'Prefix' als Attributwert zu übertragen. Dies ist die Minimalkonfiguration:

./conf/attribute-resolver.xml
...
    <AttributeDefinition xsi:type="Simple" id="eduPersonAssurance">
        <InputDataConnector ref="staticAttributes" attributeNames="eduPersonAssurance" />
    </AttributeDefinition>
...
    <DataConnector id="staticAttributes" xsi:type="Static">
        <Attribute id="eduPersonAssurance">
            <Value>https://refeds.org/assurance</Value>
        </Attribute>
    </DataConnector>
...

Sind die Prozesse zur Aktualisierung der Nutzendendaten und zur Deprovisionierung einheitlich für alle Nutzenden und erfolgt die Aktualisierung innerhalb eines Monats, kann der entsprechende Attributwert ebenfalls statisch gesetzt werden:

./conf/attribute-resolver.xml
...
    <DataConnector id="staticAttributes" xsi:type="Static">
        <Attribute id="eduPersonAssurance">
            <Value>https://refeds.org/assurance</Value>
            <Value>https://refeds.org/assurance/ATP/ePA-1m</Value>
        </Attribute>
    </DataConnector>
...

Die Anforderungen bezüglich Identifier Uniqueness (Unique-1 bis Unique-4) werden grundsätzlich erfüllt: $PREFIX$/ID/unique. Für Fälle, in denen noch der eduPersonPrincipalName zum Einsatz kommen muss und auch für dieses Attribut die Bedingungen Unique-1 bis Unique-3 gegeben sind, kann ergänzend $PREFIX$/ID/eppn-unique-no-reassign gesetzt werden.

./conf/attribute-resolver.xml
...
    <DataConnector id="staticAttributes" xsi:type="Static">
        <Attribute id="eduPersonAssurance">
            <Value>https://refeds.org/assurance</Value>
            <Value>https://refeds.org/assurance/ATP/ePA-1m</Value>
            <Value>https://refeds.org/assurance/ID/unique</Value>
            <Value>https://refeds.org/assurance/ID/eppn-unique-no-reassign</Value>
        </Attribute>
    </DataConnector>
...

Hier ein etwas komplexeres Beispiel, das von folgenden Annahmen ausgeht:

  • bei bestimmten Nutzendengruppen erfolgt die Aktualisierung der Daten im Identity Management System (und dem daran angeschlossenen Nutzendenverzeichnis) innerhalb eines Tages
  • bei den Beschäftigten des Universitätsklinikums, die offiziell Angehörige der Universität sind, geschieht dies hingegen innerhalb eines Monats
  • bei frisch immatrikulierten Studierenden, bei denen noch keine Identitätsprüfung anhand eines amtlichen Ausweisdokuments oder eines analogen eIDAS-konformen Tokens erfolgt ist, wird $PREFIX$/IAP/low angenommen,
  • bei allen anderen Nutzenden ist bereits eine entsprechende Identitätsprüfung erfolgt, daher kann $PREFIX$/IAP/medium zusätzlich gesetzt werden. Selbiges gilt für Studierende, bei denen die Validierung im Rahmen ihrer ersten Prüfung erfolgt ist.
  • die in den o.g. Punkten genannten Unterschiede werden über Gruppenmitgliedschaften anhand des LDAP-/AD-Attributs memberOf modelliert.

Wichtig: Bei $PREFIX$/IAP/medium und $PREFIX$/IAP/high müssen die jeweils niedrigeren Verlässlichkeiten mit übertragen werden. Analog ist bei $PREFIX$/ATP/ePA-1d zu verfahren, hier muss $PREFIX$/ATP/ePA-1m mit angegeben werden.

./conf/attribute-resolver.xml
...
    <AttributeDefinition xsi:type="ScriptedAttribute" id="eduPersonAssurance">
        <InputDataConnector ref="myLDAP" attributeNames="memberOf" />
        <Script><![CDATA[
            eduPersonAssurance.getValues().add("https://refeds.org/assurance");
            eduPersonAssurance.getValues().add("https://refeds.org/assurance/IAP/low");
            eduPersonAssurance.getValues().add("https://refeds.org/assurance/ATP/ePA-1m");
            if (!memberOf.getValues().contains("unchecked_student")) {
               eduPersonAssurance.getValues().add("https://refeds.org/assurance/IAP/medium");
            }
            if (!memberOf.getValues().contains("university_hospital_staff")) {
               eduPersonAssurance.getValues().add("https://refeds.org/assurance/ATP/ePA-1d");
            }
        ]]>
        </Script>
    </AttributeDefinition>
...

Alternativ lässt sich der oben angenommene Sachverhalt auch über eine Mapped Attribute Definition abbilden:

./conf/attribute-resolver.xml
...
    <AttributeDefinition xsi:type="MappedAttribute" id="eduPersonAssurance">
        <InputDataConnector ref="myLDAP" attributeNames="memberOf" />
        <ValueMap>
            <ReturnValue>https://refeds.org/assurance</ReturnValue>
            <SourceValue caseSensitive="false">checked_students</SourceValue>
            <SourceValue caseSensitive="false">unchecked_students</SourceValue>
            <SourceValue caseSensitive="false">university_staff</SourceValue>
            <SourceValue caseSensitive="false">university_hospital_staff</SourceValue>
        </ValueMap>
        <ValueMap>
            <ReturnValue>https://refeds.org/assurance/IAP/low</ReturnValue>
            <SourceValue caseSensitive="false">checked_students</SourceValue>
            <SourceValue caseSensitive="false">unchecked_students</SourceValue>
            <SourceValue caseSensitive="false">university_staff</SourceValue>
            <SourceValue caseSensitive="false">university_hospital_staff</SourceValue>
        </ValueMap>
        <ValueMap>
            <ReturnValue>https://refeds.org/assurance/IAP/medium</ReturnValue>
            <SourceValue caseSensitive="false">checked_students</SourceValue>
            <SourceValue caseSensitive="false">university_staff</SourceValue>
            <SourceValue caseSensitive="false">university_hospital_staff</SourceValue>
        </ValueMap>
        <ValueMap>
            <ReturnValue>https://refeds.org/assurance/ATP/ePA-1d</ReturnValue>
            <SourceValue caseSensitive="false">checked_students</SourceValue>
            <SourceValue caseSensitive="false">unchecked_students</SourceValue>
            <SourceValue caseSensitive="false">university_staff</SourceValue>
        </ValueMap>
        <ValueMap>
            <ReturnValue>https://refeds.org/assurance/ATP/ePA-1m</ReturnValue>
            <SourceValue caseSensitive="false">checked_students</SourceValue>
            <SourceValue caseSensitive="false">unchecked_students</SourceValue>
            <SourceValue caseSensitive="false">university_staff</SourceValue>
            <SourceValue caseSensitive="false">university_hospital_staff</SourceValue>
        </ValueMap>
    </AttributeDefinition>
...
  • Zuletzt geändert: vor 2 Jahren