Spring boot + AD аутентификация, Custom Exceptiom получает сообщение generi c - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь создать API аутентификации через активный каталог, и это мои конфигурации:

@Configuration
@EnableWebSecurity
public class Config extends WebSecurityConfigurerAdapter {

    @Autowired
    PropertyService propertyService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .httpBasic()
                .and()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .exceptionHandling().authenticationEntryPoint(new UserService()).and()
                .authorizeRequests()
                .anyRequest()
                .authenticated();
    }

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

    @Bean
    public AuthenticationManager authenticationManager() {
        ProviderManager pm = new ProviderManager(Arrays.asList(activeDirectoryLdapAuthenticationProvider()));
        return pm;
    }

    @Bean
    public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
        String domain = "";
        String userBase = "";
        String port = 000;
        String url = "";
        ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(domain, url, userBase);
        provider.setConvertSubErrorCodesToExceptions(true);
        provider.setUseAuthenticationRequestCredentials(true);
        return provider;
    }
}

И это мой пользовательский EntryPoint:

public class UserService implements AuthenticationEntryPoint {

    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException {

        ExceptionDetail exceptionDetail = new ExceptionDetail(ExceptionDetailCustomMessage.AUTHENTICATION_FAILED, authException.getMessage());
        authException.printStackTrace();
        response.setContentType(MediaType.APPLICATION_JSON.toString());
        OutputStream out = response.getOutputStream();
        ObjectMapper mapper = new ObjectMapper();
        mapper.writeValue(out, exceptionDetail);
        out.flush();

    }

Все с аутентификацией работает нормально, когда я получаю доступ к своему контроллеру, проблема в том, что, когда я тестирую заблокированную учетную запись, я получаю это сообщение на своей консоли:

2020-03-12 17:47:21.598  INFO 20763 --- [nio-8081-exec-1] ctiveDirectoryLdapAuthenticationProvider : Active Directory authentication failed: Account locked

Это сообщение хорошо для меня, и я намерен показать его пользователю, но когда я пытаюсь обработать это на своей пользовательской точке входа с помощью authException.getMessage(), полученное сообщение является обобщенным c единица «Требуется полная аутентификация для доступа к этому ресурсу», что мне нужно сделать, чтобы получить то же сообщение, что и в моей консоли? Заранее спасибо!

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