2016-07-04 11 views
1

Ich authentifiziere Django-Benutzer gegen eine Active Directory (LDAP) -Datenbank mit django-auth-ldap.Kann Django mehrere LDAP-Authentifizierungen auf ein einzelnes Benutzerobjekt zuordnen?

Unsere Konvention für sAMAccountName (normalerweise die eindeutige ID für einen AD-Account) ist firstname.surname. Es ist möglich, dass sich dieser Wert für einen logischen Benutzer ändert. Zum Beispiel könnte sich ihr Nachname bei Heirat oder Scheidung ändern.

Wir verlangen außerdem, dass Benutzer sich mit ihrem E-Mail-Präfix anstelle ihrer sAMAccountName anmelden, um die Benutzerfreundlichkeit zu erhöhen. In den meisten Fällen entspricht dieser Wert sAMAccountName. In einigen Fällen hat ein Benutzer jedoch zwei E-Mail-Adressen (1. legaler Name, 2. englisch/westlicher Name). In anderen Fällen unterscheiden sich E-Mail und sAMAccountName aus historischen Gründen. In allen Fällen (AD-Bezeichneränderungen, zwei E-Mail-Bezeichner für einen Benutzer, E-Mail-Kennung! = sAMAccountName) sollten mehrere gültige LDAP-Authentifizierungen demselben logischen Django-Benutzer zugeordnet werden - sie sollten nicht die Erstellung mehrerer unabhängiger Benutzer auslösen Objekte.

Wie können wir die Authentifizierung für dieses Szenario konfigurieren?

  • Aliase. Wenn es möglich ist, einen Django-Benutzer einem "primären" Benutzer zuzuordnen, anstatt mehrere Authentifizierungen für denselben Benutzer, wäre das eine akzeptable Lösung.
  • Alternative Bibliotheken. Wenn ein anderer gut gepflegt Django/LDAP-Authentifizierung Bibliothek wird den Job (z django-auth-ldap-ng)
+0

Nichts in Django würde die Zuordnung mehrerer AD-Benutzer zu einem einzelnen Django-Benutzer verbieten. Wie Sie vorgehen, hängt vollständig vom Django-Authentifizierungs-Backend ab, das Sie verwenden. – psagers

+0

@psagers aktualisierte Frage zu erwähnen Backend (django-auth-ldap) - offen für Vorschläge, um es zu wechseln – d3vid

Antwort

1

django-auth-ldap hat eine documented mechanism Sie den Benutzer-Erstellungsprozess lassen anpassen. Indem Sie das Backend ableiten und diese Methode überschreiben, können Sie LDAP-Benutzer beliebig auf Django-Benutzer abbilden.