So Deaktivieren Sie einen LDAP-Benutzer?
Benutze ich eine Bibliothek zum authentifizieren der LDAP-Benutzer, dessen code ist wie folgt:
public void authUser(String username, String pwd)
throws Exception
{
try
{
Properties env = getEnvironmentForContext();
env.put("java.naming.security.principal", "uid=" +
username + ",ou=users, dc=company"));
env.put("java.naming.security.credentials", pwd);
context = getContext(env);
System.out.println("Authentication Succeeded");
}
catch (Exception e)
{
System.out.println("Authentication Failed");
throw e;
}
}
Bitte beachten Sie, ich kann nicht ändern die oben genannten Authentication Code. Es kommt aus einer externen Bibliothek.
Aber, ich will zu deaktivieren einige Benutzer (nicht löschen), so dass die Authentifizierung Fehlschlägt.
Ich bin mit LDAP (Active Directory). Nicht wissen, was LDAP-Software ist es jedoch, ich kann eine Verbindung über 'LDAP-Browser-Client".
Den Benutzer vorhanden sind, unter: dc=company, ou=users, uid=username
, Mit welchem Attribut kann ich das hinzufügen/ändern von LDAP-Nutzer zu de-aktivieren eines Benutzers.
Könnte ich den user einer anderen Gruppe wie: dc=company, ou=deactivatedusers, uid=username? Aber dies ist nicht die bevorzugte option, zuzüglich nicht sicher bin, beste Weg das zu tun.
EDIT: Die LDAP verwendet wird, ist: Netscape/Sun/iPlanet
- Es würde wirklich helfen, wenn Sie mir sagen, welche Art von directory-client mit dem Sie sich verbinden. Das Attribut deaktiviert\ermöglicht es einem Benutzer sehr unterschiedlich sein können von Anbieter zu Anbieter. Wenn Sie Softerra kostenlos LDAP-Browser hier gefunden zu verbinden, in dem "Profil" - Registerkarte, tut es ein Verzeichnis "Typ"?
- Ja, es sagt: Netscape/Sun/iPlanet - das ist der LDAP verwendet wird.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beantworten Ihre Frage per die Oracle iPlanet (Sun) Dokumentation :
Jedoch in Bezug auf den code, den Sie bereits haben, nur ich sehe keinen Weg, dies zu erreichen... gibt es etwas, das verhindert, dass Sie vom schreiben Ihrer eigenen Implementierung für iPlanet mit der
System.DirectoryServices.Protocols
- namespace in .Net?Hier ist, wie ich bind und autorisieren Sie Benutzer gegen einen iPlanet-server :
Wenn Sie sich bewegen wollte, deaktivierte Benutzer zu einer bestimmten Gruppe, von dieser Stelle könnten Sie schreiben, die Logik zu überprüfen, die
DistinguishedName
des Benutzers, und werfen eine Ausnahme behandelt, wenn IhreDistinguishedName
enthält den Namen der Gruppe. Auch, wenn diensAccountLock
- Attribut zur Verfügung, um Ihr Konto verbindlich als lesbares Attribut, können Sie einfach überprüfen Sie den Wert dieses Attributs fürtrue
ab, und behandelt die user dementsprechend.Hier ist der java-code für das deaktivieren und aktivieren der Benutzer in Active Directory mithilfe von JNDI.
Stellen Sie sicher, dass eine Verbindung mit Ihrer ANZEIGE vor dem Aufruf folgenden code.
Distinguished name = "CN=John ABC,OU=Users,OU=jemand,DC=yourcompanyname,DC=com"
Dieser name ist, hängt von Ihrer Struktur von Active Directory arbeiten, können Sie von Ihrem Support-team.
Wenn die directory-software unterstützt eine Passwort-policy-Funktion, die es wohl ermöglicht, die Attribute zu sperren/deaktivieren Sie den Benutzer. Wenn nicht, können Sie einfach aufheben das Kennwort-Attribut (z.B., userpassword). Der LDAP-server zurückgeben sollte, die "unangemessene Authentifizierung" Fehler an den client, wenn der authentifizierte Bindung ausgeführt.
Könnte man einfach das Passwort des Benutzers ändern. Wenn es OpenLDAP mit der Passwort-policy-overlay oder einem anderen LDAP-server, der Ihnen erlaubt sperren, sperren Sie die Benutzer, wie gut. Sie wirklich haben, um es herauszufinden.