Shibboleth - Single Sign On (SSO) - Dokumentation

Einleitung

Zweck und Ziel dieser Dokumentation

Diese Dokumentation richtet sich an Anwendungsbetreuer:innen, die eine zentrale Authentifizierung an der Technischen Universität Dresden realisieren wollen. Ziel dieser Dokumentation ist, zu beschreiben, wie diese Authentifizierung über den Shibboleth IdP der Technischen Universität Dresden vorgenommen und dabei von dessen Vorteilen profitiert werden kann.

Vorteile von Shibboleth

Grundlagen

Was ist Shibboleth?

Shibboleth ist eine OpenSource-Software für Webanwendungen, die vom Shibboleth Konsortium weiterentwickelt wird. Diese Software, bestehend aus mehreren Komponenten, bietet ein Verfahren zur verteilten Zugriffssteuerung an. Shibboleth ist an der Technischen Universität Dresden die empfohlene Art & Weise der Authentifizierung, da hier mehrere Sicherheitsaspekte bereits berücksichtigt werden (siehe Vorteile), die bei anderen Authentifizierungsverfahren aufwendig selbst realisiert werden müssten oder gar nicht möglich sind.

Der Shibboleth IdP an der Technischen Universität Dresden basiert auf dem SAML2.0 Protokoll. Eine Realisierung des OIDC Protokoll ist in Planung.

Was ist SAML (Security Assertion Markup Language)

Die Security Assertion Markup Language stellt ein XML-Framework dar, mit dem der Shibboleth-IdP die Authentifizierung vornimmt und Daten zur Autorisierung bereitstellt. Weitere Informationen zu SAML findet man z. B. in der Wikipedia.

Was ist OIDC (OpenID Connect)

Das OpenID Connect bildet eine Authentifizierungsschicht, die auf dem OAuth-2.0-Protokoll aufbaut. OAuth-2.0 dient der Autorisierung. Das OAuth-2.0-Protokoll bietet Anwendungen den Zugriff auf Nutzerdaten, die von einem IdP bereitgestellt werden.

Der Shibboleth IdP der Technischen Universität Dresden unterstützt noch kein OIDC. Es ist in Planung das OIDC-Plugin am IdP der Technischen Universität Dresden einzuführen. Alternativen bilden derzeit Keycloak oder ein OpenID Connect Proxy des DFN-AAI Vereins. Der OpenID Connect Proxy bietet nur ausgewählte Attribute an. Keycloak dagegen kann als OIDC Proxy mit einem eigenen Mapping betrieben werden. Somit ist es möglich viel mehr Informationen von seinem IdP zu beziehen, als es der DFN-AAI Verein mit dem OpenID Connect Proxy vorsieht.

Komponenten & Funktionsweise

Identity Provider (IdP, bei der Heimateinrichtung tu-dresden.de)

Service Provider (SP, beim Anbieter)

Discovery Service

DFN-AAI-Föderation

Funktionsweise

Die hier abgebildete Grafik zeigt die Shibboleth SAML-Kommunikation der einzelnen Komponenten:

WAYF
browser-flow
IdP SP

Die Vertrauensstellung zwischen Resource (SP) und Users's Home Org (IdP) wird durch die DFN-AAI-Föderation sichergestellt. Die Vertrauensstellung zwischen SP und IdP kann auch direkt hergestellt werden, indem der IdP die Metadaten der SPs lokal speichert. Nachteil dabei sind höhere Aufwände bei Aktualisierungen von z.B. Zertifikaten, Endpoints, Kontakten u.a.

Ohne Vertrauensstellung zwischen IdP und SP wird die technische Kommunikation abgelehnt und die Nutzer:innen erhalten eine Fehlernachricht.

Mit nur einem Identity Provider
Vorgang Beschreibung
1 Nutzer:in wählt die gewünschte URL Resource (SP) in seinem Browser aus
5 Der SP stellt nun eine Authentifizierungs-Anfrage an den ausgewählten IdP
   - bereits eingeloggte Nutzer:innen werden am IdP wieder an den SP zurückgeleitet (keine weiteren Schritte am IdP)
   - existiert keine gültige Session für den/die Nutzer:in, fragt der IdP nach den Zugangsdaten (in Form einer Login-Seite)
