Konfiguration für den Schutz des Hauptverzeichnisses
In diesem Artikel erfahren Sie, wie Sie die Konfiguration Ihres auf dem Apache mod_shib
basierenden Shibboleth Service Providers aufbauen, um den Zugriff auf ein Verzeichnis mit RWTH Single Sign-On zu schützen.
Dafür sind folgende Schritte notwendig:
- Den generierten Private Key und das Zertifikat (siehe Punkt Beantragung eines Server Zertifikats) auf dem Server speichern und Speicherort merken.
- /etc/shibboleth/shibboleth2.xml bearbeiten (Auszüge mit den relevanten Anpassungen):
Den Knoten SPConfig mit folgendem ersetzen, um den Namespace mdui zu definieren:
<SPConfig xmlns="urn:mace:shibboleth:3.0:native:sp:config"
xmlns:conf="urn:mace:shibboleth:3.0:native:sp:config"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui"
clockSkew="180">
In den ApplicationDefaults die entityID setzen, um die ID des Service Providers festzulegen (URL zur geschützen Anwendung)
<ApplicationDefaults id="default" policyId="default" entityID="https://sp.example.com" ...>
Im Sessions-Knoten handler="SSL" setzen und cookieProps="https". checkAddress kann optional auf true gesetzt werden und sorgt für eine Übereinstimmung der IP Adresse beim Login (kann bei Proxies zu Problemen führen).
<Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
checkAddress="false" handlerSSL="true" cookieProps="https" redirectLimit="exact">
SSO Knoten ersetzen, um die Verbindung zum Identity Provider der RWTH Aachen University herzustellen:
<SSO entityID="https://login.rz.rwth-aachen.de/shibboleth">
SAML2
</SSO>
Die Zeile <Handler type="MetadataGenerator" Location="/Metadata" signing="false"/> mit folgendem Ersetzen, um hier die Information zu Ihrem Service Provider einzutragen:
<Handler type="MetadataGenerator" Location="/Metadata" signing="false">
<mdui:UIInfo>
<mdui:DisplayName xml:lang="de">Beispiel SP</mdui:DisplayName>
<mdui:DisplayName xml:lang="en">Example SP</mdui:DisplayName>
<mdui:Description xml:lang="de">Eine Beschreibung für den SP</mdui:Description>
<mdui:Description xml:lang="en">An description for the SP</mdui:Description>
</mdui:UIInfo>
<md:Organization>
<md:OrganizationName xml:lang="de">RWTH Aachen University</md:OrganizationName>
<md:OrganizationName xml:lang="en">RWTH Aachen University</md:OrganizationName>
<md:OrganizationDisplayName xml:lang="de">RWTH Aachen University</md:OrganizationDisplayName>
<md:OrganizationDisplayName xml:lang="en">RWTH Aachen University</md:OrganizationDisplayName>
<md:OrganizationURL xml:lang="de">http://www.rwth-aachen.de</md:OrganizationURL>
<md:OrganizationURL xml:lang="en">http://www.rwth-aachen.de</md:OrganizationURL>
</md:Organization>
<md:ContactPerson contactType="support">
<md:GivenName>Support</md:GivenName>
<md:SurName>Adresse</md:SurName>
<md:EmailAddress>support@sp.example.com</md:EmailAddress>
</md:ContactPerson>
<md:ContactPerson contactType="technical">
<md:GivenName>Technischer</md:GivenName>
<md:SurName>Ansprechpartner</md:SurName>
<md:EmailAddress>technik@sp.example.com</md:EmailAddress>
</md:ContactPerson>
<md:ContactPerson contactType="administrative">
<md:GivenName>Adminstrativer</md:GivenName>
<md:SurName>Ansprechpartner</md:SurName>
<md:EmailAddress>admin@sp.example.com</md:EmailAddress>
</md:ContactPerson>
</Handler>
Hier die gewünschten Informationen eintragen
Metadaten Provider Eintragen
<!-- RWTH Aachen Metadaten -->
<MetadataProvider type="XML" validate="true"
url="https://sso.rwth-aachen.de/metadata/rwth.metadata.xml"
backingFilePath="rwth.metadata.xml" maxRefreshDelay="7200">
<MetadataFilter type="Signature" certificate="/etc/shibboleth/sso.pem"/>
</MetadataProvider>
Zertifikat für SignatureMetadataFilter (oben: sso.pem)
Das Zertifikat finden Sie unter https://sso.rwth-aachen.de/metadata/sso.pem. Dieses können Sie auch per wget abrufen und direkt am Zielort ablegen:
wget https://sso.rwth-aachen.de/metadata/sso.pem -O /etc/shibboleth/sso.pem
Im Credential Resolver die Zertifikate eintragen, um damit die Verschlüsselung und Entschlüsselung der SAML Daten zu ermöglichen:
<CredentialResolver type="File" key="/Pfad/zum/Private/Key.pem" certificate="/Pfad/zum/Zertifikat.pem"/>
Prüfen, ob die Konfiguration geladen werden kann
shibd -t
Bei RHEL basierenden Systemen (centOS etc) muss vorher noch der LD_LIBRARY_PATH erweitert werden: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/shibboleth/lib64/
Den Shibboleth Service Provider neustarten
systemctl restart shibd
- Ein Beispiel für ein Setup zum Schutz des Hauptverzeichnisses finden sie hier.