Dies ist eine alte Version des Dokuments!
eduPersonUniqueId
Die eduPersonUniqueId
ist ein eindeutiger, pseudonymer Identifier (siehe die Spezifikation).
Ein Einsatzszenario für die eduPersonUniqueId ist das Mapping zwischen IdPs und Attribute Authorities.
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.
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 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)
- /opt/shibboleth-idp/conf/attribute-resolver.xml
<AttributeDefinition xsi:type="ScriptedAttribute" id="eduPersonUniqueId"> <InputAttributeDefinition ref="uid" /> <DisplayName xml:lang="en">Unique ID</DisplayName> <DisplayName xml:lang="de">Eindeutige ID</DisplayName> <DisplayDescription xml:lang="en">Unique ID: A unique identifier for a person, mainly for inter-institutional user identification</DisplayDescription> <DisplayDescription xml:lang="de">Eindeutige Nutzerkennung</DisplayDescription> <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.13" friendlyName="eduPersonUniqueId" /> <Script><![CDATA[ DigestUtils = Java.type("org.apache.commons.codec.digest.DigestUtils"); // unique value erzeugen uniqueValue = uid.getValues().get(0) + "SALT_MIN_48_CHARS"; // md5 value erzeugen localpart = DigestUtils.md5Hex(uniqueValue); // Scope anhängen eduPersonUniqueId.getValues().add(localpart + "@%{idp.scope}"); ]]> </Script> </AttributeDefinition>
Neu installierter IdP 4.x (mit Attribute Registry)
- /opt/shibboleth-idp/conf/attribute-resolver.xml
<AttributeDefinition xsi:type="ScriptedAttribute" id="eduPersonUniqueId"> <InputAttributeDefinition ref="uid" /> <Script><![CDATA[ DigestUtils = Java.type("org.apache.commons.codec.digest.DigestUtils"); // unique value erzeugen uniqueValue = uid.getValues().get(0) + "SALT_MIN_48_CHARS"; // md5 value erzeugen localpart = DigestUtils.md5Hex(uniqueValue); // Scope anhängen eduPersonUniqueId.getValues().add(localpart + "@%{idp.scope}"); ]]> </Script> </AttributeDefinition>