Использование CAS для SSO / аутентификации и групп LDAP (memberOf) для авторизации в Spring Boot / Spring Security App - PullRequest
0 голосов
/ 30 апреля 2020

При создании этого приложения я следовал руководству, которое позволило мне подключить приложение к CAS и войти в систему. Сейчас я тоже пытаюсь подключить LDAP, но получаю ошибки и путаюсь. Мой первый вопрос касается моего AuthenticationManagerBuilder. Так как я использую CAS для аутентификации, мне нужно будет только поставить CAS в этом методе, правильно? В настоящее время это выглядит так:

  @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(casAuthenticationProvider);}

В моем application.properties есть записи ldap, которые выглядят так:

spring.ldap.urls=ldap://ldap.xxx.xxx:389
spring.ldap.base=OU=xxx,DC=xxx,DC=xxx
spring.ldap.username=uid=xxx,ou=xxx,dc=xxx,dc=xxx
spring.ldap.password=*password*

Мое первоначальное тестирование было с этим битом кода, но оно всегда возвращает Java Нулевое исключение:

ArrayList<?> memberOf = ldapTemplate.search(
        query().where("uid").is(userCN),
        (AttributesMapper<ArrayList<?>>) attrs -> Collections.list(attrs.get("memberOf").getAll())).get(0);

Хотя я уверен, что в 2020 году есть намного более чистый способ обработки авторизации. В настоящее время у нас есть более 50 групп ldap (с использованием OpenLDAP). Одно приложение разрешит доступ только членам двух или трех групп. Каков был бы самый чистый способ использования CAS для единого входа, но групп LDAP для авторизации?

Любая помощь приветствуется, спасибо!

...