1

匿名バインディングを許可しない LDAP サーバーに接続しようとするときに Java を使用しても、エラーは発生しません。しかし、クライアントを使用してそのサーバーに匿名で接続すると、接続できません。LDAP サーバーが匿名バインディングをサポートしているかどうかを識別する方法はありますか?

// Set up environment for creating initial context
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://"+host+":"+port+"/");     
env.put(Context.SECURITY_PRINCIPAL, dn);
env.put(Context.REFERRAL, "follow");
env.put(VsomConstants.LDAP_CONNECT_TIMEOUT, SystemPreferencesHelper.getLdapConnectionTimeOut().toString());

env.put(Context.SECURITY_AUTHENTICATION, "none");

// Create initial context
ctx = new InitialDirContext(env);
4

1 に答える 1

1

匿名バインディングを許可しないに対してコードを実行すると、次のようになります。

javax.naming.AuthenticationNotSupportedException: [LDAP: error code 48 - Anonymous Simple Bind Disabled

あなたが提供したコードのラッパーとしてテストするためのメソッドを使用しました:

try
{
   doSimpleBind(args[0], args[1], args[2]);
}
catch (NamingException e)
{
   e.printStackTrace();
}

あなたの行が何なのかわからない:

env.put(VsomConstants.LDAP_CONNECT_TIMEOUT,SystemPreferencesHelper.getLdapConnectionTimeOut().toString());

だったので、コメントアウトしました。

-ジム

于 2013-01-24T10:43:40.217 に答える