我有一个JAVA应用程序,它使用UnboundID LDAP SDK连接并验证LDAP本地服务器。
服务器是带有Active Directory的Windows Server 2008 R2,并且配置为不允许匿名身份验证
但是如果我尝试使用我的应用程序执行匿名绑定,那么BindResult就会成功。
我正在使用像JAVADOC says这样的SimpleBindRequest()方法进行连接。这是我的代码:
public boolean autenticarAnonimamente() throws AutenticacaoExcecao
{
GerenciadorConexaoLdap gerenciadorLdap = new GerenciadorConexaoLdap();
LDAPConnection connection;
try {
connection = gerenciadorLdap.conectarServidorLdap(ldap);
SimpleBindRequest request = new SimpleBindRequest();
BindResult result = connection.bind(request);
boolean retorno = result.getResultCode().equals(ResultCode.SUCCESS);
connection.close();
return retorno;
} catch (LDAPException | GeneralSecurityException ex) {
throw new AutenticacaoExcecao(ex);
}
}
我尝试使用Google Apps Directory Sync测试我的服务器,它拒绝任何匿名绑定。如果我将我的服务器配置为允许匿名连接,那么Google应用程序的结果就可以了 有谁知道会是什么?
答案 0 :(得分:2)
目前尚不清楚区别是什么,但肯定是调用connection.bind(new SimpleBindRequest())会向服务器发送匿名简单绑定请求,并导致客户端从服务器
几乎可以肯定的是,Google Apps Directory Sync正在发送不同的绑定请求(可能是SASL ANONYMOUS绑定请求,或者可能是具有非空DN但空密码的请求),或者您在Google Apps Directory Sync中看到的失败实际上并不是绑定失败,而是在绑定后尝试执行的操作。
我建议您尝试检查客户端和服务器之间的流量,以了解Google客户端尝试执行的操作。随UnboundID LDAP SDK提供的ldap-debugger工具可用于实现此目的。它充当一个非常简单的LDAP代理,它将显示有关通过它的任何流量的详细信息。您还可以使用任何类型的网络数据包捕获机制,如snoop,tcpdump或Wireshark来捕获网络通信以进行分析。