Installation
und Basiskonfiguration des Shibboleth Service Providers 2.0 unter SuSE
Linux
Enterprise Server 10 (SLES10SP1)
Version dieses Dokuments: 0.1 (letzte Änderung: 28.04.2008)
Wolfgang Hommel, Leibniz-Rechenzentrum
Kontakt-E-Mail-Adresse: hommel
[at] lrz [punkt] de
Die Installation eines Shibboleth Service Providers in Version 2.0
gestaltet sich unter SuSE Linux Enterprise Server (SLES10SP1) für
das Shibboleth-Umfeld relativ einfach. In diesem Dokument werden die
grundlegenden Installations- und Konfigurationsschritte beschrieben.
Eine komplementäre Anleitung zur Installation des Shibboleth Identity Providers 2.0 findet sich hier.
1. Vorbereitungen
- Maschine mit SLES10SP1, öffentlicher IP-Adresse, DNS-Name
und Zertifikat (für die Teilnahme an der DFN-AAI aus der DFN-PKI)
bereitstellen.
- Apache2 Webserver installieren und SSL-fähig machen (/usr/share/doc/packages/apache2/README.QUICKSTART.SSL).
- Per yast sicherstellen, dass folgende Pakete installiert sind:
- apache2-devel
- curl-devel
- doxygen
- libapr1-devel
(unter SLES10SP1 per yast verfügbar; unter OpenSUSE 10.2
downzuloaden:
http://download.opensuse.org/distribution/10.2/repo/oss/suse/i586/libapr1-devel-1.2.7-23.i586.rpm
und
http://download.opensuse.org/distribution/10.2/repo/oss/suse/i586/libapr-util1-devel-1.2.7-26.i586.rpm)
- rpm-devel
- ! xerces-c darf nicht installiert sein
2. Installation des Shibboleth SP aus SRPMs
Zunächst alle SRPM-Dateien von http://shibboleth.internet2.edu/downloads/shibboleth/cppsp/2.0/SRPMS/
in ein temporäres Verzeichnis downloaden. Anschließend
für die einzelnen Source-RPMs in der angegebenen Reihenfolge
rpmbuild ausführen und die erzeugten RPMs gleich installieren
(Achtung: Der Pfad, an dem die erzeugten RPMs abgelegt werden,
hängt von der Prozessorarchitektur ab!):
rpmbuild --rebuild log4shib-1.0-1.src.rpm
rpm -Uvh /usr/src/packages/RPMS/x86_64/log4shib-*
rpmbuild --rebuild xerces-c-2.8.0-1.src.rpm
rpm -Uvh /usr/src/packages/RPMS/x86_64/xerces-c-*
rpmbuild --rebuild xml-security-c-1.4.0-1.src.rpm
rpm -Uvh /usr/src/packages/RPMS/x86_64/xml-security-c-*
rpmbuild --rebuild xmltooling-1.0-6.src.rpm
rpm -Uvh /usr/src/packages/RPMS/x86_64/xmltooling-*
rpmbuild --rebuild opensaml-2.0-6.src.rpm
rpm -Uvh /usr/src/packages/RPMS/x86_64/opensaml-*
CPPFLAGS=-I/usr/include/apr-1 rpmbuild --rebuild --with apache22 shibboleth-2.0-6.src.rpm
rpm -Uvh /usr/src/packages/RPMS/x86_64/shibboleth-* |
3. Rudimentäre Konfiguration
- Folgende Einträge in /etc/sysconfig/apache2 anpassen (eigenen Hostnamen verwenden!);
APACHE_SERVERNAME="sp.example.com"
APACHE_USE_CANONICAL_NAME="on"
- Die zentrale Konfigurationsdatei /etc/shibboleth/shibboleth2.xml
bearbeiten, so dass insbesondere die folgenden Optionen angepasst
werden (Beispiel für die DFN-AAI-Testföderation mit
herkömmlichem WAYF (noch nicht Shibboleth 2.0 Discovery Service)):
[...]
<RequestMapper type="Native">
<RequestMap applicationId="default">
<!--
The example requires a session for documents in /secure on the
containing host with http and
https on the default ports. Note that the name and port in the
<Host> elements MUST match
Apache's ServerName and Port directives or the IIS Site name in the
<ISAPI> element
below.
-->
<Host name="sp.example.com">
<Path name="secure" authType="shibboleth" requireSession="true"/>
</Host>
[...]
<ApplicationDefaults id="default" policyId="default"
entityID="https://sp.example.com/shibboleth-sp"
homeURL="https://sp.example.com/secure"
REMOTE_USER="eppn persistent-id targeted-id"
signing="false" encryption="false"
>
[...]
<!-- Default example directs to a specific IdP's SSO service
(favoring SAML 2 over Shib 1). -->
<!-- <SessionInitiator type="Chaining" Location="/Login" isDefault="true" id="Intranet"
relayState="cookie" entityID="https://idp.example.org/shibboleth">
<SessionInitiator type="SAML2" defaultACSIndex="1"
template="bindingTemplate.html"/>
<SessionInitiator type="Shib1" defaultACSIndex="5"/>
</SessionInitiator>
-->
<!-- An example using an old-style WAYF, which means Shib 1 only
unless an entityID is provided. -->
<SessionInitiator type="Chaining" Location="/WAYF" id="WAYF" relayState="cookie">
<SessionInitiator type="SAML2" defaultACSIndex="1"
template="bindingTemplate.html"/>
<SessionInitiator type="Shib1" defaultACSIndex="5"/>
<SessionInitiator type="WAYF" defaultACSIndex="5" URL="https://wayf.aai.dfn.de/DFN-AAI-Test/wayf/"/>
</SessionInitiator>
<!-- An example supporting the new-style of discovery service. -->
<!-- <SessionInitiator type="Chaining" Location="/DS" id="DS" relayState="cookie">
<SessionInitiator type="SAML2" defaultACSIndex="1"
template="bindingTemplate.html"/>
<SessionInitiator type="Shib1" defaultACSIndex="5"/>
<SessionInitiator type="SAMLDS" URL="https://ds.example.org/DS"/>
</SessionInitiator>
-->
[...]
<MetadataProvider type="Chaining">
<!-- Example of locally maintained metadata. -->
<MetadataProvider type="XML"
file="/etc/shibboleth/metadata/DFN-AAI-Test-metadata.xml"/>
<MetadataProvider type="XML"
file="/etc/shibboleth/metadata/DFN-AAI-metadata.xml"/>
<MetadataProvider type="XML"
file="/etc/shibboleth/metadata/testshib-two-metadata.xml"/>
</MetadataProvider>
[...]
<!-- Simple file-based resolver for using a single keypair. -->
<!-- <CredentialResolver type="File" key="sp-key.pem" certificate="sp-cert.pem"/> -->
<CredentialResolver type="File" key="/etc/apache2/keypair/key" certificate="/etc/apache2/keypair/cert"/> |
Analog zu einer IDP-Installation sollte sichergestellt werden, dass
unter den bei den MetadataProvidern angegebenen Pfaden immer die
aktuellen Föderationsmetadaten bereitgestellt werden (z.B. per
Cronjob).
- Unter /etc/init.d/shibd sollte ein SuSE-spezifisches Startskript
abgelegt werden, das prinzipiell von Version 1.3 übernommen werden
kann. Ein Beispiel findet sich hier. Darin müssen die Konfigurationsparameter wie folgt angepasst werden:
SHIBDDIR=/usr/sbin
SHIBDBIN=${SHIBDDIR}/shibd
SHIBDPID=/var/log/shibd.pid
SHIBDLOG=/var/log/shibd_log
SHIBDCONF=/etc/shibboleth/shibboleth2.xml |
Über den Befehl chkconfig -a shibd wird sichergestellt, dass der Shibboleth-Daemon auch nach einen Reboot automatisch wieder gestartet wird.
- Nach Abschluss der Konfiguration sollten der Shibboleth-Daemon und Apache2 gestartet werden:
- /etc/init.d/shibd start
- rcapache2 restart
4. Testen
Lukas Haemmerle vom SWITCH hat ein schönes PHP-Skript
entwickelt, das alle vom Identity Provider an den Service Provider
übermittelten Daten anzeigt. Für erste Tests kann dieses
Skript z.B. als /secure/index.php abgelegt werden. Zum Ausprobieren sollte der eigene Service Provider per Browser aufgerufen werden: https://sp.example.com/secure
- man wird zum WAYF/DS umgeleitet und wählt einen der Identity
Provider aus, bei dem man Zugang hat. Nach erfolgreichem Einloggen
sollte das PHP-Skript beim SP ausgeführt werden und Aufschluss
über übertragene Dateien bzw. Probleme geben; ergänzend
können die Logfiles unter /var/log/shibboleth herangezogen werden. Viel Erfolg!
Impressum,
a2822bj