Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:shibidp3attributes-uniqueid [2019/04/02 09:07] Silke Meyerde:shibidp:config-attributes-edupersonuniqueid [2021/08/12 14:14] (aktuell) Wolfgang Pempe
Zeile 1: Zeile 1:
-===== Eindeutiger, pseudonymer Identifier - eduPersonUniqueId =====+=====eduPersonUniqueId ======
  
-Im Kontext von Forschungsprojekten/-Infrastrukturen und Fachinformationsdiensten besteht häufig das Bedürfnis, dienstspezifische Zugangsberechtigungen (Entitlements) für einzelne Personen oder Personengruppen zu vergeben. Da solche Informationen üblicherweise nicht im Identity Management System der jeweiligen Heimateinrichtung gepflegt werden können und/oder sollen, müssen zur Autorisierung weitere Attributquellen, sog. Attribute Authorities eingebunden werden, in denen Community- bzw. Projekt-spezifische Attribute verwaltet werden. Um das Mapping zwischen dem/der bei der jeweiligen Heimateinrichtung angemeldeten Nutzer(in) und diesen Attributen herzustellen ist ein global gültigereindeutiger Identifier erforderlich, z.B. eduPersonPrincipalName, eMail-Adresse oder [[http://macedir.org/specs/internet2-mace-dir-eduperson-201310.html#eduPersonUniqueId|eduPersonUniqueId]] (neu, 2013). Das letztgenannte Attribut hat den Vorteil, dass es sich um einen pseudonymen Identifier handelt, d.h. von SP-Seite aus kann nicht auf die dahinter liegende Identität rückgeschlossen werden.+Die ''eduPersonUniqueId'' ist ein eindeutigerpseudonymer Identifier (siehe die [[http://macedir.org/specs/internet2-mace-dir-eduperson-201310.html#eduPersonUniqueId|Spezifikation]]).
  
 +Ein Einsatzszenario für die eduPersonUniqueId ist das Mapping zwischen IdPs und Attribute Authorities.
 +
 +<callout color="#ff9900" title="Attribute Authority?">
 +Im Kontext von Forschungsprojekten/-Infrastrukturen und Fachinformationsdiensten müssen häufig dienstspezifische Zugangsberechtigungen für Einzelpersonen oder einrichtungsübergreifende Personengruppen vergeben werden. Solche Informationen werden i.d.R. nicht in den IdMs der beteiligten Heimateinrichtungen gepflegt, sondern in eine weiteren Attributquelle: einer Attribute Authority. Attribute Authorities werden meist von den Projekten selbst betrieben. Sie verwalten nur community- bzw. projektspezifische Attribute und werden bei der Autorisierung zusätzlich zum IdP befragt.
 +</callout>
 +
 +Die Attribute, die eine Attribut Authority verwaltet, müssen über einen global gültigen, eindeutigen Identifier auf die Accounts der Heimateinrichtungen gemappt werden. Dazu können z.B. ''eduPersonPrincipalName'', ''mail'' oder [[..:start|eduPersonUniqueId]] verwendet werden.
 +
 +Die ''eduPersonUniqueId'' hat den Vorteil, dass sie pseudonym ist: Von SP-Seite aus kann nicht auf die dahinter liegende Identität rückgeschlossen werden.
 +
 +===== Upgegradeter IdP 4.x (ohne Attribute Registry) =====
 <file xml /opt/shibboleth-idp/conf/attribute-resolver.xml> <file xml /opt/shibboleth-idp/conf/attribute-resolver.xml>
 <AttributeDefinition xsi:type="ScriptedAttribute" id="eduPersonUniqueId"> <AttributeDefinition xsi:type="ScriptedAttribute" id="eduPersonUniqueId">
-    <InputDataConnector ref="staticAttributes" attributeNames="eduPersonUniqueId"/> 
     <InputAttributeDefinition ref="uid" />     <InputAttributeDefinition ref="uid" />
     <DisplayName xml:lang="en">Unique ID</DisplayName>     <DisplayName xml:lang="en">Unique ID</DisplayName>
Zeile 13: Zeile 23:
     <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.13" friendlyName="eduPersonUniqueId" />     <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.13" friendlyName="eduPersonUniqueId" />
     <Script><![CDATA[     <Script><![CDATA[
-        // Java 7: 
-        //importPackage(Packages.org.apache.commons.codec.digest); 
-        // Java 8: 
         DigestUtils = Java.type("org.apache.commons.codec.digest.DigestUtils");         DigestUtils = Java.type("org.apache.commons.codec.digest.DigestUtils");
- 
-        // um Java-Versions-unabhängig zu sein wird das SAML-Attribut nicht 
-        // hier im Script initialisiert sondern per Static-Data-Connector 
-        // weiter unten in dieser Datei. 
-        // Der Dummy-Wert von der Initialisierung muss hier nur noch 
-        // gelöscht werden: 
-        eduPersonUniqueId.getValues().clear(); 
-  
         // unique value erzeugen         // unique value erzeugen
         uniqueValue = uid.getValues().get(0) + "SALT_MIN_48_CHARS";         uniqueValue = uid.getValues().get(0) + "SALT_MIN_48_CHARS";
- 
         // md5 value erzeugen         // md5 value erzeugen
         localpart = DigestUtils.md5Hex(uniqueValue);         localpart = DigestUtils.md5Hex(uniqueValue);
-  +        // Scope anhängen
-        // Scope dazu+
         eduPersonUniqueId.getValues().add(localpart + "@%{idp.scope}");              eduPersonUniqueId.getValues().add(localpart + "@%{idp.scope}");     
         ]]>         ]]>
     </Script>     </Script>
 </AttributeDefinition> </AttributeDefinition>
 +</file>
  
-<!-- ... -->+===== Neu installierter IdP 4.x (mit Attribute Registry) =====
  
-<!-- ========================================== --+<callout color="#ff9900" title="Best Practice"
-<!--      Data Connectors                       --> +Wir empfehlen, der [[de:shibidp:config-attributes-aaiplus#idp_4x | hier dokumentierten Best Practice]] zu folgen und zunächst einen subjectHash zu generieren, der dann sowohl für eduPersonUniqueId, als auch für die SAML Subject ID verwendet wird. 
-<!-- ========================================== -->+</callout>
  
-<DataConnector id="staticAttributes" xsi:type="Static"> +Alternativ können Sie auch einen ähnlichen Weg wie oben gehenDamit das Attribut hier von der Attribute Registry verarbeitet werden kann, können Sie so ein neues scoped Attribut erzeugen, das dann von der Registry mit den richtigen Transcoder verarbeitet wird.
-    <!-- ... --> +
-    <!-- kleiner Trick um Java-Versions-unabhängig Attribut-Variablen für +
-         die Scripted-Attribute-Definitionen in dieser Datei zu +
-         initialisieren --> +
-    <Attribute id="eduPersonUniqueId"> +
-        <Value>dummy</Value> +
-    </Attribute> +
-</DataConnector>+
  
 +<file xml /opt/shibboleth-idp/conf/attribute-resolver.xml>
 +<AttributeDefinition id="eduPersonUniqueId" xsi:type="ScriptedAttribute">
 +    <InputAttributeDefinition ref="uid" />
 +    <Script><![CDATA[
 +             var ScopedValue = Java.type("net.shibboleth.idp.attribute.ScopedStringAttributeValue");
 +             var DigestUtils = Java.type("org.apache.commons.codec.digest.DigestUtils");
 +             // unique value erzeugen (do not change salt)
 +             var uniqueValue = uid.getValues().get(0) + "SALT_MIN_48_CHARS";
 +             // md5 value erzeugen
 +             var idSaltHash = DigestUtils.md5Hex(uniqueValue);
 +             // Scope dazu
 +             eduPersonUniqueId.getValues().add(new ScopedValue(idSaltHash, "%{idp.scope}"));
 +             ]]>
 +    </Script>
 +</AttributeDefinition>
 </file> </file>
  
 +{{tag>idp4}}
  • Zuletzt geändert: vor 5 Jahren