Ich habe eine Anforderung, bei der ich die Standardbenutzerauthentifizierung durch die Authentifizierung eines zentralen Servers, dh eines SSO-Servers, ersetzen muss.
Durch das Debuggen von Drupal wurde mir klar, dass die gesamte Sitzungsverwaltung in einer includes/session.inc
Datei stattfindet. Ich möchte die Authentifizierung wie im Bild gezeigt durchführen:
SZENARIO: Login
Die Details der Schritte wären:
- Ersetzen Sie das Anmeldeformular, um den Benutzernamen und das Kennwort an den SSO-Server zu senden ( nicht auf Drupal , sondern auf .NET).
- Authentifizieren Sie den Benutzer auf dem SSO-Server mithilfe der Datenbank dieser Site. und senden Sie eine Antwort an eine benutzerdefinierte PHP-Seite meiner Website (oder ein Formular von einem Modul?).
- Identifizieren Sie anhand der Antwort den Benutzer in der Benutzertabelle und erstellen Sie eine Sitzung für diesen Benutzer, ohne nach dem Kennwort zu suchen (da dies eine doppelte Authentifizierung bedeuten würde). Standardmäßig legt Drupal ein Cookie mit dem
$insecure_session_name
Variablennamen und dem Wert fest$sid
. Ich möchte, dass Drupal das Cookie hier nicht setzt, sondern die Werte der Variablen an den SSO-Server sendet. - Der SSO-Server übernimmt die Werte, erstellt ein Cookie und legt es in der Hauptdomäne ab
domain.com
(um beide zu erinnern,my website
undsso server
befindet sich in der Unterdomäne der Hauptdomäne, die ebenfalls nicht in Drupal enthalten ist). Dann kann sich die Drupal-Site mit diesem Cookie anmelden.
Ich weiß, es ist eine schwierige Frage. Ich suche nur nach Hinweisen, wie ich anfangen soll. wie sie sagen "Sie sollten den Kern nicht hacken". Meine Fragen lauten also:
- Wo sollte ich nachsehen, um zu verstehen, wie Drupal-Authentifizierung und Sitzungsverwaltung im Detail funktionieren?
- Gibt es eine Möglichkeit, die Funktionen mit
includes/session.inc
Hilfe von Hooks aufzurufen (wie in den Kommentaren mit Funktionen steht "nur für den internen Gebrauch / nicht zu ändern")?
HINWEIS: Der Benutzer wird auf dieselbe Weise registriert, sodass der Datensatz in der zentralen Datenbank des SSO-Servers verbleibt. Und währenddessen wird ein Junk-Passwort für denselben Benutzer in die Datenbank der Drupal-Site eingegeben (da das Passwort während der Anmeldung nicht überprüft wird).