====== Attribute Authority ====== Bei Attribute Authorities handelt es sich um externe Attributquellen, anhand derer ein Service Provider zusätzliche, i.d.R. projektspezifische Nutzerdaten abrufen kann, die nicht von der Heimateinrichtung gepflegt werden (sollen). In der Regel geht es hierbei um Projekt- oder Infrastruktur-spezifische Berechtigungen (Entitlements), die vom Projekt bzw. der Forschungsinfrastruktur festgelegt und gepflegt werden. Grundsätzlich kann auch die hinter dem jeweiligen SP liegende Anwendung eine entsprechende Datenbank anbinden. Falls die betreffende Anwendung dies nicht von Haus aus unterstützt oder die Betreiber den damit verbundenen Aufwand vermeiden wollen, ist es einfacher, dem SP die Aufgabe der Sammlung der Autorisierungsdaten zu übertragen - der diese standardkonform (SAML2) wahrnimmt, indem er Attribute Queries an eine oder mehrere Attribute Authorities richtet. Technisch gesehen handelt es sich bei einer Attribute Authority um einen üblicherweise funktionsreduzierten IdP, der als einziges Profil Attribute Queries unterstützen muss. Hierzu ist es erforderlich, dass der IdP der Heimateinrichtung ein Attribut liefert (z.B. E-Mail, eduPersonPrincipialName, eduPersonUniqueId, Subject-Id), das den / die jeweilige(n) Nutzer(in) eindeutig identifiziert und anhand dessen die Attribute Query bei einer oder mehreren Attribute Authorities erfolgt. Weiterführende Informationen finden Sie unter: * [[https://download.aai.dfn.de/publikationen/dfn-mitteilungen/DFN-Mitteilungen-87.pdf|"Mit verteilten Rollen: Attribute Authorities in der DFN-AAI"]] (Gerrit Gragert + Wolfgang Pempe in: DFN-Mitteilungen 87) * [[de:shibidp:config-deprovisionierung|User Deprovisionierung via Attribute Query]] ===== Shibboleth IdP als Stand-alone Attribute Authority ===== ==== Metadaten ==== Im Gegensatz zu einem 'normalen' IdP wird der '''' nicht benötigt, relevant ist lediglich der ''''. In der DFN-AAI Metadatenverwaltung werden Attribute Authorities als eigener Entity-Typ unterstützt. ==== Relying Party Konfiguration ==== Einzig benötigtes Profil ist Attribute Query. Dieses darf nur für berechtigte SPs freigegeben werden. **Beispiel:** ==== Attribute Resolver ==== Ein anfragender SP verwendet ein Attribut, anhand dessen ein*e Nutzer*in eindeutig identifiziert werden kann. Der SP verlangt vom Heimat-IdP z.B. das Attribut ''eduPersonUniqueId'' oder ''Subject-Id'' und richtet mit diesem Attribut als Identifier eine Attribute Query gegen die Attribute Authority. Der IdP muss in der Lage sein, dieses Attribut aufzulösen, d.h. auf einen "Principal" abzubilden (siehe dazu weiter unten, c14n) und die für dieses Identität hinterlegten Attribute abzurufen und an den anfragenden SP zu senden. Hierbei handelt es sich i.d.R. um eduPersonEntitlement mit Community-spezifischen Werten. Diese Informationen werden meistens in einer SQL-Datenbank abgelegt und von hierzu berechtigten Angehörigen der betreffenden Forschungscommunity gepflegt. Im Attribute Resolver sieht dies dann ungefähr wie folgt aus: shibboleth.MySQLDataSource ==== Subject Canonicalization (c14n) ==== Wie oben bereits erwähnt, muss das zum Zweck einer Attribute Query verwendete Attribut vom IdP als Identifier definiert sein, da ansonsten ein Attribute Resolving nicht möglich ist. Die betreffenden Angaben werden in der folgenden Konfigurationsdatei gemacht. Wir ergänzen hier nur den URN für die SAML2 ''Subject-Id''. urn:oasis:names:tc:SAML:attribute:subject-id urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos https://trusted-sp1.example.org/shibboleth https://trusted-sp2.example.org/shibboleth ===== Konfiguration am Shibboleth SP ===== Damit ein Shibboleth SP Attribute Queries gegen eine bestimmte Attribute Authority ausführt, muss in der Konfiguration das Element '''' gesetzt werden: https://trusted-attribute-authority.example.org/idp/shibboleth Über eine SP-seitige Attribute Filter Policy lässt sich festlegen, dass (z.B.) eduPersonEntitlement nur von der gewünschten Attribute Authority akzeptiert wird - und nicht von irgendwelchen anderen IdPs: \\ **Alte Syntax:** **Neue Syntax:** {{tag>idp4 sp attribute-authority}}