ServiceProvider mit Shibboleth einrichten und betreiben

Grundlagen

Möchten Sie Anwendungen mit Hilfe von Shibboleth schützen, erhalten Sie hier Hinweise zur Konfiguration und Betrieb.

Erläuterungen zur Funktionsweise des SSO (Sing Sign-On) mit Shibboleth-IDP und Shibboleth-SP:

Vorgehen

Vorbereitung

Webbasierte Anwendungen, die eine einfache Anmeldung mit Boardmitteln des Apache Webservers oder IIS realisieren, lassen sich in der Regel problemlos auf die Anmeldung mit Shibboleth umstellen. Auch JAVA-Anwendungen können "shibbolisiert" werden. Neben der reinen Prüfung der Zugangsdaten kann Shibboleth zusätzlich zur Authentifizierung Attribute wie z.B. Vor- und Nachnamen, E-Mail-Adresse, Art der Zugehörigkeit zur Universität etc. übertragen. Damit ist es möglich, den Zugriff schon am Webserver für bestimmte Nutzergruppen einzuschränken.

Möchten Sie auch lokale Nutzerdatenbanken bei Anmeldung aktualisieren, muss die Anwendung Shibboleth (SAML) unterstützten. Standardmäßig stellt Shibboleth im REMOTE_USER einen eindeutigen Identifier zur Verfügung. Kann der REMOTE_USER durch die Anwendung ausgewertet werden, vereinfacht dies bereits einiges.

Beachten Sie bitte, dass in der Regel auch ohne offensichtlichen Personenbezug bereits eine Verarbeitung im Sinne der DSGVO stattfindet und eine Anbindung an Shibboleth erst nach Vorlage der Verarbeitungstätigkeit nach Art. 30 Abs. 1 DSGVO möglich ist.

Nehmen Sie für eine erste Beratung Kontakt mit der Abteilung Serverdienste auf. Konkrete Unterstützung bei der Anpassung der Anwendung und auch für den laufenden Betrieb kann leider nicht geleistet werden!

Installation und Konfiguration

Beantragen Sie ein Serverzertifikat. Nutzen Sie dieses Zertifikat für die Kommunikation des Webservers. Für die Signierung und Verschlüsselung des Shibboleth-SPs ist ein selbstsigniertes Zertifikat ausreichend. Stellen Sie das Zertifikat ohne privaten Schlüssel der Abteilung Serverdienste zur Aufnahme in die Metadaten zur Verfügung. Dies erzeugen Sie mit openssl:

openssl req -x509 -days 1170 -newkey rsa:4096 -out certaai_<DNS>-<YYYY-MM-DD>.pem -keyout tmp.pem
#Passwort entfernen
openssl rsa -in tmp.pem -out keyaai_<DNS>-<YYYY-MM-DD>.pem

Stellen Sie das Zertifikat ohne privaten Schlüssel der Abteilung Serverdienste zur Aufnahme in die Metadaten des DFN zur Verfügung, im Anschluss erhalten Sie entsprechende Rechte, den SP selbst zu verwalten.

Shibboleth eignet sich zur Installation unter Linux für den Apache-Webserver 2.4 oder unter Windows am IIS.Folgen Sie der Installationsanleitung der schweizer Kollegen und verwenden keinesfalls die migelieferten Pakete der debian-basierten Distributionen, da diese nicht aktuell sind!

Verwenden Sie unbedingt die speziell für die Universität Bamberg angepasste Beispielkonfigurationen für den Betrieb eines Serviceproviders shibboleth2.xml(13.9 KB) und für den Betrieb des Apache-Webservers httpd.conf(3.4 KB). Beim Betrieb im IIS ist es notwendig, das Rewrite-Modul zu installieren und dann die web.config im Ordner c:/inetpub/wwwroot(1.2 KB) anzupassen (die 3 Regeln müssen vor ggf. weiteren Regeln stehen, Achtung - Logfiles vom IIS können sich erheblich vergrößern!).