6 Nutzer:in gibt seine Zugangsdaten am IdP ein
7 Mit erfolgreicher Authentifizierung wird der /die Nutzer:in vom IdP wieder zurück an den SP geschickt
   - der IdP teilt dem SP unter anderem mit, dass sich dieser erfolgreich authentifiziert hat
   - darüber hinaus werden, wenn von den Nutzer:innen akzeptiert, weitere Informationen (Attribute) an den SP weitergegeben
   - die Datenübertragung der Informationen (Attribute) erfolgt über den Webbrowser der Nutzer:innen
   - der SP wertet die Attribute aus und leitet eventuelle Zugriffsberechtigungen (Autorisierung) davon ab
   - der Zugriff auf den SP wird gestattet oder verweigert
Mit mehreren Identity Provider

Die Resource (SP) kann eine Koniguration besitzen, mit der mehreren Users's Home Org (IdP) der Zugriff gewährt wird. In diesem Fall müssen Nutzer:innen entscheiden, über welchen IdP Sie Zugriff zum SP erlangen. Dieses Verfahren wird auch Discovery Service genannt. Bei mehreren IdP werden der Funktionsweise: Mit nur einem Identity Provider folgende Vorgänge eingereiht.

Vorgang Beschreibung
2 SP prüft, ob Nutzer:in bereits eingeloggt ist
   - bei Erfolg liefert der SP die angeforderte Seite aus (der weitere Ablauf wird gestoppt)
   - bei Misserfolg leitet der SP alle Nutzer:innen an einen Discovery Service weiter (via Redirect)
3 Nutzer:in wählt aus einer Liste die entsprechende Heimateinrichtung aus
4 Der Discovery Service leitet nach Auswahl der Nutzer:innen den gewählten IdP (via Redirect) an den ursprünglichen SP zurück

Schlüsselwörter

Metadaten

Die Metadaten werden beim SP und IdP verwendet, um gegenseitig die Vertrauensstellung zu gewährleisten. Der SP benötigt dabei die Metadaten des IdP und umgekehrt.

Die Metadaten werden im XML-Format vorgehalten und sollten mindestens folgende Merkmale für den IdP der Technischen Universität Dresden beinhalten:

In der Regel erzeugen SP Anwendungen die Metadaten mittels Metadatengenerator. Über das DFN-AAI-MDV können mit Angabe der oben genannten Informationen die Metadaten vorgeneriert und verwaltet werden.

Weitere Informationen zu den Metadaten finden Sie hier

Deutsches Forschungsnetz (DFN) - Authentication and Authorization Infrastructure (AAI)

Die Technische Universität Dresden ist Mitglied der DFN-AAI. Die DFN-AAI stellt die technische Grundlage, mit der eine Infrastruktur von Vertrauensstellungen aller AAI teilnehmenden Heimateinrichtungen realisiert werden kann. Durch die Mitgliedschaft in der DFN-AAI besitzen IdP- und SP-Betreiber Zugriff auf eine Vielzahl vertrauenswürdiger Metadaten, mit denen der Datenaustausch gewährleistet wird.

Vorteile der DFN-AAI (aus Sicht von SP):

DFN-AAI Metadatenverwaltung (MDV)

Die DFN-AAI Metadatenverwaltung ist eine online Verwaltungsoberfläche zur Pflege der Metadaten von IdP- und SP-Betreibenden. Die MDV validiert Eingaben und stellt diese zentral für alle IdPs/SPs zum Download bereit.

Hinweis: Änderungen in der DFN-AAI Metadatenverwaltung besitzen Wartezeiten. Bitte beachten Sie diese Wartezeiten bei Änderungen z.B. am SAML Zertifikat oder SP Endpoints, um eine Störung Ihres Dienstes zu vermeiden.

