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 [2020/04/16 14:01] 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 müssen häufig dienstspezifische Zugangsberechtigungen für Einzelpersonen oder Personengruppen vergeben werden. Solche Informationen können und sollen üblicherweise nicht im Identity Management System der jeweiligen Heimateinrichtung gepflegt werden. In diesen Fällen verwaltet man eine weitere Attributquelle, die //zusätzlich// zum IdP bei der Autorisierung an SP befragt wird: eine Attribute Authority.+Die ''eduPersonUniqueId'' ist ein eindeutigerpseudonymer Identifier (siehe die [[http://macedir.org/specs/internet2-mace-dir-eduperson-201310.html#eduPersonUniqueId|Spezifikation]]).
  
-Attribute Authorities verwalten community- bzw. projektspezifische Attribute. Über einen global gültigen, eindeutigen Identifier findet ein Mapping statt zwischen diesen Attribute und dem Account der bei einer Heimateinrichtung angemeldeten Person. Dazu können z.B. ''eduPersonPrincipalName'', ''mail'' oder [[http://macedir.org/specs/internet2-mace-dir-eduperson-201310.html#eduPersonUniqueId|''eduPersonUniqueId'']] verwendet werden.+Ein Einsatzszenario für die eduPersonUniqueId ist das Mapping zwischen IdPs und Attribute Authorities.
  
-Die ''eduPersonUniqueId'' hat den Vorteildass es sich um einen pseudonymen Identifier handeltVon SP-Seite aus kann nicht auf die dahinter liegende Identität rückgeschlossen werden.+<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 gepflegtsondern in eine weiteren Attributquelleeiner Attribute Authority. Attribute Authorities werden meist von den Projekten selbst betrieben. Sie verwalten nur communitybzw. 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">
Zeile 16: 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");
- 
         // 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}");     
         ]]>         ]]>
Zeile 34: Zeile 35:
 </file> </file>
  
-{{tag>idp3}}+===== Neu installierter IdP 4.x (mit Attribute Registry) ===== 
 + 
 +<callout color="#ff9900" title="Best Practice"> 
 +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> 
 + 
 +Alternativ können Sie auch einen ähnlichen Weg wie oben gehen. Damit 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. 
 + 
 +<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> 
 + 
 +{{tag>idp4}}
  • Zuletzt geändert: vor 4 Jahren