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ültiger, eindeutiger Identifier erforderlich, z.B. eduPersonPrincipalName, eMail-Adresse oder 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.

/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[
        // Java 7:
        //importPackage(Packages.org.apache.commons.codec.digest);
        // Java 8:
        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 dazu
        eduPersonUniqueId.getValues().add(localpart + "@%{idp.scope}");     
        ]]>
    </Script>
</AttributeDefinition>
  • Zuletzt geändert: vor 5 Monaten