entityId

Die entityId ist eine weltweit eindeutige ID in Form eines URL z.B. https://meine-domain.de/shibboleth. Der URL kann frei gewählt werden und muss mit keiner Ressource verknüpft sein. Um die Eindeutigkeit sicherzustellen ist ein DNS-Eintrag der Domain des SP ratsam.

Empfehlung: Verwenden Sie als entityId den Pfad für den Zugriff auf die Metadaten des SP.

Bitte beachten: Die entityId wird am IdP zur Freigabe- bzw. Filterkonfiguration verwendet. Zur Vermeidung von Störungen und nachträglichen Anpassungen bei unterschiedlichen Heimateinrichtungen (IdPs), sollte dieser Wert als statisch angesehen werden, sobald er einem IdP veröffentlicht wurde.

Identity Provider (IdP)

Der Identity Provider ist ein System, das für Identitäten bestimmter Heimateinrichtung betrieben wird. Er bietet diesen Identitäten die Möglichkeit der digitalen Authentifizierung nur im Kontext der Heimateinrichtung an.

Die Technische Universität Dresden betreibt zwei IdPs:

Service Provider (SP)

Der Service Provider ist im Kontext Shibboleth eine Anwendung / ein System das Zugriff auf Identitätsdaten benötigt.

Discovery Service

Der Discovery Service ist ein Verfahren zum Ermitteln des IdPs der Heimateinrichtung. Dem Nutzer werden über den SP Heimateinrichtungen angeboten, bei denen er seine Herkunft bestimmen kann: WAYF - Where are you from

Single Sign On (SSO)

Bezeichnung des Verfahrens, bei denen Nutzer:innen Zugriff zu mehreren SPs bekommen, sich aber nur einmalig beim ersten SP über Ihre Heimateinrichtung (IdP) anmelden müssen. Der Webbrowser hält die Session der Heimateinrichtung für weitere SP Anmeldungen offen. Eine Anmeldung bei weiteren SPs ist ohne erneute Dateneingabe von Nutzer:innen möglich, solange die Session der Heimateinrichtung gültig ist.

Single Logout (SLO)

Bezeichnung des Verfahrens, bei dem sich Nutzer:innen einmalig bei der Heimateinrichtung (IdP) abmelden und gleichzeitig alle offenen SP-Sessions schließen können.

SAML Zertifikat

Das SAML Zertifikat dient der Signierung und Ver-/Entschlüsselung während der Kommunikation zwischen SP und IdP. Neben dem HTTPS Zertifikat des Webservers, welcher eine verschlüsselte Datenübertragung gewährleitet, wird das SAML Zertifikat zur Verschlüsselung der Daten selbst verwendet. Der Transfer der IdP-Daten verläuft über den Webbrowser der Nutzer:innen. Eine zusätzliche Verschlüsselung der IdP-Daten erhöht die Datensicherheit, sofern der Webbrowser der Nutzer:innen kompromittiert ist. Nur der SP ist in der Lage die Daten zu entschlüsseln.

Das SAML Zertifikat kann, muss aber nicht das Webserverzertifikat sein! Webserverzertifikat können eine kurze Gültigkeit besitzen. Es wird empfohlen ein selbstsigniertes Zertifikat mit folgenden Vorgaben zu verwenden.

SAML Zertifikate müssen in regelmäßigen Abständen ersetzt werden (maximal 1170 Tage). Dafür muss der SP einen geeigneten Prozess besitzen (z.B. Zertifikatsrollover), um während des Austausches mit allen IdPs keinen Ausfall der Authentifizierung hervorzurufen.

Hinweis: Ebenso wie der SP besitzt der IdP ein SAML Zertifikat, das im regelmäßigen Abstand ersetzt werden muss. Der SP muss einen geeigneten Prozess besitzen, der das SAML Zertifikat des IdP aktualisiert (z.B. über DFN-AAI). Ohne Aktualisierung des IdP SAML Zertifikates am SP, wird eine Änderung dessen in einen Ausfall der SP Authentifizierung laufen.

