wiki:Accounts/HRZ-Login

Implementierung HRZ-Login

Die Authentifikation gegen die Benutzeraccounts des Hochschulrechenzentrums der Goethe-Universität wird in der Regel über den LDAP-Server vom HRZ geregelt. Nach einigem Ringen mit dem ILIAS/Verfahrensverzeichnis hab ich von Sven Specker 2012 die Zugangsdaten gekriegt, siehe Ticket #60. Mittlerweile verwenden wir bei PhysikOnline die HRZ-Accounts auch für andere Dienste als ILIAS, zB POKAL.

Ein großes Problem beim HRZ-LDAP-Dienst ist, dass die Authentifizierung mit dem Simple Bind-Verfahren realisiert wird. Beim Simple Bind meldet sich der LDAP-Client mit den Benutzerdaten des zu authentifizierenden Benutzers an; der eigentliche LDAP-Dienst (also eine Abfrage nach Daten) wird (in der Regel) dann gar nicht mehr vorgenommen. LDAP ist hier eigentlich ein schlechter Platzhalter.

HRZ-Login in POKAL

Für Sage hat Thomas 2014 einen Simple Bind-Adapter geschrieben, was recht einfach ging weil wir den Code unter Kontrolle haben. In Tickets wird das im Schlüsselticket #801 beschrieben. Siehe #975 für Single-Sign-On bzgl POAK.

HRZ-Login im ILIAS

Problem: ILIAS kann von Haus aus nur Anonymous oder Bind mit vorgegebenem Benutzer/Passwort, aber keinen Simple Bind mit den vom Benutzer eingegebenen Daten. Also muss eine Wrapping-Lösung her.

Übersicht der angebotenen Authentifizierungsmechanismen von ILIAS

Ziele:

  • siehe Accounts/Svens Konzept: eine einzige Anmeldemaske zu haben die gegen die lokale und die remote-Anmeldung (HRZ) geht.
  • Modifikation der Benutzerdaten, injection einer E-Mail-Addy vom Schema benutzername@…

Von ILIAS nativ unterstützte Backends:

  • LDAP: Am meisten Features, man koennte einen eigenen Server/Proxy aufsetzen
  • Shibboleth: relativ kompliziert (Sibboleth-Server muss ohnehin gescriptet werden)
  • CAS: Fällt weg, weil CAS-Server extern ist bzw. man sowas erst bauen müsste. Doppellogin ist dann nicht möglich
  • RADIUS: Wäre noch eine Option
  • SOAP: Wäre das beste, funktioniert aber nicht als Auth-Provider, sondern für reingehende Links mit Auth-Token. Das ist eine andere Baustelle.
  • OpenID: Overkill, geht auch vmtl. nach extern.

LDAP

Bester Kandidat wäre ein eigener LDAP-Server, etwa per CPAN-Modul Net::LDAP::Server. Den könnte man Quick&Dirty so programmieren, dass er Anfragen an die HRZ-Struktur durchgibt und das E-Mail-Field einsetzt. Er könnte auch alle anderen Sparänzchen. Natürlich würde er nur lokal lauschen.

Einen solchen Proxy-LDAP-Server hab ich am 10.10. gegen 5 Uhr programmiert, dank dynamischem Bind kann er auch während einer Sitzung zum Client auf dem Server mehrere Dinge abfragen, wäre also richtig performant. Leider viel mir erst am Ende wieder auf, dass ich zum Simple Bind mit Passwort ja das Passwort des Benutzers brauche, welches ILIAS aber nicht rausrückt (es macht einen Compare nachdem es sich das Passwort-Feld gezogen hat).

Mögliche Lösung: An Ilias rumfrickeln, Simple Bind freischalten. Ist sogar schon implementiert, nur noch nicht bis zur GUI.

ILIAS-Auth-Plugin

Hier müsste man sich in die API etwas einlesen, dann wäre das ansonsten vllt. sogar die einzige Option, um den Dual-Login über nur eine Maske zu bewerkstelligen. Rein technisch ist das die eleganteste Variante. Siehe #107 für das Vorhaben.

RADIUS

Was letztlich umgesetzt wurde, nachdem der eigene LDAP-Server konzeptuell nicht ging, war eine Quick&Dirty-Lösung über FreeRADIUS. The Big Picture sah früher, als ILIAS und POTT noch auf der VM liefen (also alles auf der VM lief), noch so aus:

  +----------+               +-------------+
  |  ILIAS   |               | TRAC (POTT) |
  +----------+               +-------------+
        |                           |
        |                           |
        |                +------------------------+
        |                |  Apache auth_external  |
        |                +------------------------+
        |                           |
        |              +-----------------------------+       +---------------------+
        |              | Apache-Radius-Connector     |---->  | Usermapping         |
        |              | Eigenentwicklung in Perl    |       | mit Alias-Textdatei |
        |              +-----------------------------+       +---------------------+
        |                           |
    +------------------------------------------+
    |     FreeRADIUS (lauscht an localhost)    |
    +------------------------------------------+
     |                          
     |    +-------------+       +-----------------+
     +----| LDAP-Modul  |---->  | HRZ-Ldap-Server |
     |    +-------------+       +-----------------+
     |
     |    +-------------+       +-----------------+
     +----| FILES-Modul |---->  | users.hrzdemo   |
          +-------------+       | Lokale Testuser |
                                +-----------------+

Das POTT (Trac)-Usermapping ist mittlerweile nicht mehr Realität. Siehe #670: Es gibt jetzt im POTT interne Accounts, was schlicht viel einfacher zu handhaben ist.

Seit dem Umzug von ILIAS für PhysikOnline 3 befindet sich ILIAS nun auf einem anderen Server als FreeRadius. Letzteres immer noch auf der VM. Dieser FreeRadius-Server ist eigentlich eine Krücke, die erfunden wurde, weil ILIAS 4.2 von Haus aus selbst kein LDAP-SimpleBind kann (siehe oben). Allerdings war irgendeine Zwischenschicht ohnehin nötig, da wir die Notwendigkeit für Testuser haben und diese irgendwo reinbringen müssen. Außerdem bietet der FreeRADIUS-Server theoretisch eine gute Performance, da er lokal läuft und eine stehende Verbindung zum LDAP-Server pflegt. Ich hätte allerdings eine Eigenentwicklung (egal über welches Protokoll) besser gefunden, weil man dann alles (Apache/ILIAS/etc.) in einem nicht so gefrickelten System zusammenführen könnte. Siehe #107 für dieses Vorhaben.

Wichtige Dateien

Die Konfiguration des Freeradius-Server findet man auf der VM (als Root) unter /etc/freeradius. Siehe auch #801 für diese Diskussion. Die LDAP-Anbindung ist im LDAP-Modul /etc/freeradius/modules/ldap konfiguriert, während das Files-Modul in der Datei /etc/freeradius/modules/files konfiguriert ist.

Siehe auch

  • #801: HRZ-Login für POKAL (SAGE)
  • #107: LDAP-Plugin für ILIAS
Last modified 3 years ago Last modified on Nov 3, 2014 2:42:45 PM