java web集成ldap_关于Java LDAP登录集成

最近项目需要集成LDAP的登录,所以简单研究了一下ldap的集成主要有以下几个步骤:

一、配置spring boot的LDAP配置文件

1.配置pom文件:

org.springframework.boot

spring-boot-starter-data-ldap

org.springframework.boot

spring-boot-starter-web

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

com.alibaba

fastjson

1.2.62

2.配置LDAP的数据元信息:

spring.ldap.urls=ldap://127.0.0.1:389

spring.ldap.base=DC=dc-test,DC=com

spring.ldap.username=cn=cnName,ou=ouName,dc=dc-test,dc=com

spring.ldap.password=******

这样配置就可以正常的查询ldap的数据信息了

二、查询实例:

ldapTemplate.lookup("OU=ouName", new AttributesMapper() {

@Override

public Object mapFromAttributes(Attributes attributes) throws NamingException {

return attributes;

}

});

一开始一直不能查询到数据提示:

org.springframework.ldap.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-03100238, problem 2001 (NO_OBJECT), data 0, best match

原因其实就是查询的条件不对,我这边查询的时候应该从我这边给定的ou开始查询比如我这边给定的是ouName所以应该从ouName开始查询,如果要查询下级则需要两个条件一起输入查询比如

ldapTemplate.lookup("OU=ouNameNext,OU=ouName", new AttributesMapper() {

@Override

public Object mapFromAttributes(Attributes attributes) throws NamingException {

return attributes;

}

});

注意结构应该是左边是下级部门,右边是上级部门

三、最后递归查询所有的部门及成员信息:

@Test

public void getAllTree() {

List nameList = new ArrayList<>();

getCurrentDept("OU=ouName", nameList);

}

private void getCurrentDept(String base, List nameList) {

List nameClassPairMapperList = ldapTemplate.list(base, new NameClassPairMapper() {

@Override

public NameClassPair mapFromNameClassPair(NameClassPair nameClassPair) throws NamingException {

return nameClassPair;

}

});

if (nameClassPairMapperList.size() == 0) {

return;

}

for (NameClassPair nameClassPair : nameClassPairMapperList) {

// System.out.println(nameClassPair.getNameInNamespace().substring(0, nameClassPair.getNameInNamespace().indexOf("DC") - 1));

getCurrentDept(nameClassPair.getNameInNamespace().substring(0, nameClassPair.getNameInNamespace().indexOf("DC") - 1), nameList);

}

nameList.addAll(nameClassPairMapperList);

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值