Zertifikatsrollover

Der Zertifikatsrollover ist ein Prozess mit dem Ziel, ein altes Zertifikat gegen ein neues Zertifikat auszutauschen. Der Zertifikatsrollover ist darauf ausgelegt, dass der öffentliche und der private Schlüssel erneuert werden können. Damit die Verschlüsselung zwischen SP und IdP weiterhin gewährleitet wird, müssen diese immer das aktuelle Zertifikat (öffentlicher Schlüssel) des Gegenparts kennen, sowie benötigt der Gegenpart seinen dazugehörigen Zertifikatsschlüssel (privater Schlüssel).

Während des Zertifikatsrollover wird das neue Zertifikat bekanntgegeben, während der Betrieb weiterhin über das alte Zertifikat verläuft. Mit gewisser Wartezeit werden die Zertifikate getauscht ohne einen Ausfall der Authentifizierung zu erzeugen.

Technische Voraussetzungen

Die Voraussetzung für die Shibboleth Authentifizierung ist der Betrieb eines SP Clients. Der Standard sieht vor, dass der SP über einen Webserver betrieben wird. Die Kommunikation verläuft über den Webbrowser des Nutzers (siehe Anbindung per Webserver oder Funktionsweise).

Die Auswahl einer geeigneten SP Anwendung hängt maßgeblich von Ihrem Betriebssystem und der damit eingesetzten Webserver-Anwendung und Ihren individuellen Präferenzen ab. Ob Sie nun eine Open-Source-Lösung wie den Shibboleth SP selbst, eine kommerzielle Alternative oder eine spezialisierte Integration für Ihre Webserver-Plattform bevorzugen – die Entscheidung liegt bei Ihnen. Diese Vielfalt an Optionen gewährleistet, dass Sie den SP finden, der optimal zu Ihrer IT-Infrastruktur und Ihren Sicherheitsrichtlinien passt.

Diese Dokumentation richtet sich vorwiegend auf die Konfiguration des Shibboleth SP und bietet ausgewählte Alternativen an, die bereits am ZIH bewährt im Einsatz sind.

Anbindungsoptionen

Anbindung per Webserver

Anbindungen per Webserver werden im SAML2.0 Protokoll (Standard) oder bedingt per OIDC Protokoll (noch in Entwicklung) angeboten.

SAML2.0 - Atlassian Shibboleth Service Provider 3

Die hier beschriebene Anbindung basiert auf der Vorlage des Atlassian Shibboleth Service Provider 3 Clients. Bitte beachten Sie die technischen Vorraussetzungen und Installation dieses SPs.

Die weitere Konfiguration wird in einem separaten Abschnitt zu SAML2.0 - Atlassian Shibboleth Service Provider 3 angeboten.

OIDC - OpenID Connect Proxy

Der OpenID Connect Proxy wird vom DFN-AAI für Dienste angeboten, die kein SAML Protokoll unterstützen, dafür jedoch auf OIDC ausgelegt sind. Der Proxy verarbeitet das SAML Protokoll der registrierten Heimateinrichtung und bietet dies im OIDC Protokoll als IdP dem SP an.

Mit einem Satz von definierten Attributen bietet der OIDC Proxy eine Alternative, wenn der IdP der Heimateinrichtung kein OIDC unterstützt.

OIDC - Keycloak

Die Anwendung Keycloak kann als Identity Provider mit OIDC Protokoll betrieben werden und ermöglicht die Kommunikation über SAML2.0. Durch die zusätzliche Konfiguration als SP ist es möglich eine Authentifizierung über einen anderen Identity Provider (z.B. SAML2.0 Protokoll) zu realisieren. Keycloak eignet sich somit als Wrapper zwischen SAML2.0 und OIDC ähnlich wie der OpenID Connect Proxy.

Das ZIH bietet hierfür eine containerisierte Lösung an. Eine mögliche Installation und Konfiguration von Keycloak wird in einem separaten Abschnitt angeboten.

