Dies ist eine alte Version des Dokuments!


eduPersonUniqueId: Ein eindeutiger, pseudonymer Identifier

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.

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 eduPersonUniqueId verwendet werden.

Die eduPersonUniqueId hat den Vorteil, dass es sich um einen pseudonymen Identifier handelt: Von SP-Seite aus kann nicht auf die dahinter liegende Identität rückgeschlossen werden.

/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>
/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>
  • Zuletzt geändert: vor 4 Jahren