| 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 |
<!-- Datei: /opt/shibboleth-idp/conf/attribute-filter.xml -->
<!-- Release home org signifier to everybody. -->
<AttributeFilterPolicy id="alwaysRelease">
<PolicyRequirementRule xsi:type="ANY" />
<AttributeRule attributeID="schacHomeOrganization" permitAny="true" />
</AttributeFilterPolicy>
<!-- Release to local SPs -->
<AttributeFilterPolicy id="SPs_locals">
<PolicyRequirementRule xsi:type="Requester" value="https://sp1.local/shibboleth" />
<AttributeRule attributeID="eduPersonScopedAffiliation" permitAny="true" />
<AttributeRule attributeID="sn" permitAny="true" />
<AttributeRule attributeID="givenName" permitAny="true" />
<AttributeRule attributeID="mail" permitAny="true" />
<AttributeRule attributeID="uid" permitAny="true" />
<AttributeRule attributeID="eduPersonTargetedID" permitAny="true" />
</AttributeFilterPolicy>
<!-- Datei: /opt/shibboleth-idp/conf/relying-party.xml -->
<bean id="shibboleth.UnverifiedRelyingParty" parent="RelyingParty">
<property name="profileConfigurations">
<list>
<!-- <bean parent="SAML2.SSO" p:encryptAssertions="false" /> -->
</list>
</property>
</bean>
<bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty">
<property name="profileConfigurations">
<list>
<!-- SAML 1.1 and SAML 2.0 AttributeQuery are disabled by default. -->
<!--
<ref bean="Shibboleth.SSO" />
<ref bean="SAML1.AttributeQuery" />
<ref bean="SAML1.ArtifactResolution" />
-->
<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.ECP" />
<ref bean="SAML2.Logout" />
<!--
<ref bean="SAML2.AttributeQuery" />
-->
<ref bean="SAML2.ArtifactResolution" />
</list>
</property>
</bean>
<!-- Datei: /opt/shibboleth-idp/conf/logback.xml -->
<variable name="idp.loglevel.idp" value="DEBUG" />
<variable name="idp.loglevel.ldap" value="WARN" />
<variable name="idp.loglevel.messages" value="DEBUG" />
<variable name="idp.loglevel.encryption" value="DEBUG" />
<variable name="idp.loglevel.opensaml" value="INFO" />
<variable name="idp.loglevel.props" value="INFO" />
<variable name="idp.loglevel.httpclient" value="INFO" />
Stoßen Sie das Neuladen des Servlets manuell an:
touch /opt/shibboleth-idp/war/idp.war
Assertion SP1
<!-- Datei: /opt/shibboleth-idp/logs/idp-process.log -->
<?xml version="1.0" encoding="UTF-8"?><saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="_c7ccec23382116735f43f2b7e6abc982" IssueInstant="2026-01-22T10:17:57.778Z" Version="2.0">
<saml2:Issuer>https://idp.local/idp/shibboleth</saml2:Issuer>
<saml2:Subject>
<saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" NameQualifier="https://idp.local/idp/shibboleth" SPNameQualifier="https://sp1.local/shibboleth"xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">LSPX4Z4UJWIXKWFONRF5YUY75YTQ5TL2
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml2:SubjectConfirmationData Address="127.0.0.1" InResponseTo="_e7012caa5fda31c05824f4a2845ad070" NotOnOrAfter="2026-01-22T10:22:57.800Z" Recipient="https://sp1.local/Shibboleth.sso/SAML2/POST"/>
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions NotBefore="2026-01-22T10:17:57.778Z" NotOnOrAfter="2026-01-22T10:22:57.778Z">
<saml2:AudienceRestriction>
<saml2:Audience>https://sp1.local/shibboleth</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement AuthnInstant="2026-01-22T10:17:51.863Z" SessionIndex="_8f9a906bafe493d92cc8707909dc95eb">
<saml2:SubjectLocality Address="127.0.0.1"/>
<saml2:AuthnContext>
<saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef>
</saml2:AuthnContext>
</saml2:AuthnStatement>
<saml2:AttributeStatement>
<saml2:Attribute FriendlyName="schacHomeOrganization" Name="urn:oid:1.3.6.1.4.1.25178.1.2.9" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>local</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="eduPersonScopedAffiliation" Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>student@local</saml2:AttributeValue>
<saml2:AttributeValue>member@local</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="givenName" Name="urn:oid:2.5.4.42" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>Anna</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="uid" Name="urn:oid:0.9.2342.19200300.100.1.1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>anna</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="mail" Name="urn:oid:0.9.2342.19200300.100.1.3" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>anna.schmidt@uni.de</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="eduPersonTargetedID" Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>
<saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" NameQualifier="https://idp.local/idp/shibboleth" SPNameQualifier="https://sp1.local/shibboleth">LSPX4Z4UJWIXKWFONRF5YUY75YTQ5TL2</saml2:NameID>
</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="sn" Name="urn:oid:2.5.4.4" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>Schmidt</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
Assertion SP2
<!-- Datei: /opt/shibboleth-idp/logs/idp-process.log -->
<?xml version="1.0" encoding="UTF-8"?><saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="_2e601cd9c678ea0aa6d2de6a0151fd0c" IssueInstant="2026-01-22T10:18:22.533Z" Version="2.0">
<saml2:Issuer>https://idp.local/idp/shibboleth</saml2:Issuer>
<saml2:Subject>
<saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" NameQualifier="https://idp.local/idp/shibboleth" SPNameQualifier="https://sp2.local/shibboleth" xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">QI3P4IOWTZDFLPPISAFD7TYAJLXA5GRX</saml2:NameID>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml2:SubjectConfirmationData Address="127.0.0.1" InResponseTo="_9adf8c3893cb82c8758a2e5200b3e8fa" NotOnOrAfter="2026-01-22T10:23:22.551Z" Recipient="https://sp2.local/Shibboleth.sso/SAML2/POST"/>
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions NotBefore="2026-01-22T10:18:22.533Z" NotOnOrAfter="2026-01-22T10:23:22.533Z">
<saml2:AudienceRestriction>
<saml2:Audience>https://sp2.local/shibboleth</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement AuthnInstant="2026-01-22T10:18:18.582Z" SessionIndex="_6f0771619be64724cbd984657f7289ea">
<saml2:SubjectLocality Address="127.0.0.1"/>
<saml2:AuthnContext>
<saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef>
</saml2:AuthnContext>
</saml2:AuthnStatement>
<saml2:AttributeStatement>
<saml2:Attribute FriendlyName="schacHomeOrganization" Name="urn:oid:1.3.6.1.4.1.25178.1.2.9" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>local</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
<!-- Template AttributeFilterPolicy -->
<AttributeFilterPolicy id="example1">
<PolicyRequirementRule xsi:type="Requester" value="https://sp.example.org"/>
<AttributeRule attributeID="mail">
<PermitValueRule xsi:type="ANY"/>
</AttributeRule>
Im Template kommen die Rule Types Requester und ANY zum Einsatz. <!-- Bibliotheksnutzung -->
<AttributeFilterPolicy id="lib-entitlement-policy">
<PolicyRequirementRule xsi:type="ANY"/>
<AttributeRule attributeID="eduPersonEntitlement">
<PermitValueRule xsi:type="Value" value="urn:mace:dir:entitlement:common-lib-terms"/>
</AttributeRule>
</AttributeFilterPolicy>
<!--/opt/shibboleth-idp/conf/attribute-resolver.xml -->
<AttributeDefinition xsi:type="Simple" id="eduPersonAffiliation">
<InputDataConnector ref="myLDAP" attributeNames="eduPersonAffiliation" />
</AttributeDefinition>
| Gruppe | ou | eduPersonAffiliation |
|---|---|---|
| Mitarbeitende | ou=Mitarbeitende | staff |
| Studierende | ou=Studierende | student |
| Lehrende | ou=Lehrende | faculty |
| Gaeste | ou=Gaeste | affiliate |
| Externe | ou=Externe |
<!--/opt/shibboleth-idp/conf/attribute-resolver.xml -->
<AttributeDefinition xsi:type="Mapped" id="mappedAttribute">
<InputAttributeDefinition ref="myLDAP" attributeNames="sourceAttr"/>
<ValueMap>
<ReturnValue>mappedValue1</ReturnValue>
<SourceValue>sourceValue1</SourceValue>
<ValueMap/>
<DefaultValue passThru="true"/>
</AttributeDefinition>
<!-- Datei: /opt/shibboleth-idp/conf/attribute-resolver.xml -->
<AttributeDefinition xsi:type="Simple" id="ou">
<InputDataConnector ref="ou"/>
</AttributeDefinition>
<!-- eduPersonAffiliation als Mapping auf ou -->
<AttributeDefinition xsi:type="Mapped" id="eduPersonAffiliation">
<InputAttributeDefinition ref="ou"/>
<ValueMap>
<ReturnValue>student</ReturnValue>
<SourceValue>Studierende</SourceValue>
</ValueMap>
<ValueMap>
<ReturnValue>staff</ReturnValue>
<SourceValue>Mitarbeitende</SourceValue>
</ValueMap>
<ValueMap>
<ReturnValue>faculty</ReturnValue>
<SourceValue>Lehrende</SourceValue>
</ValueMap>
<ValueMap>
<ReturnValue>affiliate</ReturnValue>
<SourceValue>Gaeste</SourceValue>
</ValueMap>
<ValueMap>
<ReturnValue>member</ReturnValue>
<SourceValue>Studierende</SourceValue>
<SourceValue>Mitarbeitende</SourceValue>
<SourceValue>Lehrende</SourceValue>
</ValueMap>
</AttributeDefinition>
<!--/opt/shibboleth-idp/conf/attribute-filter.xml -->
<!-- Bibliotheksnutzung -->
<AttributeFilterPolicy id="lib-entitlement-policy">
<PolicyRequirementRule xsi:type="ANY"/>
<AttributeRule attributeID="eduPersonEntitlement">
<PermitValueRule xsi:type="Value" value="urn:mace:dir:entitlement:common-lib-terms"/>
</AttributeRule>
</AttributeFilterPolicy>
Zur Lösungsfindung helfen Ihnen folgende Fragen:
<!--/opt/shibboleth-idp/conf/attribute-filter.xml -->
<!-- Bibliotheksnutzung -->
<AttributeFilterPolicy id="lib-entitlement-policy">
<PolicyRequirementRule xsi:type="Value" attributeID="eduPersonAffiliation" value="member" caseSensitive="false"/>
<AttributeRule attributeID="eduPersonEntitlement">
<PermitValueRule xsi:type="Value" value="urn:mace:dir:entitlement:common-lib-terms"/>
</AttributeRule>
</AttributeFilterPolicy>
<!--/opt/shibboleth-idp/conf/attribute-filter.xml -->
<!-- Release an additional attribute to an SP -->
<AttributeFilterPolicy id="SPs_locals">
<PolicyRequirementRule xsi:type="Requester" value="https://sp1.local/shibboleth"/>
<AttributeRule attributeID="eduPersonScopedAffiliation" permitAny="true"/>
<AttributeRule attributeID="sn" permitAny="true"/>
<AttributeRule attributeID="givenName" permitAny="true"/>
<AttributeRule attributeID="mail" permitAny="true"/>
<AttributeRule attributeID="uid" permitAny="true"/>
<AttributeRule attributeID="eduPersonEntitlement" permitAny="true"/>
<AttributeRule attributeID="eduPersonTargeted" permitAny="true"/>
</AttributeFilterPolicy>
Zur Lösungsfindung helfen Ihnen folgende Fragen: <!--/opt/shibboleth-idp/conf/attribute-filter.xml -->
<!-- Release an additional attribute to an SP -->
<AttributeFilterPolicy id="SPs_locals">
<PolicyRequirementRule xsi:type="Requester" value="https://sp1.local/shibboleth" />
<AttributeRule attributeID="eduPersonScopedAffiliation" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="sn" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="givenName"permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="mail" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="uid" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="eduPersonEntitlement" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="eduPersonTargeted" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
</AttributeFilterPolicy>
<!-- 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>
<!-- .... -->
<AttributeFilterPolicy id="SPs_locals">
<PolicyRequirementRule xsi:type="Requester" value="https://sp1.local/shibboleth" />
<AttributeRule attributeID="eduPersonScopedAffiliation" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="sn" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="givenName"permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="mail" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="uid" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="eduPersonEntitlement" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
<AttributeRule attributeID="eduPersonTargeted" permitAny="true">
<PermitValueRule xsi:type="AttributeInMetadata" onlyIfRequired="true"/>
</AttributeRule>
</AttributeFilterPolicy>