Metadaten werden vom DFN-Verein signiert zur Verfügung gestellt. Die Prüfung erfolgt zentral. Dadurch kann die lokale Prüfung am SP entfallen und die Startzeit wird wesentlich reduziert. Die Konfiguration ist entsprechend in der shibboleth2.xml vorbereitet.

Konfigurationseinstellungen finden Sie auf folgenden Seiten:

Eine sehr gute Dokumentation für die Zugriffbeschränkungen findet sich unter https://www.switch.ch/aai/guides/sp/access-rules/. Neben des SingleSignOn gilt es auch das SingeLogOut zu beachten.

Betrieb: Certificate Rollover

Diese Anleitung betrifft nicht das Webserver-Zertifikat.

Um den unterbrechungsfreien Betrieb des ServiceProviders sicherzustellen, ist es erforderlich, Zertifikate rechtzeitig, d. h. unmittelbar nach Eintreffen der Warnmeldung über den Ablauf des Zertifikats, zu erneuern und in den Metadaten bekannt zu machen. Während des Rollovers werden das alte und das neue Zertifikat parallel verwendet. Dazu sind folgende Schritte notwendig:

  1. Erstellen Sie ein selstsigniertes Zertifikat mit einer Laufzeit von maximal 1170 Tagen

    openssl req -x509 -days 1170 -newkey rsa:4096 -out certaai_<DNS>-<YYYY-MM-DD>.pem -keyout tmp.pem
    #Passwort entfernen
    openssl rsa -in tmp.pem -out keyaai_<DNS>-<YYYY-MM-DD>.pem

  2. Nachdem Sie das Zertifikat erhalten haben, konfiguieren Sie dieses und den neuen privaten Schlüssel an zweiter Stelle shibboleth2.xml:
    <CredentialResolver type="Chaining">
                <CredentialResolver type="File" keyName="Active" key="/etc/ssl/private/old_key_spname_date.pem" certificate="/etc/ssl/certs/old_cert_spname_date.pem"/>
                <CredentialResolver type="File" keyName="Standby" key="/etc/ssl/private/new_key_spname_date.pem" certificate="/etc/ssl/certs/new_cert_spname_date.pem"/>
    </CredentialResolver>
    und starten Shibboleth neu
    (ggf. muss ein Eintrag wie <CredentialResolver type="File" key="/etc/ssl/private/old_key_spname_date.pem" certificate="/etc/ssl/certs/old_cert_spname_date.pem"> durch den obigen "Chaining"-Block ersetzt werden.)
  3. Konfigurieren Sie das neue Zertifikat in der Metadatenverwaltung des DFN.
  4. Warten mindestens 24 Stunden, bis Sie mit Schritt 5. fortfahren.
  5. Tauschen Sie die Zertifikate shibboleth2.xml
    <CredentialResolver type="Chaining">
                <CredentialResolver type="File" keyName="Active" key="/etc/ssl/private/new_key_spname_date.pem" certificate="/etc/ssl/certs/new_cert_spname_date.pem"/>
                <CredentialResolver type="File" keyName="Standby" key="/etc/ssl/private/old_key_spname_date.pem" certificate="/etc/ssl/certs/old_cert_spname_date.pem"/>
    </CredentialResolver>
    und starten Shibbleth neu.
  6. Warten mindestens 24 Stunden, bis Sie mit Schritt 7. fortfahren.
  7. Entfernen Sie das alte Zertifikat shibboleth2.xml
    <CredentialResolver type="Chaining">  
                <CredentialResolver type="File" keyName="Active" key="/etc/ssl/private/new_key_spname_date.pem" certificate="/etc/ssl/certs/new_cert_spname_date.pem"/>
                <!--
                <CredentialResolver type="File" keyName="Standby" key="/etc/ssl/old_private/key_spname_date.pem" certificate="/etc/ssl/certs/old_cert_spname_date.pem"/>
                -->
    </CredentialResolver>
    und starten Shibboleth neu.
  8. Das Certificate Rollover ist beendet.

Sie haben noch Fragen?

IT-Support
Telefon: +49 951 863-1333
E-Mail: it-support(at)uni-bamberg.de