Lesen Sie bitte die aktuelle Version der 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:
Die Erfüllung dieser Kriterien ist eine der Voraussetzungen für die Teilnahme an der DFN-AAI. Siehe hierzu auch Voraussetzungen für die Teilnahme an der DFN-AAI und Best Practices.
Liste der IdPs aus dem HPC-Kontext, die eduPersonAssurance (nicht) übertragen: https://wiki.geant.org/display/MyAccessID/IdP+Status+Report
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.
Stellen Sie sicher, dass der IdP mindestens die Datei dfn-aai-sp-metadata.xml importiert! Ein Konfigurationsbeispiel findet sich unter Produktivbetrieb.
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. Weiterhin wird hier über den Wert https://refeds.org/assurance/version/2
die grundsätzliche Konformität mit Version 2 des REFEDS Assurance signalisiert.
... <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> <Value>https://refeds.org/assurance/version/2</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:
... <DataConnector id="staticAttributes" xsi:type="Static"> <Attribute id="eduPersonAssurance"> <Value>https://refeds.org/assurance</Value> <Value>https://refeds.org/assurance/version/2</Value> <Value>https://refeds.org/assurance/ATP/ePA-1m</Value> </Attribute> </DataConnector> ...
Falls die Anforderungen bezüglich Identifier Uniqueness (Unique-1 bis Unique-4) erfüllt werden: $PREFIX$/ID/unique. Für Fälle, in denen noch der eduPersonPrincipalName
zum Einsatz kommen 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.
... <DataConnector id="staticAttributes" xsi:type="Static"> <Attribute id="eduPersonAssurance"> <Value>https://refeds.org/assurance</Value> <Value>https://refeds.org/assurance/version/2</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:
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.
... <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/version/2"); 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> ...
(Shibboleth Wiki: Scripted Attribute Definition)
Alternativ lässt sich der oben angenommene Sachverhalt auch über eine Mapped Attribute Definition abbilden:
... <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> ...
(Shibboleth Wiki: Mapped Attribute Definition)
Hier noch ein Beispiel, dass davon ausgeht, dass für alle Mitarbeiter:innen folgendes gilt: „The identity proofing and credential issuance, renewal and replacement are done in a way that qualifies (or would qualify) the user to access the Home Organisation’s internal administrative systems“ (z.B. Finanzadministration, Studierendenverwaltung, etc.), so dass für diese User $PREFIX$/IAP/local-enterprise gesetzt werden kann:
... <AttributeDefinition xsi:type="ScriptedAttribute" id="eduPersonAssurance"> <InputAttributeDefinition ref="eduPersonAffiliation" /> <Script><![CDATA[ eduPersonAssurance.getValues().add("https://refeds.org/assurance"); eduPersonAssurance.getValues().add("https://refeds.org/assurance/version/2"); if (eduPersonAffiliation.getValues().contains("staff")) { eduPersonAssurance.getValues().add("https://refeds.org/assurance/IAP/local-enterprise"); } ]]> </Script> </AttributeDefinition> ...