通过ssl作为匿名用户进行Active Directory身份validation

我可以使用Spring-ldap为使用为ContextSource生命周期配置的用户validationActive Directory。 我的Spring xml配置看起来像lilke:

        

用于validation用户的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打开Ldap v3。

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

此外,我需要通过SSLvalidation用户。 为此我用过

  

但我有例外:

 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] 

在搜索时,我得到了解决方案,我需要指出存储证书的密钥库。 在这里,我不知道在哪里(在java类或xml文件中)。

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

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

  1. 确保已根据“通过SSL连接到LDAP或其他服务”说明将证书导入密钥库。
  2. 确保已将任何证书导入到正确的密钥库中; 你可能有多个JDK。

关于DevZer0对我的SSL问题回答的一些补充。

只需按照此链接中的说明获取证书并将其放入jre \ lib \ security \文件夹即可。

http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification-path-to-requested-target/