• SpringBoot:整合LDAP


    依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-ldap</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    

    配置

    application.yml

    spring:
      ldap:
        urls: ldap://192.168.1.53:389
        username: cn=Manager,${spring.ldap.base}
        password: hadoop
        base: dc=haohaozhu,dc=com
    

    实体类和Dao

    /**
     * @author wen.jie
     * @date 2021/5/8 12:31
     */
    @Data@ToString
    @Entry(base = "ou=people,dc=haohaozhu,dc=com", objectClasses = "inetOrgPerson")
    public class Person {
    
        @Id
        private Name id;
        @DnAttribute(value = "uid")
        private String uid;
        @Attribute(name = "cn")
        private String cn;
        @Attribute(name = "sn")
        private String sn;
        @Attribute(name="mail")
        private String mail;
        @Attribute(name = "homedirectory")
        private String homedirectory;
        @Attribute(name = "gidnumber")
        private String gidnumber;
        @Attribute(name = "uidnumber")
        private String uidnumber;
    
    }
    
    public interface PersonRepository extends LdapRepository<Person> {
    }
    

    测试

    @SpringBootTest
    class BootLdapApplicationTests {
    
        @Autowired
        private PersonRepository personRepository;
    
        @Autowired
        private LdapTemplate template;
    
        @Test
        public void findAll() {
            personRepository.findAll().forEach(System.out::println);
        }
    
        @Test
        public void findAll2() {
            Person person = template.findOne(LdapQueryBuilder.query().where("uid").is("ldapuser2"), Person.class);
            System.out.println(person);
        }
    
        @Test
        public void authenticationTest() {
            String uid = "ldapuser2";
            Person authenticate = template.authenticate(
                    LdapQueryBuilder.query().where("uid").is(uid),
                    "hadoop",
                    (dirContext, ldapEntryIdentification) ->
                            template.findOne(LdapQueryBuilder.query().where("uid").is(uid), Person.class));
            System.out.println(authenticate);
        }
    }
    

    findAll:

    image-20210508134514490

    findAll2:

    image-20210508134535472

    authenticationTest:

    image-20210508134602142

  • 相关阅读:
    二维RMQ问题
    乘法逆元的一些求法
    对于一些小的数学的方法的一些记录
    第一次举办比赛记
    牛客网比赛-Wannafly挑战赛27
    [HEOI2012]Akai的数学作业-题解
    线性基简单学习笔记
    1978 Fibonacci数列 3
    1076 排序
    1205 单词翻转
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/14744639.html
Copyright © 2020-2023  润新知