Jboss Spring Security Rest - Использование настроенной области LDAP - PullRequest
0 голосов
/ 06 мая 2020

Прочтите довольно много статей о Spring Security и LDAP. Однако не смог найти прямого ответа.

То, что мне нужно, - есть ли способ использовать Spring Security, но использовать уже настроенную область LDAP в JBoss для аутентификации? Я не могу использовать аутентификацию по базе форм.

Я смотрел на https://www.baeldung.com/spring-security-authentication-provider, но как вы вызываете здесь настроенную область LDAP?

Если вы позже используете перехватчик и выполните request.login (UserName , Пароль) все работает. Однако это не лучший способ сделать это. Кроме того, если вы делаете это через перехватчик, вам нужно написать свой собственный код для декодирования имени пользователя и пароля из basi c Auth.

Пример:

@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
  ..
  @Override
    public Authentication authenticate(final Authentication authentication) throws AuthenticationException {
        final String name = authentication.getName(); 
        final String password = authentication.getCredentials().toString();
   ...
}

Здесь вы можете получить имя и пароль для декодирования. Однако, поскольку объект запроса недоступен, вы не можете выполнить request.login (имя пользователя, пароль).

Пример через перехватчик:

public class XXXX implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
      //To get user name and password you need to decode Base64.
      String authUser = userPassDecoded.substring(0, userPassDecoded.indexOf(':'));
      String authPass = userPassDecoded.substring(userPassDecoded.indexOf(':') + 1);


    // do login manually
    request.login(authUser, authPass);
        try {
           request.login("<USERNAME>", "<PASSWORD>");

        }catch(Exception e){
            System.out.println(e);
        }
        // check roles for the user
        final Principal userPrincipal = request.getUserPrincipal();


...

}

Этот код будет работать. Но должен быть способ настроить Spring Secruity для использования области LDAP, определенной в JBoss.

Я знаю, что это можно сделать, когда у вас есть форма, но для службы Rest это неясно.

Что Я бы не хотел настраивать весеннюю конфигурацию LDAP и иметь пароль LDAP в базе кода.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...