10

現在、Active Directory といくつかの LDAP を使用した小さなプロジェクトに取り組んでいます... LDAP サーバーに接続しようとすると、常に同じエラーが表示されます。

[LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1

私が知っている限り、これは資格情報が間違っていることを意味しますが、それらが正しいことは 100% 確信しています! パラメータを忘れたのでしょうか?

Hashtable<String, String> env = new Hashtable<String, String>();

env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://libertycity.ch:389/dc=libertycity,dc=ch");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.SECURITY_PRINCIPAL, "uid=" + username + ",ou=Users");
env.put("java.naming.ldap.attributes.binary", "objectSID");

DirContext ctx = new InitialDirContext(env);

私のコードは正しいと思いますか、それとも何か見落としていませんか? 何が問題で、どうすればそれを見つけることができますか?

4

6 に答える 6

19

エラーで提供される値「data 52e」は、次の理由によりバインドが失敗したことを意味します。

http://ldapwiki.com/wiki/Common%20Active%20Directory%20Bind%20Errors

于 2013-05-28T15:35:41.560 に答える
11

この問題は、完全なドメインがユーザー名に含まれていない場合にも発生する可能性があります。

セキュリティ プリンシパルを として設定しusername@domainます。

InitialLdapContext ldapContext = new InitialLdapContext();
ldapContext.addToEnvironment(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
ldapContext.addToEnvironment(Context.SECURITY_AUTHENTICATION, "simple");
ldapContext.addToEnvironment(Context.SECURITY_PRINCIPAL, userId + "@mydomain.com");
ldapContext.addToEnvironment(Context.SECURITY_CREDENTIALS, password);                  
ldapContext.addToEnvironment(Context.PROVIDER_URL, "ldap://" + ldapHost + ":" + ldapPort);
于 2015-07-29T06:23:17.903 に答える
1

LDAP error code 49 indicates "Invalid credentials" which means the password you sent to the LDAP server was not correct.

于 2013-05-28T14:46:59.730 に答える
1

Active Directory: ドメイン コンテナーを確認します。

eDirectory から Active Directory への移行で同じエラーが発生しました。ユーザー名とパスワードは正しいように見えましたが、何らかの理由で、パスワードが正しくないことを示す「52e」エラーがまだ発生していました。

DC (ドメイン コンテナー) をプリンシパルに追加して機能させる必要がありました。

これは機能していませんでした:

env.put(Context.SECURITY_PRINCIPAL, "CN="+username+",OU=Users,OU=Org,OU=ETC");

DCの追加: (これは私にとってはうまくいきました)

 env.put(Context.SECURITY_PRINCIPAL, "CN="+username+",OU=Users,OU=Org,OU=ETC,DC=yourorg,DC=com");

これにより、Active Directory の問題が解決されました。

この問題を解決するのに本当に役立ったのは、Linux ldapbind / ldapsearch コマンドhttps://docs.oracle.com/cd/B10501_01/network.920/a96579/comtools.htmを使用してバインドしようとしたことです。

ldapbind / ldapsearch コマンドを使用して OS から動作させる場合、コードで使用する正確なパラメーターがわかります。

于 2016-06-28T18:04:24.130 に答える