Drupal SAML Single Sign On mit SimpleSAMLphp als Identitätsanbieter
Übersicht
Die Drupal SAML-Integration mithilfe von miniOrange SAML SP-Modul stellt nahtloses SSO zwischen SimpleSAMLphp und der Drupal-Site her. Die Benutzer können sich mit ihren SimpleSAMLphp-Anmeldeinformationen bei der Drupal-Site anmelden. Dieses Dokument führt Sie durch die Schritte zum Konfigurieren von Single Sign-On – SSO zwischen Drupal als Service Provider (SP) und SimpleSAMLphp als Identity Provider (IdP). Das Modul ist kompatibel mit Drupal 7, Drupal 8, Drupal 9, Drupal 10 und Drupal 11.
Installationsschritte
- Verwenden von Composer
- Mit Drush
- Manuelle Installation
Konfigurationsschritte
Drupal SAML SP-Metadaten
- Gehe zu Konfiguration → Personen → SAML-Anmeldekonfiguration im Verwaltung Menü. (/admin/config/people/miniorange_saml/idp_setup)
- Kopieren Sie auf der Registerkarte „Dienstanbieter-Metadaten“ die Datei SP-Entitäts-ID/Aussteller kombiniert mit einem nachhaltigen Materialprofil. SP ACS-URL und halten Sie sie griffbereit. Diese SP-Metadaten werden benötigt, um SimpleSAMLphp als Identity Provider (IdP) zu konfigurieren.
Konfigurieren Sie SimpleSAMLphp als Identitätsanbieter
-
Öffnen Sie im SimpleSAML-Installationsverzeichnis config/config.php und folgendes bearbeiten:
'enable.saml20-idp' ⇒ wahr
- Aktivieren Sie die UserPass-Authentifizierung Modul (enthalten in exampleauth). Dies geschieht durch die Erstellung einer Datei mit dem Namen ermöglichen (Dateiname) in module/exampleath/.
-
Erstellen Sie eine Authentifizierungsquelle in config/authsources.php. Die Datei sollte einen einzelnen Eintrag enthalten, siehe unten:
'__DEFAULT__', /* * Der private Schlüssel und das Zertifikat, die beim Signieren von Antworten verwendet werden sollen. * Diese werden im Zertifikatsverzeichnis gespeichert. */ 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', /* * Die Authentifizierungsquelle, die zur Authentifizierung des * Benutzers verwendet werden soll. Diese muss mit einem der Einträge in config/authsources.php übereinstimmen. */ 'auth' => '' Beispiel:- 'example-userpass', // Dies finden Sie in Schritt 1 ];
Diese Konfiguration erstellt zwei Benutzer – Student und Employee – mit den Passwörtern „studentpass“ und „employeepass“. Benutzername und Passwort werden im Array-Index gespeichert (student:studentpass für den Studentenbenutzer). Die Attribute für jeden Benutzer werden im Array konfiguriert, auf das der Index verweist. Für den Studentenbenutzer sind dies also:
[ 'uid' => ['Student'], 'eduPersonAffiliation' => ['Mitglied', 'Student'], ],
Die Attribute werden vom IdP zurückgegeben, wenn sich der Benutzer anmeldet.
- Generieren Sie ein selbstsigniertes Zertifikat mit einer der folgenden Methoden:
-
Verwenden des OpenSSL-Befehls
openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out example.org.crt -keyout example.org.pem
-
Generieren Sie es mit beliebigen Online-Tools und fügen Sie sie dem Zertifikatsverzeichnis hinzu.
Die Erweiterung sollte wie folgt aussehenexample.org.crt //(Öffentlicher Schlüssel)example.org.pem //(Privater Schlüssel)
-
Hinweis: SimpleSAMLphp funktioniert nur mit RSA-Zertifikaten. DSA-Zertifikate werden nicht unterstützt.
-
Der SAML 2.0 IdP wird durch die in gespeicherten Metadaten konfiguriert metadata/saml20-idp-hosted.phpDies ist eine Minimalkonfiguration:
'__DEFAULT__', /* * Der private Schlüssel und das Zertifikat, die beim Signieren von Antworten verwendet werden sollen. * Diese werden im Zertifikatsverzeichnis gespeichert. */ 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', /* * Die Authentifizierungsquelle, die zur Authentifizierung des * Benutzers verwendet werden soll. Dies muss mit einem der Einträge in config/authsources.php übereinstimmen. */ ' auth' => '' Beispiel:- 'example-userpass', // Sie finden dies in Schritt Nummer 1 ];
-
Der Identitätsanbieter, den Sie konfigurieren, muss über die Dienstanbieter Bescheid wissen, mit denen Sie sich verbinden möchten. Dies wird durch Metadaten konfiguriert, die in metadata/saml20-sp-remote.php gespeichert sind. Dies ist ein minimales Beispiel für eine metadata/saml20-sp-remote.php-Metadatendatei für einen SimpleSAMLphp SP: (Ersetzen Sie example.com mit Ihrem Drupal-Domänenname.)
'https://example.com/samlassertion', 'SingleLogoutService' => 'https://example.com/user/logout', 'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid -format:emailAddress', 'simplesaml.nameidattribute' => 'mail', 'simplesaml.attributes' => true, 'attributes' => array('mail', 'givenname', 'sn', 'memberOf'), ];
Hinweis: Die URI in der Entitäts-ID und die URLs zu den Endpunkten des AssertionConsumerService und des Single Logout Service ändern sich je nach Dienstanbieter. Wenn Ihnen die Metadaten des Remote-SP als XML-Datei vorliegen, können Sie den integrierten XML-zu-SimpleSAMLphp-Metadatenkonverter verwenden, der standardmäßig unter /admin/metadata-converter.php in Ihrer SimpleSAMLphp-Installation verfügbar ist.
- Gehen Sie zur SimpleSAMLphp-Homepage der Installation. (Die URL einer Installation kann z. B. sein https://service.example.com/simplesaml/ (wobei service.example.com durch Ihren SimpleSAMLphp-Pfad ersetzt werden muss.)
- Navigieren Sie zur Registerkarte „Föderation“ und klicken Sie auf Metadaten anzeigen(Diese IdP-Metadaten werden benötigt, um Drupal als Service Provider zu konfigurieren.)
Konfigurieren Sie Drupal als SAML-Dienstanbieter:
- Gehen Sie zu Ihrer Drupal-Site. Navigieren Sie zu Einrichtung des Dienstanbieters des Moduls und klicken Sie auf das Laden Sie IDP-Metadaten hoch.
- Laden Sie die zuvor heruntergeladene Metadatendatei von SimpleSAML in die hoch Metadatendatei hochladen Textfeld und klicken Sie auf Datei hochladen .
Hinweis: Führen Sie die folgenden Schritte aus, um den Namen des Identitätsanbieters zu aktualisieren:
- Der ActionWählen Sie die Bearbeiten.
- Geben Sie SimpleSAMLphp in das Name des Identitätsanbieters Textfeld.
- Scrollen Sie nach unten und klicken Sie auf Konfiguration speichern .
- Klicken Sie auf den Link „Test“, um die Verbindung zwischen Drupal und SimpleSAMLphp zu testen.
- Melden Sie sich im Popup „Testkonfiguration“ mit Ihren SimpleSAMLphp-Zugangsdaten an (falls keine aktive Sitzung besteht). Nach erfolgreicher Authentifizierung wird eine Liste der von SimpleSAMLphp empfangenen Attribute angezeigt. Klicken Sie auf die Schaltfläche Erledigt .
Herzlichen Glückwunsch! Sie haben SimpleSAMLphp erfolgreich als SAML-Identitätsanbieter (IdP) und Drupal als SAML-Dienstanbieter konfiguriert.
Wie funktioniert die SAML SSO-Anmeldung?
- Öffnen Sie einen neuen Browser/ein neues privates Fenster und navigieren Sie zur Anmeldeseite der Drupal-Site.
- Klicken Sie auf die Anmeldung mit Identitätsanbieter (SimpleSAMLphp) Link.
- Sie werden zur SimpleSAMLphp-Anmeldeseite weitergeleitet. Geben Sie die SimpleSAMLphp-Anmeldeinformationen ein. Nach erfolgreicher Authentifizierung wird der Benutzer zurück zur Drupal-Site geleitet.

Kontaktieren Sie uns