Прочтите довольно много статей о 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 в базе кода.
Спасибо!