Apache 目录 API 拒绝将用户添加到 Active Directory "(UNWILLING_TO_PERFORM)"



我试图使用Java 6和Apache Directory API将用户添加到运行在windows server 2008上的Active Directory,但我得到的结果是(UNWILLING_to_PERFORM),现在我知道它需要一个安全的连接,并使用unicodePwd属性来添加密码,我已经这样做了,或者至少尝试过这样做。服务器管理员为我添加用户时使用的帐户创建了一个证书,我将其导出并添加到/jre/lib/security/中的cacert中。

我试着看看我是否可以在不执行任何操作的情况下安全地连接到AD服务器,我得到了两个绑定操作失败的场景。bind():

1-如果我使用端口636连接,并使用ldapNetworkConnection中可用的startTLS():那么我要么得到PROTOCOL_ERROR服务器,就会断开

2-如果我使用端口389连接并使用LdapConnectionConfig中可用的startTLS(),我会得到"初始化SSL上下文失败"one_answers"IllegalArgumentException:TLSv1.1"

我添加了信托经理,但仍然没有运气,下面是迄今为止的代码。

  LdapConnectionConfig config = new LdapConnectionConfig();
            config.setLdapHost(IP);
            config.setLdapPort(389);

            TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            tmf.init((KeyStore)null);
            config.setTrustManagers(tmf.getTrustManagers());
            config.setName("CN=TestAdmin,CN=Users,DC=bmrk,DC=com");
            config.setCredentials("P@ssw0rd");
 LdapNetworkConnection ldapNetworkConnection = new LdapNetworkConnection(config);
ldapNetworkConnection.connect();
            ldapNetworkConnection.startTls();
            ldapNetworkConnection.bind();

//编辑我切换到JNDI LDAP API,这给了我一个更合理的错误,显然问题来自SSL握手,我的应用程序找不到有效的证书,有什么建议吗?

非常感谢您的帮助。

谢谢,

如果有人感兴趣,我唯一的问题是在cacerts文件中添加生成证书的服务器作为CA颁发机构,这样JVM就可以信任服务器颁发的证书——尽管它与JNDI ldap API配合得很好,但与Apache Directory不配合——不确定原因。

因此,我的建议是使用JNDI而不是Apache目录,并确保将用于登录Active Directory的帐户的证书导出为PKCS12,并将其添加到密钥库中。

因此它有2个证书,1个用于登录/绑定帐户,1个用作CA(证书颁发机构)的服务器。

此外,Java 6支持TLSv1作为最大安全协议,这不是Apache LDAP的标准情况,因此升级Java或使用JNDI。

它与Java7。

相关内容

  • 没有找到相关文章

最新更新