Wie gebe ich einen LDAP-Benutzernamen für die Verbindung zu Active Directory an?

7

Ich versuche mein Programm in LDAP zu integrieren. Ich habe hier einen Active Directory-Server, der anscheinend LDAP spricht. Ich möchte sehen, was sich auf dem Server befindet, bevor ich versuche, meinen eigenen Code zu debuggen. Ich habe ein Programm namens jxplorer gefunden, das behauptet, mit LDAP-Servern kommunizieren zu können.

Ich kann es jedoch nicht zum Laufen bringen. Ich verwende Einstellungen:

  • Host: (IP-Adresse meines AD-Servers)
  • Hafen: 389
  • Protokoll: LDAPv3
  • Basis-DN: OU = MyCompany, DC = Domänencontroller, DC = lokal (eine Zeichenfolge, die ich von jemand anderem in meiner Firma erhalten habe, der hier zuvor LDAP-Code geschrieben hat)
  • Stufe: Benutzer + Passwort
  • Benutzer-DN, Kennwort: (mein Benutzername und Kennwort auf diesem Exchange-Server)

Der Fehler, den ich bekomme, ist:

javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID=0C090334, comment: AcceptSecurityContext error, data 525, vece ]

Der andere LDAP-Typ hier sagt, 525 sei "Benutzer nicht gefunden" und vermutet, dass der Benutzername möglicherweise in der "LDAP-Nomenklatur" angegeben werden muss.

Weiß jemand, wie man mit jxplorer eine Verbindung zu AD herstellt?

Ken
quelle
1
Wenn Sie andere Fehlercodes erhalten (525, 52e ...), finden Sie hier eine Liste der Entsprechungen zwischen Code und "echtem Fehler": www-01.ibm.com/support/docview.wss?uid=swg21290631
Frosty Z.

Antworten:

7

Herausgefunden: Es ist nicht Ihre Benutzeranmeldung. Es ist ein LDAP-DN wie:

CN=My Name,OU=My Company,DC=server,DC=local
Ken
quelle
2
Beachten Sie, dass Ihr Anmeldename in AD normalerweise sAMAccountName lautet. Also Ken. Während Ihr CN davon abhängt, wie die Person, die Sie erstellt hat, zum Zeitpunkt der Erstellung den Anzeigenamen eingegeben hat. Das könnte Ken Smith oder Smith, Ken oder Ken J. Smith sein oder eigentlich alles, was sie mögen. (
Denken Sie
1

Übergeben Sie die LDAP-Benutzer-ID und das Kennwort direkt fest codiert.

Beispiel:

     Hashtable env = new Hashtable();         
     env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.REFERRAL, "follow");
env.put(Context.SECURITY_PRINCIPAL,"adminuserid");
env.put(Context.SECURITY_CREDENTIALS,"adminPassword");
env.put(Context.PROVIDER_URL,"ldapUrllink");
DirContext ctx = new InitialDirContext(env);

Das sollte funktionieren.

danke Sajith

Sajith P.
quelle