Dies ist eine alte Version des Dokuments!


Erzeugung und Freigabe der SAML-Attribute wird weiterhin über die Dateien attribute-resolver.xml und attribute-filter.xml gesteuert. Diese unterscheiden sich syntaktisch und semantisch leicht von den gewohnten Dateien im IdP 2.x.

Mit den folgenden beiden Konfigurationsdateien sollte ein erster Test gegen die DFN-Test-SPs schnell gelingen:

Minimal-attribute-resolver.xml

/opt/shibboleth-idp/conf/attribute-resolver.xml
<?xml version="1.0" encoding="UTF-8"?>
<AttributeResolver
        xmlns="urn:mace:shibboleth:2.0:resolver"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
 
    <!-- ========================================== -->
    <!--      Attribute Definitions                 -->
    <!-- ========================================== -->
 
    <!-- für uid das nehmen was der User eingetippt hat -->
    <AttributeDefinition id="uid" xsi:type="PrincipalName">
        <DisplayName xml:lang="en">User Name</DisplayName>
        <DisplayName xml:lang="de">Nutzerkennung</DisplayName>
        <DisplayDescription xml:lang="en">Local User Id</DisplayDescription>
        <DisplayDescription xml:lang="de">Nutzerkennung der Heimateinrichtung</DisplayDescription>
        <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:uid" encodeType="false" />
        <AttributeEncoder xsi:type="SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid" encodeType="false" />
    </AttributeDefinition>
 
    <!--- eduPersonPrincipalName aus uid generieren -->
    <AttributeDefinition id="eduPersonPrincipalName" xsi:type="Scoped" scope="%{idp.scope}" sourceAttributeID="uid">
        <Dependency ref="uid" />
        <DisplayName xml:lang="en">Principal name</DisplayName>
        <DisplayName xml:lang="de">Netz-Id</DisplayName>
        <DisplayDescription xml:lang="en">A unique identifier for a person, mainly for inter-institutional user identification</DisplayDescription>
        <DisplayDescription xml:lang="de">Eindeutige, einrichtungsübergreifende Nutzerkennung</DisplayDescription>
        <AttributeEncoder xsi:type="SAML1ScopedString" name="urn:mace:dir:attribute-def:eduPersonPrincipalName" encodeType="false" />
        <AttributeEncoder xsi:type="SAML2ScopedString" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" friendlyName="eduPersonPrincipalName" encodeType="false" />
    </AttributeDefinition>
 
    <!--- mail aus LDAP holen -->
    <AttributeDefinition id="mail" xsi:type="Simple" sourceAttributeID="mail">
        <Dependency ref="myLDAP" />
        <DisplayName xml:lang="en">E-mail</DisplayName>
        <DisplayName xml:lang="de">E-Mail</DisplayName>
        <DisplayDescription xml:lang="en">E-Mail address</DisplayDescription>
        <DisplayDescription xml:lang="de">E-Mail Adresse</DisplayDescription>
        <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:mail" encodeType="false" />
        <AttributeEncoder xsi:type="SAML2String" name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" encodeType="false" />
    </AttributeDefinition>
 
   <!-- ========================================== -->
    <!--      Data Connectors                       -->
    <!-- ========================================== -->
 
    <DataConnector id="myLDAP" xsi:type="LDAPDirectory"
        ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
        baseDN="%{idp.attribute.resolver.LDAP.baseDN}"
        principal="%{idp.attribute.resolver.LDAP.bindDN}"
        principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}"
        useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}"
        connectTimeout="%{idp.attribute.resolver.LDAP.connectTimeout}"
        trustFile="%{idp.attribute.resolver.LDAP.trustCertificates}"
        responseTimeout="%{idp.attribute.resolver.LDAP.responseTimeout}">
        <FilterTemplate>
            <![CDATA[
                %{idp.attribute.resolver.LDAP.searchFilter}
            ]]>
        </FilterTemplate>
        <ConnectionPool
            minPoolSize="%{idp.pool.LDAP.minSize:3}"
            maxPoolSize="%{idp.pool.LDAP.maxSize:10}"
            blockWaitTime="%{idp.pool.LDAP.blockWaitTime:PT3S}"
            validatePeriodically="%{idp.pool.LDAP.validatePeriodically:true}"
            validateTimerPeriod="%{idp.pool.LDAP.validatePeriod:PT5M}"
            expirationTime="%{idp.pool.LDAP.idleTime:PT10M}"
            failFastInitialize="%{idp.pool.LDAP.failFastInitialize:false}" />
    </DataConnector>
 
</AttributeResolver>

Starten Sie Tomcat neu um die neuen Einstellungen zu aktivieren (dabei Logdateien mitverfolgen!):

root@idp:/opt/shibboleth-idp# service tomcat8 restart

attribute-filter.xml für die DFN-AAI-Test

/opt/shibboleth-idp/conf/attribute-filter.xml
<?xml version="1.0" encoding="UTF-8"?>
<AttributeFilterPolicyGroup id="ShibbolethFilterPolicy"
        xmlns="urn:mace:shibboleth:2.0:afp"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd">
 
   <!-- Attribute an die DFN-Test-IdPs freigeben -->
   <AttributeFilterPolicy id="dfn-test-sps">
        <PolicyRequirementRule xsi:type="OR">
            <Rule xsi:type="Requester" value="https://testsp.aai.dfn.de/shibboleth" />
            <Rule xsi:type="Requester" value="https://testsp2.aai.dfn.de/shibboleth" />
        </PolicyRequirementRule>
 
        <AttributeRule attributeID="uid"                    permitAny="true"/>
        <AttributeRule attributeID="eduPersonPrincipalName" permitAny="true"/>
        <AttributeRule attributeID="mail"                   permitAny="true"/>
  </AttributeFilterPolicy>
 
</AttributeFilterPolicy>

Starten Sie Tomcat neu um die neuen Einstellungen zu aktivieren (dabei Logdateien mitverfolgen!):

root@idp:/opt/shibboleth-idp# service tomcat8 restart

Bitte testen Sie jetzt die Attribute-Freigabe gegen unsere Test-SPs, siehe dazu https://www.aai.dfn.de/teilnahme/funktionstest/

Erst wenn diese Tests erfolgreich sind und Sie die Attribute 'uid', 'eduPersonPrincipalName' und 'mail' angezeigt bekommen, sollten Sie mit der IdP-Konfiguration weiter machen!

Mit dem Resolvertest (aacli) besteht die Möglichkeit, die Attributfreigabe für eine(n) bestimmte(n) Nutzer(in) gegenüber einem bestimmten SP zu testen. Der Aufruf von bin/aacli.sh generiert einen URL, der dann z.B. im Browser eingegeben werden kann (auch hier Zugriffskontrolle über conf/access-control.xml):

root@idp# ./aacli.sh -n test-clt -r https://testsp3.aai.dfn.de/shibboleth

(-n principal = user id; -r requester = entityId des anfragenden SP)

Weiter geht es mit der Zertifikate-Konfiguration.

  • Zuletzt geändert: vor 7 Jahren