Anbindungsprozess

Für die produktive Shibboleth Anbindung am IdP der Technischen Universität Dresden ist vor der Freigabe der Daten ein signierter PDF-Antrag notwendig, den Sie an den Service Desk senden. Eine Test-Anbindung an die Shibboleth Test-Umgebung ist jeder Zeit möglich und ohne großen Beantragungsprozess verbunden. Hier genügt eine formlose E-Mail an den Service Desk.

Zur Reduktion der Bearbeitungsdauer während des Anbindungsprozesses und unabhängig davon, ob Ihre Anbindung als Test oder für die Produktion erfolgen soll, befolgen Sie bitte die nachfolgenden Punkte.

Vorbereitung Seitens Service Providers

  1. Sind die technischen Voraussetzungen vorhanden?
  2. Welche Attribute sollen am IdP freigegeben werden (siehe Welche Attribute werden benötigt?)?
  3. Sind UI Informationen berücksichtigt worden?
    • Anzeigename (deutsch/englisch)
    • Beschreibung der Anwendung (deutsch/englisch)
    • Link zur Datenschutzerklärung (deutsch/englisch)

Technische Voraussetzungen

Diese Checkliste soll Ihnen helfen, um vor der Antragsstellung sicherzugehen, dass der Service Provider alle Voraussetzungen erfüllt.

  1. entityId nach den Vorgaben definiert
  2. Service Provider installiert und konfiguriert (siehe Anbindungsoptionen)
  3. SAML2.0 Zertifikat entspricht den Vorgaben der DFN-AAI? (siehe https://doku.tid.dfn.de/de:certificates). Hinweis: Verwenden Sie keine browserverankerten Zertifikate. Aufgrund der zukünftig geringen Gültigkeit von browserverankerten Zertifikaten müssten sehr häufig aufwendige Zertifikatsrollover durchgeführt werden. Lesen Sie hier zur Generierung von selbstsignierten Zertifikaten.
  4. Metadaten beinhalten SAML2.0 Zertifikat für Signierung und Verschlüsselung. Ebenfalls empfohlen ist die Angabe der benötigen Attribute in den Metadaten.
  5. Metadaten liegen für die Beantragung vor bzw. werden manuell im DFN-AAI-MDV erstellt.

Welche Attribute werden benötigt?

Während der Beantragung sollte Ihnen bewusst sein, welche Informationen Ihr SP vom IdP benötigt. Bitte teilen Sie uns die erforderlichen Attribute im Antrag oder in den Metadaten (siehe auch Metadaten) des SPs mit.

Einen Überblick über einen Satz häufig verwendeter Attribute finden Sie auf folgenden Seiten:

Tipps & Tricks

SAML Zertifikat selbstsigniert erstellen

Verwenden Sie folgenden Befehl um Ihr SAML Zertifikat für Ihren SP mit der entityId https://meine-domain.de/shibboleth zu erstellen.

openssl req -x509 -newkey rsa:3072 -keyout shibboleth-sp.key -out shibboleth-sp.pem -days 1170 -nodes -subj "/CN=https:\/\/meine-domain.de\/shibboleth/"

SAML Zertifikatstausch ohne Rollover

Ein SP, der kein Zertifikatsrollover unterstützt, weil nur genau ein Zertifikat gleichzeitig aktiv sein kann, hat die Möglichkeit, sein SAML-Zertifikat (öffentlicher Schlüssel) zu aktualisieren, indem er bei der Ausstellung des neuen Zertifikats den gleichen privaten Schlüssel my-same-saml-key.pem verwendet wie das bisherige Zertifikat. Dadurch funktioniert die Kryptographie auch zwischen altem und neuen Zertifikat.

openssl req -x509 -new -nodes -key my-same-saml-key.pem -sha256 -days 1170 -out my-new-saml-cert.pem

Hinweis: Der Schlüssel my-same-saml-key.pem sollte zu den aktuellen Vorgaben der DFN-AAI passen z.B. 3072 Bits.

Weiterführende Informationen