io.undertow.servlet.util.IteratorEnumeration не может быть приведен к java.lang.String - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь аутентифицировать пользователя по ключу API, отправленному в заголовке, без каких-либо данных пользователя через логин. Затем я получаю исключение приведения, потому что я пытаюсь преобразовать основной состав в строку.

Я пытался получить заголовок в классе SecurityConfig, но это не сработало. Я также попытался получить его в пользовательском фильтре, так или иначе, как текущее решение.

@Bean
    public APIKeyAuthFilter authFilter() {
        APIKeyAuthFilter filter = new APIKeyAuthFilter(principalRequestHeader);
        filter.setAuthenticationManager(authentication -> {
            String principal = (String) authentication.getPrincipal();
            if (!principalRequestValue.equals(principal)){
                throw new BadCredentialsException("The API key was not found or not the expected value.");
            }
            authentication.setAuthenticated(true);
            return authentication;
        });
        return filter;
    }

Я ожидаю, что смогу получить заголовок и проверить значение для сравнения с существующим ключом, но я получаю это исключение "message": "io.undertow.servlet.util.IteratorEnumeration cannot be cast to java.lang.String", "trace": "java.lang.ClassCastException: io.undertow.servlet.util.IteratorEnumeration cannot be cast to java.lang.String\n\tat uk.co.nesistec.contractpicturechallenge.config.APISecurityConfig.lambda$authFilter$0(APISecurityConfig.java:46)

Я получил пример кода из этого другого вопроса. Защита Spring Boot API с помощью API-ключа и секрета

1 Ответ

0 голосов
/ 06 июня 2019

Я обнаружил, что все, что мне нужно, это еще один класс для регистрации фильтра безопасности.

import org.springframework.security.web.context
            .AbstractSecurityWebApplicationInitializer;
public class SpringSecurityInitializer
            extends AbstractSecurityWebApplicationInitializer {
    //no code needed
}

Это полный пример этого сценария для тех, кому это нужно. Весна

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