Применить HttpSecurity для запроса GET - PullRequest
0 голосов
/ 04 августа 2020

У меня есть эта конечная точка отдыха:

@RestController
@RequestMapping("/data")
public class DataPagesController {

    @GetMapping("/page")
    public ResponseEntity<?> page() {

        List<String> list = new ArrayList<>();

        list.add("test 1");
        list.add("test 2");
        list.add("test 3");
        list.add("test 4");

        return new ResponseEntity<>(list, HttpStatus.OK);
    }
}

Я настроил префикс контекстного пути в проект, используя:

server:
    port: 8080
    servlet:
        context-path: /engine

Я хочу ограничить доступ, используя:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf().disable()
        .httpBasic()
       
        // Allow GET for dashboard page
        .authorizeRequests().antMatchers(HttpMethod.GET, "/data/page").authenticated()

        // Allow all requests by logged in users
        .anyRequest().authenticated()
            .and()
        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}

Но я получаю сообщение об ошибке:

GET http://localhost:8080/engine/data/page 401

Знаете ли вы, как правильно настроить разрешения конечной точки для запроса GET?

Одна из возможных идей:

 Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS
19:12:37.834 [http-nio-8080-exec-8] DEBUG AffirmativeBased[decide:66] - Voter: org.springframework.security.web.access.expression.WebExpressionVoter@659a59ae, returned: -1
19:12:37.834 [http-nio-8080-exec-8] DEBUG ExceptionTranslationFilter[handleSpringSecurityException:180] - Access is denied (user is anonymous); redirecting to authentication entry point

Мне нужно удалить возможно .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);

1 Ответ

0 голосов
/ 04 августа 2020

401 означает, что вы не авторизованы, поэтому это означает, что вы не передаете настроенный вами токен, или вы не передаете ожидаемую пружину, или токен, который вы передаете, неверен / истек.

Аналогично 403 Forbidden, но специально для использования, когда аутентификация требуется, но она не удалась или еще не была предоставлена. Ответ должен включать поле заголовка WWW-Authenticate, содержащее запрос, применимый к запрошенному ресурсу. См. Аутентификацию доступа Basi c и аутентификацию доступа Digest. [32] 401 семантически означает «неавторизованный», [33] пользователь не имеет действительных учетных данных для аутентификации для целевого ресурса. код ошибки 401 из Википедии

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