LDAP实现AD域账号验证 |
您所在的位置:网站首页 › AD域管理员账号无法认证ldap › LDAP实现AD域账号验证 |
前言
本文描述如何使用springboot对接LDAP服务器实现用户输入用户名密码之后对其进行验证。 步骤主要参考了这篇文章,在对接上遇到了PartialResultException相关的一些报错,主要查阅这个大佬的文章,最终把报错解决了。 步骤这里先假设所给的LADP服务器是:music.baidu.com:389,服务器用户名密码是:admin/admin123,测试账号是:test/test123。 引入依赖 org.springframework.boot spring-boot-starter-data-ldap 配置yml参数 spring: ##AD认证 ldap: ##AD服务器IP,默认端口389 urls: ldap://music.baidu.com:389 ##登录账号 username: admin ##密码 password: admin123 #distinguishedName的部分节点 base: DC=music,DC=baidu,DC=com 配置类读取配置 @Configuration public class LdapConfig { @Value("${spring.ldap.urls}") private String ldapUrl; @Value("${spring.ldap.username}") private String userName; @Value("${spring.ldap.password}") private String passWord; @Value("${spring.ldap.base}") private String base; @Bean public LdapContextSource ldapContextSource(){ LdapContextSource source = new LdapContextSource(); source.setBase(base); source.setUrl(ldapUrl); source.setPassword(passWord); source.setUserDn(userName); return source; } @Bean public LdapTemplate ldapTemplate(){ return new LdapTemplate(ldapContextSource()); } } Service类实现验证 public interface LdapService { boolean ldapAuth(String username, String passWord); } @Service public class LdapServiceImpl implements LdapService { @Autowired private LdapTemplate ldapTemplate; @Override public boolean ldapAuth(String username, String passWord) { ldapTemplate.setIgnorePartialResultException(true); EqualsFilter filter = new EqualsFilter("sAMAccountName",username); return ldapTemplate.authenticate("",filter.toString(),passWord); } }其中比较重要的是:ldapTemplate.setIgnorePartialResultException(true);,没有这个的话,会报PartialResultException的错误。如果你也报这样的错误,那请把这段加上。 其中filter使用了sAMAccountName,关于这里为什么使用sAMAccountName其实是因为windows的AD域控帐号就分两种userprincipalname和sAMAccountName。 userprincipalname或sAMAccountName的区别: [email protected] sAMAccountName=name Controller测试 @RestController public class DemoController { @Autowired private LdapService ldapService; @GetMapping("/ap") public Boolean ap() { return ldapService.ldapAuth("test", "test123"); } }启动之后访问:http://localhost:8087/ap 就可以在控制台看到验证的结果了。 源码下载LDAP实现AD域账号验证 总结只是用来验证window的AD用户账号的话,使用LdapTemplate就可以了,不要忘记设置:ldapTemplate.setIgnorePartialResultException(true); 参考https://blog.csdn.net/qq_40365331/article/details/102921793 https://www.it610.com/article/1293764933611233280.htm https://stackoverflow.com/questions/37486159/springs-ldaptemplate-search-partialresultexception-unprocessed-continuation-r |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |