2016-06-26 25 views
0

TL; DR: Ich möchte eine Moodle-Installation und eine ASP.NET Identity-basierte Site-Freigabe-Authentifizierung machen. Wenn sie eine einzige Anmeldeseite haben, ist es umso besser, aber die Anmeldung bei einem Benutzer sollte sich automatisch beim anderen anmelden. Logout sollte ebenfalls geteilt werden.Integration von Moodle und ASP.NET Identity 2.1


Ich habe eine Moodle-Installation (M) bei www.example.com/moodle, und eine andere Website (O) bei www.example.com.

  • O verwendet geschrieben .NET 4.5.2 und hat Bereiche, die eine Authentifizierung für den Zugriff benötigen, verwaltet mit ASP.NET Identität 2.1 mit einem benutzerdefinierten Benutzermodell. Dieses Modell ist nicht besonders anspruchsvoll. Es ist im Wesentlichen das Out-of-the-Box-Modell, aber mit Ganzzahl-IDs anstelle von GUIDs.
  • M ist Version 2.6, mit der Absicht, in naher Zukunft auf die neueste Version (derzeit 3.1) zu aktualisieren.
  • Beide sind über das öffentliche Internet zugänglich; Es ist nicht erforderlich, in einem privaten Netzwerk auf sie zuzugreifen.
  • Ich kenne keine Pläne, entweder M oder O in eine andere Domäne zu verschieben. Wenn jedoch einer oder beide sich bewegen sollten, würde ich mir vorstellen, dass sie sich in eine Subdomain von example.com bewegen würden.

Ich möchte ein Single-Sign-On-System zu schaffen, ein Login für M ermöglicht dem Benutzer auch in O loggt sein. So wie es aussieht, verwende ich das externe Datenbank-Authentifizierungs-Plugin für Moodle, mit M bezogen auf die Datenbank für O. Während dies funktioniert, muss der Benutzer sich zweimal anmelden. Ich möchte es so einrichten, dass die Anmeldung bei entweder ModerO den Benutzer auf der anderen Website protokolliert.

  • Ich bin in der Lage, passende Hashes aus PHP und .NET-Code zu erstellen. Sofern es für die Lösung nicht besonders relevant ist, sollten Sie die Erstellung von Hashes nicht in Betracht ziehen.
  • Einige Benutzer von M verwenden die integrierte Moodle-Authentifizierung. Sofern die Lösung jedoch nicht besonders relevant ist, sollten Sie die Migration von Benutzern nicht in Betracht ziehen.
  • Ich würde O bevorzugen, um Benutzer zu verwalten, wenn möglich. M, von Natur aus Moodle, muss seine eigenen Aufzeichnungen für die Benutzer haben, aber ich würde es mögen, wenn sie den Aufzeichnungen durch das externe DB-Plugin ähnlich waren: nur zu sagen, dass der Benutzer existiert und sein kann woanders gefunden.

Dinge, die ich habe versucht, untersucht oder in Betracht gezogen:

  • externe Datenbank Plugins Moodle. So funktioniert es im Moment. Es funktioniert irgendwie, erfordert aber mehrere Logins.
  • Automatisierung der Mehrfachanmeldungen. Ich habe versucht, die geposteten Anmeldeinformationen zu verwenden, indem ich beim Anmelden eine HTTP-Anforderung vom Server an die jeweiligen Anmeldeformulare der Websites gesendet habe, das Cookie aus der Antwort entfernt und dieses Cookie dann zurück an den Client gesendet habe. Das funktioniert auch, aber es ist im besten Fall klobig und ist darauf angewiesen, dass die Cookies nicht aus dem Takt geraten.
  • Mit PHP DOTNET-Bibliothek und tun ... etwas. Die gesamte Dokumentation, die ich finden kann, besagt, dass DOTNET mit nichts anderem als .NET 2.0, 3.0 oder 3.5 funktioniert. Ich benutze 4.5.2, also scheint das ein No-Go zu sein. Ich weiß nicht, was ich tun würde, selbst wenn ich es mit neueren Versionen von .NET arbeiten könnte.
  • Irgendwie bekommen Moodle das ASP.NET Identity Cookie anstelle seiner eigenen akzeptieren. Dies scheint der fruchtbarste Weg zu sein, da es sich um einen einzigen Cookie handelt.

Zum Abschluss: Ich mag würde M und O Aktien Authentifizierung machen. Wenn sie eine einzige Anmeldeseite haben, ist es umso besser, aber die Anmeldung bei einem Benutzer sollte sich automatisch beim anderen anmelden. Logout sollte ebenfalls geteilt werden. Ist das möglich, und weiß jemand, wie ich vorgehen soll?

Antwort