gpt4 book ai didi

java - 通过 ssl 作为匿名用户进行 Active Directory 身份验证

转载 作者:行者123 更新时间:2023-12-01 23:45:49 25 4
gpt4 key购买 nike

我能够使用 Spring-ldap 对配置了 ContextSource 生命周期的用户进行 Active Directory 身份验证。我的 Spring xml 配置看起来像这样:

<bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
<property name="contextSource" ref="contextSource" />
</bean>


<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="url" value="ldap://xxx.xxx.xxx.xxx:389" />
<property name="userDn" value="myName@xxx.xxx" />
<property name="password" value="password" />

</bean>

用于验证用户身份的java代码是:

public boolean login(String username, String password) {
AndFilter filter = new AndFilter();
this.ldapTemplate.setIgnorePartialResultException(true); // Active Directory doesn’t transparently handle referrals. This fixes that.
filter.and(new EqualsFilter("objectCategory","****"));
filter.and(new EqualsFilter("objectClass","****"));
filter.and(new EqualsFilter("sAMAccountName", username));
return this.ldapTemplate.authenticate("OU=myBaseOu,DC=xyz,DC=def", filter.encode(), password);

}

即使我没有在 contextSource bean 中设置 userDnpassword 属性,Linux open Ldap v3 也同样适用。

我需要的只是配置此 xml,以便我可以作为匿名用户访问 Active Directory(无需设置 userDn 和密码)。

我还需要通过 SSL 对用户进行身份验证。为此我使用了

<property name="url" value="ldaps://xxx.xxx.xxx.xxx:636" /> 

但我遇到了这样的异常:

Exception in thread "main" org.springframework.ldap.CommunicationException: simple bind failed: 192.168.0.13:636; nested exception is javax.naming.CommunicationException: simple bind failed: 192.168.0.13:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]

虽然在搜索时,我得到了解决方案,我需要指出存储证书的 keystore 。这里我不确定这个在哪里(在java类中还是在xml文件中)。

您的快速回复将不胜感激。谢谢。

最佳答案

我做了一些研究,发现其他应用程序也存在类似问题。

  1. 确保您已按照通过 SSL 连接到 LDAP 或其他服务的说明将证书导入到 keystore 中。
  2. 确保所有证书已导入到正确的 keystore 中;您可能有多个 JDK。

关于java - 通过 ssl 作为匿名用户进行 Active Directory 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17084534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com