ldap和springboot整合

ldap和springboot整合(自己项目遇到的坑)
首先导入相关maven依赖:
ldap和springboot整合_第1张图片

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
##登录服务器的用户名和密码
####!!!!username要填写的信息!!!!不用写ou=users
#血的教训!网上翻了好多配置username都各不一样,坑死我了
#后面还可以写多个dc 根据自己的公司配置来,但是不要写ou=。。。了
spring.ldap.username=cn=登录用户名,o=组织,dc=cn
#密码 直接写密码即可
spring.ldap.password=密码

3.实体类Person
@Data
@ToString
//entry(条目 其实就相当于数据库中的一条数据) objectClasses必填 但是这个也是不一样的
@Entry(objectClasses = {“inetOrgPerson”}, base = “ou=users,o=ndky,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 {
@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说明密码正确
}
}

}

你可能感兴趣的:(java)