Entity Attributes
Entity Attributes?
Bei Entity Attributen handelt es sich um eine Erweiterung der SAML2-Metadaten, mit der IdPs, Attribute Authorities oder SPs zu Gruppen zusammengefasst werden können. Systeme mit gemeinsamen Merkmalen, z.B. einer Projektzugehörigkeit, werden mit Entity Attributen in den Metadaten markiert. Die Attributnamen und -werte können dann zum Filtern verwendet werden: IdP-seitig ist das interessant, um Attributfreigaben für SP-Gruppen zu vereinheitlichen oder um in der Relying Party-Konfiguration Profile zu aktivieren. SP-seitig können damit Metadaten gefiltert werden, um die Gruppe der zugriffsberechtigten IdPs zu definieren.
SP: benötigte Subject Identifier Attribute
Die Angabe, ob ein Service Provider eine Subject Id oder eine Pairwise Id (oder eine von beiden) benötigt, erfolgt über ein entsprechendes Entity Attribut (zulässige Werte: subject-id
, pairwise-id
, any
, none
). Siehe hierzu die Spezifikation der SAML V2.0 Subject Identifier Attributes. Beispiele zur Attributfreigabe finden sich auf dieser Seite.
Hierzu existiert eine Schaltfläche in der DFN-AAI Metadatenverwaltung:
- dfn-aai-sp-metadata.xml
<EntityDescriptor entityID="https://testsp3.aai.dfn.de/shibboleth"> <Extensions> <mdrpi:RegistrationInfo registrationAuthority="https://www.aai.dfn.de" registrationInstant="2020-01-31T10:16:59Z"> <mdrpi:RegistrationPolicy xml:lang="en">https://www.aai.dfn.de/fileadmin/documents/mrps_dfn-aai_1.0.pdf</mdrpi:RegistrationPolicy> </mdrpi:RegistrationInfo> <mdattr:EntityAttributes> <saml:Attribute Name="urn:oasis:names:tc:SAML:profiles:subject-id:req" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> <saml:AttributeValue>subject-id</saml:AttributeValue> </saml:Attribute> </mdattr:EntityAttributes> </Extensions>
Sirtfi
Sirtfi
Dieses seltsame Wort wird „certify“ ausgesprochen. Es steht für „Security Incident Response Trust Framework for Federated Identity“. Dieses Entity Attribut bezeugt die Bereitschaft und Fähigkeit des IdP-, AA- oder SP-Betreibers, die Anforderungen des Sirtfi Frameworks einzuhalten und bei Sicherheitsvorfällen die Gegenstellen zeitnah zu informieren. Siehe hierzu die REFEDS-Website und unsere Dokumentation zu Sirtfi Compliance in der DFN-AAI.
Das Sirtfi Entity Attribut urn:oasis:names:tc:SAML:attribute:assurance-certification
darf nur unter den im Framework festgelegten Bedingungen geführt werden. Wir prüfen folgende formale und technische Kriterien, bevor wir die entsprechende Checkbox freigeben:
- In den Metadaten muss ein Security-Kontakt benannt sein. Dabei muss es sich um eine Funktionsadresse handeln, keine persönliche E-Mail-Adresse.
- Wir setzen voraus, dass Sirtfi-konforme Einrichtungen die jeweils aktuellste Software-Version für den IdP bzw. SP einsetzen.
- Die SSL-Konfiguration des Webservers muss aktueller Best Practice entsprechen. Dazu ziehen wir den Servertest von ssllabs.com heran.
Sirtfi Version 2 beinhaltet alle Punkte der Version 1, ergänzt und präzisiert diese jedoch. Wenn für eine Entity (IdP/SP) Konformität zu Sirtfi 2.0 bestätigt wird, müssen daher als Werte für das entsprechende Entity Attribut sowohl https://refeds.org/sirtfi
als auch https://refeds.org/sirtfi2
gesetzt werden - siehe das Beispiel unten.
Zu den Maßnahmen und Prozeduren im Falle eines Sicherheitsvorfalls siehe unter Incident Response.
- dfn-aai-edugain+sp-metadata.xml
<md:EntityDescriptor entityID="https://cern.ch/login" xsi:schemaLocation="urn:oasis:names:tc:SAML:2.0:metadata saml-schema-metadata-2.0.xsd urn:mace:shibboleth:metadata:1.0 shibboleth-metadata-1.0.xsd http://www.w3.org/2000/09/xmldsig# xmldsig-core-schema.xsd"> <md:Extensions> <mdrpi:RegistrationInfo registrationAuthority="http://rr.aai.switch.ch/" registrationInstant="2014-07-29T13:17:52Z"> <mdrpi:RegistrationPolicy xml:lang="en">https://www.switch.ch/aai/federation/switchaai/metadata-registration-practice-statement-20110711.txt</mdrpi:RegistrationPolicy> </mdrpi:RegistrationInfo> <mdattr:EntityAttributes> <!-- ... --> <saml:Attribute Name="urn:oasis:names:tc:SAML:attribute:assurance-certification" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> <saml:AttributeValue>https://refeds.org/sirtfi2</saml:AttributeValue> <saml:AttributeValue>https://refeds.org/sirtfi</saml:AttributeValue> </saml:Attribute> <!-- ... --> </mdattr:EntityAttributes> </md:Extensions>
Entity Categories
Eine Entity Category ist technisch gesehen ein Wert eines Entity Attributs, das den Namen http://macedir.org/entity-category
führt. Service Provider nutzen Entity Categories, um über die Metadaten zu kommunizieren, dass sie bestimmte Anforderungen stellen und/oder erfüllen. Ein SP kann beliebig viele Entity Categories setzen.
IdP-seitig können als „Gegenstücke“ Entity Category Support-Attribute definiert werden. Damit signalisieren IdPs, dass sie für SPs der Entity Category eine Attributfreigabe erteilen. Zu diesem Themenkomplex siehe https://wiki.refeds.org/display/ENT/Entity-Categories+Home.
Internationale Entity Categories
Drei Entity Categories kommen international zum Einsatz. Um sie für Ihre Systeme in der DFN-AAI zu setzen, verwenden Sie die Metadatenverwaltung. Dort tauchen die Checkboxen allerdings erst auf, wenn Ihr System die jeweiligen technischen Bedingungen erfüllt.
GÉANT Data Protection Code of Conduct (CoCo v.1)
Die Entity Category GÉANT Data Protection Code of Conduct for Service Providers in EU/EEA (CoCo v.1) ist eine Selbstverpflichtungserklärung von Service Providern. Damit sagen Sie über sich aus, dass sie die über SAML2 übertragenen personenbezogenen Daten von Endnutzern entsprechend der EU Datenschutzrichtlinie 95/46/EG von 1995 behandeln. Hintergrundinformationen finden Sie hier im Wiki. Die Bedingungen für das Tragen der Entity Category sind im GÉANT Wiki dokumentiert.
IdP-Betreiber, die die von Code of Conduct-SPs benötigten Attribute freigeben möchten, können sich bzgl. der Filterregel an diesen Beispielen orientieren.
REFEDS Data Protection Code of Conduct (CoCo v.2)
Die Entity Category REFEDS Data Protection Code of Conduct (CoCco v.2) signalisiert, dass Service Provider, die dieser Entity Category angehören, die auf der DSGVO basierenden Best Practices befolgen, die dieses Entity Category definiert. Siehe hierzu auch unter https://refeds.org/category/code-of-conduct/v2.
IdP-Betreiber, die die von Code of Conduct-SPs benötigten Attribute freigeben möchten, können sich bzgl. der Filterregel an diesen Beispielen orientieren.
European Student Identifier
Siehe unter https://wiki.geant.org/display/SM/European+Student+Identifier+Entity+Category und die Wiki-Seite Erasmus-Dienste.
Research and Scholarship
Die Entity Category Research and Scholarship können Service Provider setzen, deren Dienst die Zusammenarbeit oder das Management in den Bereichen Forschung und Bildung unterstützt. Die Bedingungen sind bei REFEDS aufgelistet, wichtig sind für Sie vor allem die Registrierungskriterien (Punkt 4) und die Attributliste (Punkt 5).
Die Attributfreigaben, die IdP-seitig erfolgen können, sind unter Attributfreigaben für die REFEDS Research and Scholarship Entity Category dokumentiert.
Anonymous Access
- Siehe unter https://refeds.org/category/anonymous
- Konfigurationsbeispiel für die Attributfreigabe am IdP unter Anpassung der Attributkonfiguration.
Pseudonymous Access
- Siehe unter https://refeds.org/category/pseudonymous
Personalized Access
- Siehe unter https://refeds.org/category/personalized
Hide from Discovery
Der Entity Category Hide from Discovery können IdPs zugeordnet werden, die nicht in zentralen Discovery Services angezeigt werden sollen, wie z.B. dem DFN-AAI WAYF.
Beispiele
Hier sehen Sie den Metadatenauszug eines Services Providers mit drei Entity Attributes: Er sagt CoCo-Compliance zu, bietet einen Dienst für kollaboratives Arbeiten in der Forschung o.ä. an und gehört zur Gruppe der Clarin-SPs.
- dfn-aai-sp-metadata.xml
<EntityDescriptor entityID="https://clarin.ids-mannheim.de/shibboleth"> <Extensions> <mdrpi:RegistrationInfo registrationAuthority="https://www.aai.dfn.de" registrationInstant="2013-10-24T13:14:25Z"> <mdrpi:RegistrationPolicy xml:lang="en">https://www.aai.dfn.de/en/join/</mdrpi:RegistrationPolicy> <mdrpi:RegistrationPolicy xml:lang="de">https://www.aai.dfn.de/teilnahme/</mdrpi:RegistrationPolicy> </mdrpi:RegistrationInfo> <mdattr:EntityAttributes> <saml:Attribute Name="http://macedir.org/entity-category" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> <saml:AttributeValue>https://refeds.org/category/code-of-conduct/v2</saml:AttributeValue> <saml:AttributeValue>http://refeds.org/category/research-and-scholarship</saml:AttributeValue> <saml:AttributeValue>http://clarin.eu/category/clarin-member</saml:AttributeValue> </saml:Attribute> </mdattr:EntityAttributes> </Extensions>
Hier sehen Sie den Metadatenauszug eines Identity Providers, der Attributfreigaben für Code of Conduct-getreue SPs konfiguriert hat.
- dfn-aai-idp-metadata.xml
<EntityDescriptor entityID="https://idp.hs-bremen.de/idp/shibboleth"> <Extensions> <mdrpi:RegistrationInfo registrationAuthority="https://www.aai.dfn.de" registrationInstant="2016-11-18T08:40:16Z"> <mdrpi:RegistrationPolicy xml:lang="en">https://www.aai.dfn.de/en/join/</mdrpi:RegistrationPolicy> <mdrpi:RegistrationPolicy xml:lang="de">https://www.aai.dfn.de/teilnahme/</mdrpi:RegistrationPolicy> </mdrpi:RegistrationInfo> <mdattr:EntityAttributes> <saml:Attribute Name="http://macedir.org/entity-category-support" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> <saml:AttributeValue>https://refeds.org/category/code-of-conduct/v2</saml:AttributeValue> </saml:Attribute> </mdattr:EntityAttributes> </Extensions>
Entity Categories in der DFN-AAI
Eigene Entity Category?
Implementierungswünsche für weitere Entity Categories richten Sie bitte an hotline@aai.dfn.de.
In der DFN-AAI kommen Entity Categories zum Einsatz, die z.B. nach Projektzugehörigkeit vergeben werden. Sie können anhand der IdP- und SP-seitigen Filtermechanismen dazu eingesetzt werden, sogenannte virtuelle Subföderationen zu bilden, z.B. für bwIDM, Nds-AAI und die Virtuelle Hochschule Bayern. Welche IdPs und SPs zu einer solchen Entity Category / virtuellen Subföderation gehören, lässt sich in der Metadatenverwaltung über eine sog. Entitätenliste modellieren.
Hierbei ist folgendes zu beachten:
- Die Liste und die zugehörige Entity Category müssen vom DFN-AAI Team initial eingerichtet werden
- Die Zugriffsrechte auf die Entitätenliste werden vom DFN-AAI Team gesetzt, auch für Sub-Admins
Folgende Kategorien werden derzeit vergeben:
Details hierzu finden sich auf einer separaten Übersichtsseite.
Beispiele (Metadaten)
Hier sehen Sie den Metadatenauszug eines SP, der am bwIdM-Verbund teilnimmt:
- dfn-aai-sp-metadata.xml
<EntityDescriptor entityID="https://bw-support.scc.kit.edu/secure"> <Extensions> <mdrpi:RegistrationInfo registrationAuthority="https://www.aai.dfn.de" registrationInstant="2013-05-29T12:16:37Z"> <mdrpi:RegistrationPolicy xml:lang="en">https://www.aai.dfn.de/en/join/</mdrpi:RegistrationPolicy> <mdrpi:RegistrationPolicy xml:lang="de">https://www.aai.dfn.de/teilnahme/</mdrpi:RegistrationPolicy> </mdrpi:RegistrationInfo> <mdattr:EntityAttributes> <saml:Attribute Name="http://macedir.org/entity-category" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> <saml:AttributeValue>http://aai.dfn.de/category/bwidm-member</saml:AttributeValue> </saml:Attribute> </mdattr:EntityAttributes> </Extensions>
Hier sehen Sie den Metadatenauszug eines IdP, der am bwIdM-Verbund teilnimmt:
- dfn-aai-idp-metadata.xml
<EntityDescriptor entityID="https://mylogin.uni-freiburg.de/shibboleth"> <Extensions> <mdrpi:RegistrationInfo registrationAuthority="https://www.aai.dfn.de" registrationInstant="2009-05-26T08:35:10Z"> <mdrpi:RegistrationPolicy xml:lang="en">https://www.aai.dfn.de/en/join/</mdrpi:RegistrationPolicy> <mdrpi:RegistrationPolicy xml:lang="de">https://www.aai.dfn.de/teilnahme/</mdrpi:RegistrationPolicy> </mdrpi:RegistrationInfo> <mdattr:EntityAttributes> <saml:Attribute Name="http://macedir.org/entity-category" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> <saml:AttributeValue>http://aai.dfn.de/category/bwidm-member</saml:AttributeValue> </saml:Attribute> </mdattr:EntityAttributes> </Extensions>
Hier sehen Sie den Metadatenauszug eines IdP aus den eduGAIN-Metadaten (UK-Föderation), an dem sich Nutzer*innen selbst registrieren können:
- dfn-aai-edugain+idp-metadata.xml
<md:EntityDescriptor entityID="https://indiid.net/idp/shibboleth"> <md:Extensions> <mdrpi:RegistrationInfo registrationAuthority="http://ukfederation.org.uk" registrationInstant="2014-11-07T16:35:40Z"> <mdrpi:RegistrationPolicy xml:lang="en">http://ukfederation.org.uk/doc/mdrps-20130902</mdrpi:RegistrationPolicy> </mdrpi:RegistrationInfo> <mdattr:EntityAttributes> <saml:Attribute Name="http://macedir.org/entity-category" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> <saml:AttributeValue>http://aai.dfn.de/category/public-idp</saml:AttributeValue> </saml:Attribute> <!-- ... ---> </mdattr:EntityAttributes> </md:Extensions>
Beispiele (Filter)
SP-seitiger Include-Filter, bei der die Metadaten, mit denen der SP arbeitet, auf IdPs aus dem bwIDM-Projekt beschränkt werden:
- shibboleth2.xml
<MetadataProvider type="XML" uri="http://www.aai.dfn.de/metadata/dfn-aai-idp-metadata.xml" backingFilePath="dfn-aai-idp-metadata.xml" reloadInterval="3600"> <MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.pem" /> <MetadataFilter type="Include" matcher="EntityAttributes"> <saml:Attribute Name="http://macedir.org/entity-category" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> <saml:AttributeValue>http://aai.dfn.de/category/bwidm-member</saml:AttributeValue> </saml:Attribute> </MetadataFilter> </MetadataProvider>
SP-seitiger Exclude-Filter, bei der aus den Metadaten, mit denen der SP arbeitet, sog. Public IdPs / Self-Signup IdPs entfernt werden:
- shibboleth2.xml
<MetadataProvider type="XML" uri="http://www.aai.dfn.de/metadata/dfn-aai-edugain+idp-metadata.xml" backingFilePath="dfn-aai-edugain+idp-metadata.xml" reloadInterval="3600"> <MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.pem" /> <MetadataFilter type="Exclude" matcher="EntityAttributes"> <saml:Attribute Name="http://macedir.org/entity-category" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> <saml:AttributeValue>http://aai.dfn.de/category/public-idp</saml:AttributeValue> </saml:Attribute> </MetadataFilter> <MetadataFilter type="EntityRole"> <RetainedRole>md:IDPSSODescriptor</RetainedRole> </MetadataFilter> </MetadataProvider>
IdP: Attributfreigabe an bwIDM-SPs:
- attribute-filter.xml
<AttributeFilterPolicy id="BwIdm"> <PolicyRequirementRule xsi:type="EntityAttributeExactMatch" attributeName="http://macedir.org/entity-category" attributeValue="http://aai.dfn.de/category/bwidm-member" /> <AttributeRule attributeID="bwidmOrgId" permitAny="true"/> <AttributeRule attributeID="mail" permitAny="true"/> <AttributeRule attributeID="givenName" permitAny="true"/> <AttributeRule attributeID="sn" permitAny="true"/> <AttributeRule attributeID="o" permitAny="true"/> <AttributeRule attributeID="uid" permitAny="true"/> <AttributeRule attributeID="eduPersonPrincipalName" permitAny="true"/> <AttributeRule attributeID="eduPersonScopedAffiliation" permitAny="true"/> <AttributeRule attributeID="eduPersonEntitlement"> <PermitValueRule xsi:type="ValueRegex" regex="^http://bwidm\.de/entitlement/.*$" /> </AttributeRule> </AttributeFilterPolicy>
IdP: Attributfreigabe an SPs des Meta-Videoportal unterrichtsvideos.net:
(siehe hierzu auch unter https://unterrichtsvideos.net/metaportal/faq#IDP_Infos)
- attribute-filter.xml
<AttributeFilterPolicy id="metavideoportal-member"> <PolicyRequirementRule xsi:type="EntityAttributeExactMatch" attributeName="http://macedir.org/entity-category" attributeValue="http://aai.dfn.de/category/metavideoportal-member" /> <AttributeRule attributeID="eduPersonPrincipalName" permitAny="true"/> <AttributeRule attributeID="samlSubjectID" permitAny="true"/> <AttributeRule attributeID="displayName" permitAny="true"/> <AttributeRule attributeID="givenName" permitAny="true"/> <AttributeRule attributeID="sn" permitAny="true"/> <AttributeRule attributeID="mail" permitAny="true"/> <AttributeRule attributeID="eduPersonAssurance" permitAny="true"/> <!-- Optional, if available, for resource authorization --> <AttributeRule attributeID="dfnEduPersonFinalDegree" permitAny="true"/> </AttributeFilterPolicy>
IdP: Freigabe der subject-id an SPs für FID-Lizenzen:
Es ist nur die Freigabe einer subject-id ODER einer eduPersonUniqueId notwendig
(siehe hierzu auch unter https://www.fid-lizenzen.de/zusammenarbeit-fid-kfl)
- attribute-filter.xml
<AttributeFilterPolicy id="fid-licences"> <PolicyRequirementRule xsi:type="EntityAttributeExactMatch" attributeName="http://macedir.org/entity-category" attributeValue="http://aai.dfn.de/category/fid-licences-member" /> <AttributeRule attributeID="samlSubjectID" permitAny="true"/> </AttributeFilterPolicy>
IdP: Freigabe der eduPersonUnique-id an SPs für FID-Lizenzen:
Es ist nur die Freigabe einer eduPersonUniqueId ODER einer subject-id notwendig
(siehe hierzu auch unter https://www.fid-lizenzen.de/zusammenarbeit-fid-kfl)
- attribute-filter.xml
<AttributeFilterPolicy id="fid-licences"> <PolicyRequirementRule xsi:type="EntityAttributeExactMatch" attributeName="http://macedir.org/entity-category" attributeValue="http://aai.dfn.de/category/fid-licences-member" /> <AttributeRule attributeID="eduPersonUniqueId" permitAny="true"/> </AttributeFilterPolicy>
Weitere Beispiele unter Attribut-Konfiguration.
Referenzen
Weiterführende Informationen finden Sie im Shibboleth Wiki unter folgenden Links:
- IdP - Attributfreigabe
- IdP - Relying Party Konfiguration
- IdP - internes Tagging mit Entity Attributen
- SP - Metadata Filter (matcher=„EntityAttributes“)
- SP - internes Tagging mit Entity Attributen