Attribute anfordern und transformieren

Auf dieser Seite finden Sie Informationen dazu, wie Sie Attribute anfordern und mit Ihrem Shibboleth ServiceProvider Modul für die zu schützenden Anwendungen anpassen können.
- Mit dem ServiceProvider einer Entity Category beitreten
- Attribute über Metadaten des ServiceProvides anfordern
- pairwise-id anfordern
- Attribute transformieren
Mit dem ServiceProvider einer Entity Category beitreten
Damit ein lokaler ServiceProvider von den standardmäßig freigegebenen Attributen aus IDM.nrw (wird in neuem Tab geöffnet) konsumieren kann, muss er der Entity Category https://sso.rwth-aachen.de/category/rwth angehören.
Dazu muss in den Metadaten des ServiceProviders im Bereich der <Extensions> folgendes Eingetragen sein:
<md:Extensions xmlns:alg="urn:oasis:names:tc:SAML:metadata:algsupport"><!-- ... --> <mdattr:EntityAttributes> <saml:Attribute Name="http://macedir.org/entity-category" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> <saml:AttributeValue>https://sso.rwth-aachen.de/category/rwth</saml:AttributeValue> </saml:Attribute> </mdattr:EntityAttributes></md:Extensions> |
Attribute über Metadaten des ServiceProvides anfordern
Wenn der ServiceProvider nun eines der von IDM.nrw (wird in neuem Tab geöffnet) zur allgemeinen Freigabe empfohlenen Attribute nutzen will, so muss seine Konfiguration im <SPSSODescriptor></<SPSSODescriptor> folgendes umfassen:
|
Wenn der ServiceProvider die pairwise-id benötigt, muss die Metadata Extensions angepasst werden:
|
Möchte man auf der ServiceProvider-Seite ein Attribut den eigenen Bedürfnissen anpassen, so kann man das durch den "TransformAttributeResolve (wird in neuem Tab geöffnet)r" machen.
Das "Transform" verwendet die Shared Library plugins.so (wird in neuem Tab geöffnet). Daher muss in der /etc/shibboleth/shibboleth2.xml ein weiterer Eintrag hinzugefügt werden:
|
Beispiel: DisplayName in Vorname und Nachname splitten
Dazu wird in der Datei /etc/shibboleth/shibboleth2.xml ein entsprechender Resolver konfiguriert:
|
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":
|
ODER
|
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:
|
Hiermit wird in $1 das alte Entitlement in "entitlement" gespeichert. In $2 wäre die orgID verfügbar.
