2009-02-19 17 views
5

Ich bin an den Best Practices für die Verwendung der LDAP-Authentifizierung in einer Java-basierten Webanwendung interessiert. In meiner App möchte ich nicht Benutzername \ Passwort, nur einige IDs speichern. Ich möchte jedoch zusätzliche Informationen (Name, Nachname) abrufen, wenn sie in einem LDAP-Katalog vorhanden sind.LDAP Best Practices

Antwort

6

Mein Team verwendet LDAP als Standardauthentifizierungsmethode. Grundsätzlich behandeln wir LDAP wie jede andere Datenbank.

Um Benutzer zur Anwendung hinzuzufügen, müssen Sie einen aus LDAP auswählen oder in LDAP erstellen; Wenn ein Benutzer aus der Anwendung gelöscht wird, verbleibt er in LDAP, hat jedoch keinen Zugriff auf die Anwendung.

Sie müssen grundsätzlich nur LDAP-Benutzernamen lokal speichern. Sie können entweder LDAP-Daten (E-Mail, Abteilung usw.) jedes Mal aus LDAP lesen oder in der Anwendung abrufen, obwohl das Lesen aus LDAP wahrscheinlich einfacher und intelligenter ist, da sich LDAP-Daten ändern können. Wenn Sie umfangreiche LDAP-Daten melden oder verwenden möchten, sollten Sie sie natürlich aus LDAP abrufen (manuell oder mit Batch-Task).

Die nette Sache ist, dass sobald ein Benutzer in LDAP deaktiviert ist, es in allen Anwendungen auf einmal deaktiviert ist; Außerdem hat der Benutzer in allen Anwendungen dieselben Anmeldeinformationen. Im Unternehmensumfeld mit einer Reihe von internen Anwendungen ist dies ein großes Plus. Verwenden Sie LDAP nicht für Benutzer nur für eine Anwendung. in diesem Szenario keine wirklichen Vorteile.

1

Wenn Sie mehr als eine webbasierte Anwendung verwenden und die LDAP-Authentifizierung verwenden möchten, ist eine vordefinierte Lösung für die einmalige Anmeldung möglicherweise besser als die Erstellung einer eigenen LDAP-Authentifizierung. CAS unterstützt die LDAP-Authentifizierung und kann die Daten abrufen, die Sie für Ihre Anwendung benötigen.

An meiner Hochschule haben wir tatsächlich CAS als Single-Sign-On gegen unseren Active Directory-Server implementiert. Wir verwenden CAS auch zur Authentifizierung unserer J2EE-Anwendungen und arbeiten daran, CAS zur Authentifizierung unserer PHP-Anwendungen zu verwenden.

Wir verwenden AD, um die Benutzer für die Domäne zu halten. Abhängig vom Benutzertyp gibt es bestimmte Organisationseinheiten. Die Benutzer haben jeweils eine eindeutige ID, die zufällig ihre Studenten-/Angestellten-ID ist, so dass Anwendungen diese als Primärschlüssel in ihren Datenbanken verwenden können. Wir haben eine datenbankbasierte Autorisierungsmethode für unsere PHP-Anwendungen. Die Autorisierung für die J2EE-Anwendung stammt von einem Wert in LDAP.

Viel Glück mit Ihrer Anwendung.

0

Also möchten Sie Benutzer nur ID eingeben, und dann den Rest ihrer Informationen aus LDAP holen? Das ist ziemlich einfach.

  1. erstellen LdapInitial Kontext und eine Verbindung zu LDAP
  2. Führen Sie eine Suche nach der ID (es soll als eine Attributwert gespeichert werden) - z.B. (& (userid = John) (objectclass = user)) - das bedeutet "userid = John und objectclass = user"
  3. Search Objekt würde alle Attribute enthalten (oder die, die Sie gefragt)

Einige LDAP Implementierungen (bemerkenswertes MS ActiveDirectory LDAP) können Sie keine Verbindung mit anonymen Benutzer herstellen. Für diese benötigen Sie eine technische Benutzer-ID/ein Passwort für die Verbindung.

Wie oben erwähnt, ist LDAP normalerweise sinnvoll, wenn Sie viele Anwendungen haben.

P.S. Um herauszufinden, was LDAP ist, versuchen Sie Apache Directory Studio.

+0

Nicht ganz so! In meiner App-Datenbank möchte ich nur die ID speichern und den zugehörigen DN von LDAP. Und wenn ich zusätzliche Informationen über Benutzer brauche, kann ich es aus dem Verzeichnis mit DN –

+0

Bis zu Ihnen, obwohl es eine Duplizierung ist. Aber was fragst du wirklich? –

4

Allgemeine Best Practices für LDAP finden Sie unter "LDAP: Programming practices".

+2

Link ist tot, aber eine Zusammenfassung finden Sie unter https://ff1959.wordpress.com/2011/10/27/ldap-programming-best-practices/ –