我试图将使用 Java 6 和 Apache Directory API 的用户添加到在 Windows Server 2008 上运行的 Active Directory,但我得到的结果是(UNWILLING_TO_PERFORM),现在我明白它需要安全连接并使用 unicodePwd 属性来添加密码,我做到了,或者至少尝试过这样做。服务器管理员为我在添加用户时使用的帐户创建了一个证书,我将其导出并将其添加到 /jre/lib/security/ 中的 cacert。
我试图查看是否可以在不执行任何操作的情况下安全地连接到 AD 服务器,我得到 2 个绑定操作失败的场景 .bind():
1-如果我使用端口 636 连接并使用 ldapNetworkConnection 中可用的 startTLS() :那么我要么得到 PROTOCOL_ERROR 服务器将断开连接
2-如果我使用端口 389 连接并使用 LdapConnectionConfig 中可用的 startTLS(),我会得到“无法初始化 SSL 上下文”和“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 APIs 它给了我一个更合理的错误,显然问题来自 SSL 握手,我的应用程序无法找到有效的证书,有什么建议吗?
非常感谢任何帮助。
谢谢,