Dies ist eine alte Version des Dokuments!


Activation Conditions

Was ist das:
Bedingungen an Hand derer man verschiedene Aktionen und Abläufe am IdP beeinflussen bzw. steuern kann.

Beispiele für Anwendungsszenarien:

  • Vermeidung unnötiger LDAP-Abfragen / Einschränkung Attribute-Resolver
  • Freigabe von Attributen an bestimmte Verlässlichkeitsklassen / Föderationen
  • Filterung von Attributen je nach SP

In das Installationsverzeichnis wechseln.
Neue Config-File samt Conditions anlegen.

conf/activation-conditions.xml
<!-- ... -->
	<bean id="SP-consumes-persistentId" parent="shibboleth.Conditions.RelyingPartyId">
		<constructor-arg name="candidates">
			<list>
				<value>https://your.sp.de/shibboleth</value>
				<value>https://testsp2.aai.dfn.de/shibboleth</value>
			</list>
		</constructor-arg>
	</bean>
 
	<bean id="SP-is-in-DFNAAI-Basic" parent="shibboleth.Conditions.EntityDescriptor">
		<constructor-arg name="pred">
			<bean class="org.opensaml.saml.common.profile.logic.EntityGroupNamePredicate">
				<constructor-arg>
					<list>
						<value>https://www.aai.dfn.de/DFN-AAI-Basic</value>
					</list>
				</constructor-arg>
			</bean>
		</constructor-arg>
	</bean>
<!-- ... -->

Config-File überall einbinden, wo Conditions genutzt werden sollen.

conf/services.xml
<!-- ... -->
	<util:list id="shibboleth.RelyingPartyResolverResources">
		...
		<value>%{idp.home}/conf/activation-conditions.xml</value>
	</util:list>
 
	<util:list id ="shibboleth.AttributeResolverResources">
		...
		<value>%{idp.home}/conf/activation-conditions.xml</value>
	</util:list>
<!-- ... -->

Aktivierung der Conditions.

conf/relying-party.xml
<!-- ... -->
	<util:list id="shibboleth.RelyingPartyOverrides">
		<bean parent="RelyingParty" p:activationCondition-ref="SP-consumes-persistentId">
			<property name="profileConfigurations">
				<list>
					<bean parent="SAML2.SSO" p:postAuthenticationFlows="attribute-release" p:nameIDFormatPrecedence="#{{'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient'}}" />
					<ref bean="SAML2.Logout" />
					<ref bean="SAML2.AttributeQuery" />
					<ref bean="SAML2.ArtifactResolution" />
				</list>
			</property>
		</bean>
	</util:list>
<!-- ... -->
conf/attribute-resolver.xml
<!-- ... -->
	<AttributeDefinition xsi:type="Simple" id="isMemberOf" sourceAttributeID="cn" activationConditionRef="SP-is-in-DFNAAI-Basic">
		<Dependency ref="groupLDAP" />
		<DisplayName xml:lang="de">Gruppe</DisplayName>
		<DisplayName xml:lang="en">Group</DisplayName>
		<DisplayDescription xml:lang="de">Name der Gruppe zu der der Nutzer gehört</DisplayDescription>
		<DisplayDescription xml:lang="en">Name of group with which the person is associated</DisplayDescription>
		<AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:isMemberOf" />
		<AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.5.1.1" friendlyName="isMemberOf" />
	</AttributeDefinition>
<!-- ... -->

Wenn conf/activation-conditions.xml noch nicht existiert hat, muss der Tomcat neugestartet werden, damit die services.xml neu eingelesen wird.
Ansonsten genügt es bei Erweiterung um neue Conditions den jeweiligen Service neu zu laden.

Links / Dokumentation:
https://wiki.shibboleth.net/confluence/display/IDP30/ActivationConditions
https://wiki.shibboleth.net/confluence/display/IDP30/ExternalAttributePluginActivationConditions
https://wiki.shibboleth.net/confluence/display/IDP30/RegistrationAuthorityConfiguration
https://wiki.shibboleth.net/confluence/display/IDP30/InEntityGroupConfiguration
https://wiki.shibboleth.net/confluence/display/IDP30/ReloadableServices

  • Zuletzt geändert: vor 23 Monaten