通过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中设置userDn和password属性,同样适用于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文件中)。
您的快速回复将不胜感激。 谢谢。
我做了一些研究,发现其他应用程序有类似的问题。
- 确保已根据“通过SSL连接到LDAP或其他服务”说明将证书导入密钥库。
- 确保已将任何证书导入到正确的密钥库中; 你可能有多个JDK。
关于DevZer0对我的SSL问题的回答的一些补充。
只需按照此链接中的说明获取证书并将其放入jre \ lib \ security \文件夹即可。
- Java SSO:针对Active Directory的Kerberos身份validation
- 密码的SPNEGO身份validation问题
- 每次从Ldap连接池返回新连接时
- Java SimpleDateFormat总是返回1月份的月份
- 如何配置JDBC连接以使用与当前用户不同的AD用户?
- 在尝试使用unboundid LDAP SDK更改scala中的密码时,如何解决“WILL_NOT_PERFORM”MS AD回复?
- 如何将Java连接到Active Directory
- 通过Java执行ADS相关的Powershell命令在使用2种不同方式时不会产生2种不同的错误
- 如何使用Spring Security对Active Directory服务器进行身份validation?