匿名绑定使用UnboundID LDAP sdk

时间:2014-05-20 14:30:05

标签: java active-directory ldap bind unboundid-ldap-sdk

我有一个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应用程序的结果就可以了 有谁知道会是什么?

1 个答案:

答案 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来捕获网络通信以进行分析。