Für den Workshop benötigen wir die nachfolgend beschriebene Schulungs-VM.
Informationen zur Schulungs-VM
Für den Workshop stellen wir eine Schulungs-VM zur Verfügung. Installieren Sie diese bitte vorab und machen sich mit der VM vertraut. Als Virtualisierungssoftware empfehlen wir VirtualBox in der neuesten Version.
Import des heruntergeladenen .ova-Images in Virtualbox: Datei -> Appliance importieren. Im BIOS muss Hardware-Virtualisierung angeschaltet sein.
Für ein Copy & Paste ohne Gasterweiterungen können Sie diese Installationsanleitung selbstverständlich auch im Browser in der VM abrufen. Dazu finden Sie im Firefox ein Lesezeichen in der Leiste.
Betriebssystem der Schulungs-VM: Debian 12
Die Nutzerkennung lautet "shibboleth". Alle Passwörter lauten ebenfalls "shibboleth".
Auf der VM befindet sich ein LDAP-Browser (phpLDAPadmin), der im Web-Browser (Firefox) als Lesezeichen gesetzt ist. Im Verzeichnis finden Sie sechs Test-Accounts mit verschiedenen Attributen.
Zum besseren Verständnis des lokalen Setups (idp/sp1) hilft ein Blick in /etc/hosts und die Apache-Konfiguration unter /etc/apache2/sites-enabled.
Die wichtigsten vorinstallierten Pakete sind Web-, Datenbank- und LDAP-Server:
Verschaffen Sie sich einen Überblick über Attribut-Definitionen und DataConnectors.
Welche Attribute-Definitionen und DataConnectors sind vorhanden?
Überblick anzeigen
Attribute-Definitions
Attribute ID
xsi:type
ref
uid
simple
myLDAP
eduPersonAffiliation
simple
myLDAP
eduPersonScopedAffiliation
scoped
myLDAP
eduPersonEntitlement
scriptedAttribute
samlPairwiseID
scoped
StoredId
eduPersonTargetedID
saml2NameID
StoredId
Data Connectors
DataConnector ID
xsi:type
Attribute
staticAttributes
static
schacHomeOrganisation, o
StoredId
StoredID
persistentID
myLDAP
LDAPDirectory
givenName,sn,mail,displayName
Attribute Registry
Welche Schemata und Claims sind bereits definiert?
default-rules.xml
inetorgPerson
eduPerson
eduCourse
schac
samlSubject
dfnEduPerson
dfnMisc
Überblick relying-party
Die Datei relying-party.xml definiert, welche Protokolle/Profiles ein IdP anbietet und erlaubt maßgeschneiderte Einstellungen für verschiedene SPs.
Zu unterscheiden sind die drei Beans:
shibboleth.UnverifiedRelyingParty
shibboleth.DefaultRelyingParty
shibboleth.RelyingPartyOverrides
Verschaffen Sie sich einen Überblick über die vorhandenen Inhalte dieser Beans.
Überblick anzeigen
shibboleth.unverifiedRelyingParty
Profile
Aktiv
Post-Auth-Flows
NameID-Format-Priorität
Besonderheiten
SAML2.SSO
nein
-
-
Auskommentiert, deaktiviert
shibboleth.defaultRelyingParty
Profile
Aktiv
Post-Auth-Flows
NameID-Format-Priorität
Besonderheiten
SAML2.SSO
ja
attribute-release
persistent,transient
Hauptprofile mit Attributfreigabe
SAML2.ECP
ja
-
-
Enhanced Client/Proxy für Web-Services
SAML2.Logout
ja
-
-
Single Logout
SAML2.Attribute.Query
nein
-
-
Auskommentiert, deaktiviert
SAML2.ArtifactResolution
ja
-
-
Artifact-Auflösung aktiv
Überblick Attribute-Filter
Welche Filter-Regeln sind vorhanden?
Überblick anzeigen
Policy-ID
PolicyRequirementRule
RP/Scope
Betroffene Attribute
Auswirkung
alwaysRelease
ANY
Alle SPs
schacHomeOrganzation
Vollständige Freigabe von schacHomeOrganization (permitAny=“true”)
SPs_locals
Requester=“https://sp1.local/shibboleth”
Lokaler SP1
eduPersonScopeAffiliation
sn
givenName
mail
uid
eduPersonTargetedId
Vollständige Freigabe von 7 Attributen an sp1.local
Loglevel
FÜr die Dauer dieses Workshops wird das Loglevel erhöht:
Welche Attribute werden bei einem Login auf SP1 und SP2 übertragen. Verlassen Sie sich nicht ausschließlich auf die Anzeige im Browser beim User-Consent. Prüfen Sie im Log-File die Assertion.
Dazu suchen Sie in der Log-Datei /opt/shibboleth-idp/logs/idp-process.log nach Assertion before encryption.
Hier finden Sie die vom IdP an den SP übertragenen Attribute, sowie die NameID im Format urn:oasis:names:tc:SAML:2.0:nameid-format:transient.
Definieren Sie eine zusätzliche Filterregel:
Das Attribut eduPersonEntitlement wird immer übergeben, sofern es den Wert urn:mace:dir:entitlement:common-lib-terms (Bibliotheksnutzung) hat.
Das Attribut eduPersonAffiliation soll mit Werten aus dem Attribut ou erzeugt/gemappt werden.
Das Attribut ou ist zwar im LDAP vorhanden, wird aber in der attribute-resolver.xml noch nicht definiert.
Damit Sie ou verwenden können, müssen Sie es definieren.
Orientieren Sie sich bei der Attribute-Definition an der auskommentierten Definition von eduPersonAffiliation
Schritt 3 - Mapping ou zu eduPersonAffiliation
Informieren Sie sich im DFN-Wiki über das Attribut eduPersonAffiliation und die in Frage kommenden Werte dieses Attributs.
Sie werden feststellen, dass diese Werte nicht aus dem LDAP kommen.
Finden Sie ein geeignetes Mapping von ou auf eduPersonAffiliation
Nachfolgend finden Sie die Tabelle mit dem Mapping.
Tabelle Zuordnung ou-->eduPersonAffiliation
Gruppe
ou
eduPersonAffiliation
Mitarbeitende
ou=Mitarbeitende
staff
Studierende
ou=Studierende
student
Lehrende
ou=Lehrende
faculty
Gaeste
ou=Gaeste
affiliate
Externe
ou=Externe
Schritt 4 - Attribute-Definition für eduPersonAffiliation vom Type mapped
SP-Verantwortliche deklarieren benötigte Attribute in den Metadaten. Der IdP kann diese Angaben auswerten und bei der Attributfreigabe berücksichtigen.
Aufgabe - Attributregel für Required Attributes
Erweitern Sie die Regeln für die lokalen SPs. Attribute sollen nur übermittelt werden, wenn in den Metadaten die Option isRequired="true gesetzt ist.
Doku zur AttributeFilterPolicyConfiguration im shib-Wiki
(Reference --> XML Attributes)
Überprüfen Sie das Funktionieren des Attribute-Filters durch Anmelden an SP1 und SP2 und finden Sie im Logfile idp-process.log den entsprechenden Abschnitt.
Werfen Sie spätestens jetzt einen Blick in die Metadaten und finden Sie heraus, welche Attribute als required angegeben sind.
Ausszug Log-File
DEBUG [net.shibboleth.idp.attribute.filter.AttributeFilterPolicy:121] - Attribute Filter Policy 'SPs_locals' Policy is active for this request
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeFilterPolicy:147] - Attribute Filter Policy 'SPs_locals' Applying attribute filter policy to current set
of attributes: [samlPairwiseID, eduPersonTargetedID, uid, schacHomeOrganization, eduPersonAffiliation, displayName, mail, givenName, sn, eduPersonScopedAffiliation, ou, eduPersonEntitlement]
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:149] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_2ff8039f7e80cb06831fd6f1e22f0057' Filtering values for attribute 'eduPersonScopedAffiliation' which currently contains 2 values
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:158] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_2ff8039f7e80cb06831fd6f1e22f0057' Filter has permitted the release of 0 values for attribute 'eduPersonScopedAffiliation'
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:149] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_5ddfcfda315c39b57fb5c0ac7ad2e305' Filtering values for attribute 'sn' which currently contains 1 values
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:158] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_5ddfcfda315c39b57fb5c0ac7ad2e305' Filter has permitted the release of 0 values for attribute 'sn'
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:149] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_b12f98cfafad8042bb7bec5f48db391e' Filtering values for attribute 'givenName' which currently contains 1 values
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:158] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_b12f98cfafad8042bb7bec5f48db391e' Filter has permitted the release of 0 values for attribute 'givenName'
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:149] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_fbab53fc0d7b3ae8f5cb363bfa95b163' Filtering values for attribute 'mail' which currently contains 1 values
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.matcher.saml.impl.AttributeInMetadataMatcher:251] - Attribute Filter '/AttributeFilterPolicyGroup:ShibbolethFilter
Policy/PermitValueRule:_c1d683e60e9688f9615a2363ce4495ee': Decoded attribute mail found in metadata, but not required, values not matched
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:158] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_fbab53fc0d7b3ae8f5cb363bfa95b163' Filter has permitted the release of 0 values for attribute 'mail'
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:149] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_296bbf7260984e737d4de241431ca9d8' Filtering values for attribute 'uid' which currently contains 1 values
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:158] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_296bbf7260984e737d4de241431ca9d8' Filter has permitted the release of 0 values for attribute 'uid'
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:149] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_bc136f4b41b15ca2b0f3ac8aab50408c' Filtering values for attribute 'eduPersonEntitlement' which currently contains 3 values
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:158] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_bc136f4b41b15ca2b0f3ac8aab50408c' Filter has permitted the release of 0 values for attribute 'eduPersonEntitlement'
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:149] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_f2f91f8b94cf5d064727790386ac67a4' Filtering values for attribute 'eduPersonTargetedID' which currently contains 1 values
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.matcher.saml.impl.AttributeInMetadataMatcher:345] - Attribute Filter '/AttributeFilterPolicyGroup:ShibbolethFilter
Policy/PermitValueRule:_133becbc1f27481810569b769210a3c4': Attribute eduPersonTargetedID found in metadata and no values specified
127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.filter.AttributeRule:158] - Attribute filtering engine '/AttributeFilterPolicyGroup:ShibbolethFilterPolicy/AttributeRule:
_f2f91f8b94cf5d064727790386ac67a4' Filter has permitted the release of 1 values for attribute 'eduPersonTargetedID'
Definieren Sie das Attribut eduPersonAssurance nach folgenden Kriterien und legen Sie eine Filter-Regel an
Aufgabe eduPersonAssurance
Signalisieren Sie die grundsätzliche Konformität mit dem REFEDS Assurance Framework und mit Version 2 des REFEDS Assurance Frameworks
Die Prozesse zur Aktualisierung der Nutzendendaten und zur Deprovisionierung sind einheitlich für alle Nutzenden & die Aktualisierung erfolgt innerhalb eines Monats
Die Anforderungen bezüglich Identifier Uniqueness (UN-0 bis UN-3) werden erfüllt
eduPersonAssurance enthält keine personenbezogenen Daten und soll deshalb an alle SP übertragen werden
Herangehensweise attribute-resolver.xml
Erweitern des statischen <DataConnector>
Das Attribut eduPersonAssurance wird ist multi-valued mit folgenden Werten:
https://refeds.org/assurance
https://refeds.org/assurance/version/2
https://refeds.org/assurance/ATP/ePA-1m
https://refeds.org/assurance/ID/unique
<AttributeDefinition> referenziert auf <DataConnector>
Im Template kommen die Rule Types Requester und ANY zum Einsatz.
Weitere Rule Types werden hier erläutert:
weitere Rule Types
Zur Lösungsfindung helfen Ihnen folgende Fragen:
PolicyRequirementRule
Wann ist die Regel wahr?
Antwort: immer (Finden Sie den passenden Rule Type)
AttributeRule
PermitValueRule oder DenyValueRule
Welches Attribut soll berücksichtigt werden?
Antwort: Attribut mit der ID eduPersonAssurance
Welche Werte dürfen weiter gegeben werden?
Antwort: alle
Lösung attribute-filter.xml
Attribute-Filter
<!--/opt/shibboleth-idp/conf/attribute-filter.xml -->
<!-- Verlässlichkeitsinformationen sind nicht personenbeziehbar
und sollten grundsätzlich an jeden SP übertragen werden -->
<AttributeFilterPolicy id="ReleaseAssuranceToAnyone">
<PolicyRequirementRule xsi:type="ANY" />
<AttributeRule attributeID="eduPersonAssurance" permitAny="true" />
</AttributeFilterPolicy>
Aufgabe Anbindung des IdP an das DFN edu-ID System
Richten Sie auf dem IdP die Unterstützung für edu-ID ein.
Der Test kann auf SP2 durchgeführt werden. Laut Metadaten nimmt dieser SP bereits an edu-ID teil.
Herangehensweise
Stellen Sie fest, welche Attribute benötigt werden und erweitern Sie ggf. die Attribut-Definitionen.
Attribut-Bundle
obligatorisch, sofern vorhanden, sind folgende Attribute:
eduPersonAffiliation
samlPairwiseID
givenName
sn
mail
schacHomeOrganisation
eduPersonAssurance
optional sind weitere Attribute:
displayName
schacPlaceOfBirth
schacDateOfBirth
eduPersonEntitlement
eduPersonOrcid
l
o
potstalCode
schacCountryOfResidence
schacPersonalUniqueCode
street
Für die neu zu erstellende Filterregel können Sie folgendes Template verwenden:
<!-- Policy gilt nur für Entitäten mit bestimmtem Entity-Category-Attribut -->
<AttributeFilterPolicy id="examplePolicy">
<PolicyRequirementRule xsi:type="EntityAttributeExactMatch"
attributeName="http://macedir.org/entity-category"
attributeValue="http://example.org/category/example-category"/>
<!-- Attribute und deren Freigaben -->
<AttributeRule attributeID="attribute1" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="attribute2" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="false"/>
</AttributeRule>
</AttributeFilterPolicy>