Java 如何确定LDAP服务器是否允许匿名绑定?

Java 如何确定LDAP服务器是否允许匿名绑定?,java,ldap,anonymous,Java,Ldap,Anonymous,当我尝试连接到不允许匿名绑定的LDAP服务器时,使用java不会出现任何错误。但是,当我使用客户端匿名连接到该服务器时,我无法。有没有办法确定LDAP服务器是否支持java中的匿名绑定 // Set up environment for creating initial context Hashtable<String, Object> env = new Hashtable<String, Object>(); env.put(Context.INITIAL_CONTE

当我尝试连接到不允许匿名绑定的LDAP服务器时,使用java不会出现任何错误。但是,当我使用客户端匿名连接到该服务器时,我无法。有没有办法确定LDAP服务器是否支持java中的匿名绑定

// 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);
//设置创建初始上下文的环境
Hashtable env=新的Hashtable();
put(Context.INITIAL\u Context\u工厂,“com.sun.jndi.ldap.LdapCtxFactory”);
env.put(Context.PROVIDER_URL,“ldap://”+host+:“+port+”/”;
环境put(Context.SECURITY_PRINCIPAL,dn);
环境投入(Context.reference,“follow”);
put(VsomConstants.LDAP_CONNECT_TIMEOUT,SystemPreferencesHelper.getLdapConnectionTimeOut().toString());
环境put(Context.SECURITY_身份验证,“无”);
//创建初始上下文
ctx=新的初始目录上下文(env);

当我针对不允许匿名绑定的服务器运行代码时,我得到:

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());
是的,所以我把它注释掉了


-jim

当我针对不允许匿名绑定的服务器运行代码时,我得到:

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());
是的,所以我把它注释掉了


-吉姆

试试看?处理异常?试试看?并处理异常?对于我尝试连接的服务器,我没有收到此异常。这就是我想知道是否有办法通过java检查LDAP服务器是否允许匿名绑定的原因?LDAP协议中没有任何内容允许您确定服务器是否允许匿名绑定。您应该使用已知良好的LDAP客户机(ApacheStudio或LDAP服务器供应商提供的命令行实用程序)尝试此操作,以确定服务器是否真正不支持匿名绑定。也许它支持匿名绑定,但没有匿名权限。匿名绑定和匿名权限之间的实际区别是什么?大多数LDAP服务器实现可以根据LDAP实现中的访问控制设置来确定将权限授予匿名绑定用户。对于我尝试连接的服务器,我不明白这个例外。这就是我想知道是否有办法通过java检查LDAP服务器是否允许匿名绑定的原因?LDAP协议中没有任何内容允许您确定服务器是否允许匿名绑定。您应该使用已知良好的LDAP客户机(ApacheStudio或LDAP服务器供应商提供的命令行实用程序)尝试此操作,以确定服务器是否真正不支持匿名绑定。也许它支持匿名绑定,但没有匿名权限。匿名绑定和匿名权限之间的实际区别是什么?大多数LDAP服务器实现可以根据LDAP实现中的访问控制设置来确定将权限授予匿名绑定用户。