ldap和springboot整合

ldap和springboot整合(自己项目遇到的坑)
首先导入相关maven依赖:
在这里插入图片描述

2.在application-local.properties配置:
#sn 真实名称 cn-名字 ou-部门 o-公司
#配置ldap服务器的ip和端口(端口一般是389)
spring.ldap.urls=ldap://ip:端口
#base-dn 要查询的唯一标识:
#所有查询的绝对路径 查询users中组织的域名后缀是cn的用户
spring.ldap.embedded.base-dn=ou=users,o=组织,dc=cn
##登录服务器的用户名和密码 最简单的就是下载一个ldap客户端,填了信息登录一下
####!!!!username要填写的信息!!!!
#后面还可以写多个dc 根据自己的公司配置来(有些的username就是有ou=。。但是有些就没有,要自己会判断)了
spring.ldap.username=cn=登录用户名,o=组织,dc=cn
#密码 直接写密码即可
spring.ldap.password=密码

3.实体类Person
@Data
@ToString
//entry(条目 其实就相当于数据库中的一条数据) objectClasses必填 但是这个也是不一样的
@Entry(objectClasses = {“inetOrgPerson”}, base = “ou=users,o=组织,dc=cn”)
public class Person {
@Id
@JsonIgnore
private Name dn; (相当于主键 例:dn=cn=用户名,ou=users,o=组织,dc=cn)
/**
* 人员账号
/
@Attribute(name = “cn”)
private String personName;
/
*
* 用户类型
*/
@Attribute(name = “employeeType”)(attribute是实体类和ldap中字段的映射)
private String userType;
@Attribute(name = “givenName”)
private String userName;
}

4.配置之后就可以做简单的增删改查了 不过客户端调用的话 一般都是查询多
例(我用的是mybatis-plus 正常写即可):
@Service
public class UserService extends ServiceImpl<UserMapper, Users> {
@Resource
private LdapTemplate ldapTemplate;

//用ldapTemplate操作ldap

1.验证登录用户的名和用户密码(ldaptemplate其他操作方式自己查)
public void getUsersMessage(String userName, String userPassword) {
//先验证用户是否存在 若是存在,再验证用户密码是否正确
List list = ldapTemplate.find(query().base(“ou=users,o=组织,dc=cn”).where(“cn”).is(userName), Person.class);
if(ListUtil.isNotEmpty(list)){
Boolean flag=ldapTemplate.authenticate(list.get(0).getDn(), “(objectclass=inetOrgPerson)”, userPassword);
System.out.println(“密码是否正确:”+flag);
//true说明密码正确
}
}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值