Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision |
de:shibidp3x509 [2020/05/14 09:48] – Silke Meyer | de:shibidp3x509 [2021/04/26 15:03] – Silke Meyer |
---|
====== X509-Authentifizierung in Shibboleth ====== | ====== X509-Authentifizierung in Shibboleth ====== |
| <callout color="#ff9900" title="Veraltete IdP-Version!"> |
| </callout> |
Ein Login-Vorgang am Shibboleth-IdP besteht im Allgemeinen aus verschiedenen //Flows//. Nachdem eine Anfrage von einem Service Provider (SP) empfangen wurde, geht der IdP in einen der verfügbaren Flows zur Authentifizierung über. Dabei handelt es sich beispielsweise um den Password-Flow authn/Password, wobei sich der Nutzer durch die Eingabe von Nutzername und Passwort authentifizieren kann. Diese Daten werden dann gegen eine angeschlossene Datenquelle (häufig LDAP-Server) geprüft. Am Ende dieses Flows steht die //Subject-Canonicalization//, die das Erzeugen eines Benutzernamens (auch //Principal// genannt) für den Nutzer, der sich gerade erfolgreich authentifiziert hat, beschreibt. Unter diesem Benutzernamen ist der Nutzer im weiteren Verlauf im IdP bekannt. Normalerweise entspricht dieser Name schlichtweg dem Nutzernamen. | Ein Login-Vorgang am Shibboleth-IdP besteht im Allgemeinen aus verschiedenen //Flows//. Nachdem eine Anfrage von einem Service Provider (SP) empfangen wurde, geht der IdP in einen der verfügbaren Flows zur Authentifizierung über. Dabei handelt es sich beispielsweise um den Password-Flow authn/Password, wobei sich der Nutzer durch die Eingabe von Nutzername und Passwort authentifizieren kann. Diese Daten werden dann gegen eine angeschlossene Datenquelle (häufig LDAP-Server) geprüft. Am Ende dieses Flows steht die //Subject-Canonicalization//, die das Erzeugen eines Benutzernamens (auch //Principal// genannt) für den Nutzer, der sich gerade erfolgreich authentifiziert hat, beschreibt. Unter diesem Benutzernamen ist der Nutzer im weiteren Verlauf im IdP bekannt. Normalerweise entspricht dieser Name schlichtweg dem Nutzernamen. |
| |
| |
In diesem Beispiel werden zwei Client-Zertifikate verwendet: | In diesem Beispiel werden zwei Client-Zertifikate verwendet: |
| - emailAddress=mustermann@dfn-cert.de, CN=Erika Mustermann, OU=Test, O=Organisation 1, C=DE |
| - emailAddress=mustermann@dfn-cert.de, CN=Erika Mustermann, OU=Test, O=Organisation 2, C=DE |
| |
Zertifikat 1: emailAddress=mustermann@dfn-cert.de, CN=Erika Mustermann, OU=Test, O=Organisation 1, C=DE | Die Zertifikate sind durch folgende Zertifikat-Hierarchie ausgestellt: |
| - C=DE,O=Test,CN=Test Eins CA |
Zertifikat 2: emailAddress=mustermann@dfn-cert.de, CN=Erika Mustermann, OU=Test, O=Organisation 2, C=DE | - C=DE,O=Test,CN=Test Intermediate |
| - C=DE,O=Test,CN=Test Root (Root CA) |
Die Zertifikate sind nun durch folgende Zertifikat-Hierarchie ausgestellt: | |
| |
C=DE,O=Test,CN=Test Eins CA | |
| |
C=DE,O=Test,CN=Test Intermediate | |
| |
C=DE,O=Test,CN=Test Root | |
| |
Bei „CN=Test Root“ handelt es sich in diesem Beispiel um die Root CA. | |
| |
Die beiden Zertifikate unterscheiden sich also nur durch die Zugehörigkeit zu Organisation 1 bzw. Organisation 2. | |
| |
Beide Zertifikate wurden als Client-Zertifikate in den Browser importiert. | Die beiden Zertifikate unterscheiden sich also nur durch die Zugehörigkeit zu Organisation 1 bzw. Organisation 2. Beide Zertifikate wurden als Client-Zertifikate in den Browser importiert. |
| |
===== Konfiguration der Authentifizierung in Shibboleth ===== | ===== Konfiguration der Authentifizierung in Shibboleth ===== |
Weiterhin werden laut [[https://wiki.shibboleth.net/confluence/display/IDP30/X509AuthnConfiguration|Shibboleth Wiki]] noch drei optionale Konfigurationsmöglichkeiten des Flows in ''{idp.home}/conf/authn/x509-authn-config.xml'' angeboten. In der Praxis dürfte in den meisten Fällen jedoch nur einer davon relevant sein: | Weiterhin werden laut [[https://wiki.shibboleth.net/confluence/display/IDP30/X509AuthnConfiguration|Shibboleth Wiki]] noch drei optionale Konfigurationsmöglichkeiten des Flows in ''{idp.home}/conf/authn/x509-authn-config.xml'' angeboten. In der Praxis dürfte in den meisten Fällen jedoch nur einer davon relevant sein: |
| |
''shibboleth.authn.X509.externalAuthnPath'' erlaubt das Festlegen des Pfads, auf den weitergeleitet werden soll, sobald der Login-Flow aufgerufen wird. Standardmäßig wird der Nutzer dabei auf eine vorgeschaltete Seite weitergeleitet (siehe Abbildung ) und muss explizit bestätigen, dass er nun einen Login per X509-Zertifikat wünscht (was dann zur Weiterleitung auf den Endpunkt /Authn/X509 führt). Wenn dieses Verhalten nicht gewünscht ist, kann dieser Parameter direkt auf den Endpunkt gesetzt werden. | ''shibboleth.authn.X509.externalAuthnPath'' erlaubt das Festlegen des Pfads, auf den weitergeleitet werden soll, sobald der Login-Flow aufgerufen wird. Standardmäßig werden die Nutzer*innen dabei auf eine vorgeschaltete Seite weitergeleitet (siehe Abbildung). Dort müssen sie explizit bestätigen, dass sie einen Login per X509-Zertifikat wünschen. Dann werden sie auf den Endpunkt /Authn/X509 weitergeleitet. Wenn dieses Verhalten nicht gewünscht ist, kann dieser Parameter direkt auf den Endpunkt gesetzt werden. |
| |
{{:de:screenshot_x509-login.png| \\ | {{:de:screenshot_x509-login.png|Standardmäßig konfigurierte Hinweis-Seite vor der Weiterleitung auf den geschützten Endpunkt}} |
Abbildung 1: Standardmäßig konfigurierte Hinweis-Seite vor der Weiterleitung auf den geschützten Endpunkt}} | |
| |
**Abbildung 1:** Standardmäßig konfigurierte Hinweis-Seite vor der Weiterleitung auf den geschützten Endpunkt | |
===== Validierung der Zertifikate in Apache ===== | ===== Validierung der Zertifikate in Apache ===== |
| |
</code> | </code> |
| |
Zu beachten ist, dass dies nicht innerhalb einer Location-Angabe in Apache erfolgen darf, da insbesondere Apache in der Version 2.4 und mit aktueller OpenSSL-Version damit nicht zurechtkommt. Stattdessen muss diese Angabe direkt im Virtual-Host gesetzt werden. | Die Direktive muss direkt im VirtualHost stehen, nicht innerhalb einer Location-Angabe. |
| |
==== Schutz des X509-Endpunkts des IdP ==== | ==== Schutz des X509-Endpunkts des IdP ==== |
Hier wird der wie oben beschrieben erzeugte Principal als Eingangswert für das Attribut ''uid'' verwendet. | Hier wird der wie oben beschrieben erzeugte Principal als Eingangswert für das Attribut ''uid'' verwendet. |
| |
{{tag>idp3}} | {{tag>idp3 fixme moveme}} |