Sie befinden sich im Service: Identity Management

Attribute verändern/transformieren

Attribute verändern/transformieren

Kurzinformation

Möchte man auf Service Provider Seite ein Attribut den eigenen Bedürfnissen anpassen, so kann man das durch den "TransformAttributeResolver" machen.

Das "Transform" verwendet die Shared Library plugins.so. Daher muss in der /etc/shibboleth/shibboleth2.xml ein weiterer Eintrag hinzugefügt werden:

<OutOfProcess logger="shibd.logger">

  <Extensions>

    <Library path="plugins.so"/>

  </Extensions>

</OutOfProcess>


Detailinformation

Beispiel: DisplayName in Vorname und Nachname splitten

Dazu wird in der Datei /etc/shibboleth/shibboleth2.xml ein entsprechender Resolver konfiguriert:

<AttributeResolver type="Transform" source="displayName">

    <Regex match="^(.+) (.+)$" dest="givenName">$1</Regex>

    <Regex match="^(.+) (.+)$" dest="sn">$2</Regex>

    <Regex match="^(.+) (.+)$">$2, $1</Regex>

</AttributeResolver>

Hier wird zum einen das Attribute "displayName" in zwei zusätzliche Attribute, namentlich "givenName" und "sn", aufgesplittet und zum anderen beim Displayname das Format "Nachname, Vorname" erzwungen. Dazu wird zunächst ein Regex definiert (hier: zwei RegEx Gruppen) und die Matches entsprechend extrahiert.

Beispiel: eduPersonTargetedID extrahieren

Ein anderes Beispiel ist das Attribut "eduPersonTargetedID":

<AttributeResolver type="Transform" source="persistent-id>

    <Regex match="^https://login.rz.rwth-aachen.de/shibboleth\!https://mein.sp/shibboleth\!(.+)$" dest="uniqueID">$1</Regex>

</AttributeResolver>

ODER

<AttributeResolver type="Transform" source="persistent-id">

    <Regex match="^(.+)!(.+)!(.+)$" dest="uniqueID">$3</Regex>

</AttributeResolver>

Bei beiden Beispielen wird der 64 Zeichen String aus der eduPersonTargetedID extrahiert, um diese dann in das Feld "uniqueID" zu schreiben.

Bei dem unteren Beispiel wäre

  • $1 der IdP, der die eduPersonTargetedID herausgibt
  • $2 der SP, der die eduPersonTargetedID konsumiert
  • $3 die 64 Zeichen lange, pro SP eindeutige, ID

Beispiel: Entfernen eines Teilstrings (hier orgID aus den eduPersonEntitlements wie z. B. dem Rollenstring)

Möchte man einen Teil des gelieferten Strings entfernen, weil die Anwendung damit nicht umgehen kann, so kann man das Attribut wie folgt transformieren:

<AttributeResolver type="Transform" source="eduPersonEntitlement">

    <Regex match="^(.+):(orgid=.+)$" dest="entitlement">$1</Regex>

</AttributeResolver>

Hiermit wird in $1 das alte Entitlement in "entitlement" gespeichert. In $2 wäre die orgID verfügbar.

zuletzt geändert am 29.01.2021

Wie hat Ihnen dieser Inhalt geholfen?