Как обработать и пользовательскую ошибку 401 из Spring boot ldap? - PullRequest
0 голосов
/ 23 октября 2018

Я работаю в приложении, которое использует Spring Secutiry LDAP для аутентификации своих пользователей, аутентификация работает нормально, моя проблема в том, что если кто-то пытается войти в систему с неавторизованными учетными данными, приложение немедленно отправляет ошибку 401, и яЯ не хочу этого, я хочу настроить несколько дружественных сообщений, чтобы показать этого пользователя, но даже в отладке я не могу найти, где приложение выполняет аутентификацию, даже кажется, что мой бэкэнд не вызывается, как я могу настроить этоисключение?

Вот моя конфигурация в моем классе конфигурации безопасности:

@Configuration
@Order(2147483640)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

protected void configure(HttpSecurity http) throws Exception {
    http.httpBasic().and()
            .cors().and()
            .csrf().disable()
            .authorizeRequests()
            .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
            .antMatchers(HttpMethod.GET, "/**").permitAll()
            .antMatchers(HttpMethod.POST, "/**").permitAll()
            .antMatchers(HttpMethod.PUT, "/**").permitAll()
            .antMatchers(HttpMethod.DELETE, "/**").permitAll()
            .antMatchers("/**").permitAll();
}

@Configuration
protected static class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter {

    @Autowired
    private UsrPessoaService usrPessoaService;

    @Override
    public void init(AuthenticationManagerBuilder auth) throws Exception {
        auth.ldapAuthentication().userDetailsContextMapper(usrPessoaService)
                .userDnPatterns("secret")
                .groupSearchBase("secret")
                .contextSource()
                .root("secret")
                .url("secret").port(000);

        System.out.println(auth.toString());
    }
}

}

Заранее благодарен за любую помощь!

1 Ответ

0 голосов
/ 23 октября 2018

Рассматривали ли вы страницу WhiteLabel ?

Например:

https://www.baeldung.com/spring-boot-custom-error-page

@RequestMapping("/error")
public String handleError(HttpServletRequest request) {
    Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);

    if (status != null) {
        Integer statusCode = Integer.valueOf(status.toString());

        if(statusCode == HttpStatus.NOT_FOUND.value()) {
            return "error-404";
        }
        else if(statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) {
            return "error-500";
        }
    }
    return "error";
}

И пример "error.html"template:

<!DOCTYPE html>
<html>
<body>
<h1>Page not found</h1>
<h2>Sorry, we couldn't find the page you were looking for</h2>
<a href="/">Go Home</a>
</body>
</html>

ADDENDUM:

Поскольку OP имеет угловой интерфейс, эти ссылки также могут быть применимы:

Учебное пособие:Spring Security и Angular .

В этом руководстве мы покажем некоторые приятные возможности совместной работы Spring Security, Spring Boot и Angular для обеспечения приятного и безопасного взаимодействия с пользователем.

Он должен быть доступен для новичков с Spring и Angular, но также есть много деталей, которые будут полезны экспертам в любом из них.

См. Также:

https://github.com/spring-projects/spring-security/blob/master/web/src/main/java/org/springframework/security/web/AuthenticationEntryPoint.java

...