복붙노트

[SPRING] 경로의 시작 부분과 일치하는 antMatcher

SPRING

경로의 시작 부분과 일치하는 antMatcher

나는 인증에 사용될 REST 서비스를 가지고있다. 인증 엔드 포인트는 /api/v.1/authentication과 유사합니다. API 버전은 업데이트 된 버전을 반영하도록 변경할 수있는 변수입니다. 하나의 예제는 /api/v.2/authentication입니다. AntMatcher를 사용하여이 두 가지 문제를 처리 할 수 ​​있기 때문에 .antMatchers (HttpMethod.POST, "** / authenticate"). permitAll ()을 사용하여 ** 엔드 포인트의 시작 부분과 일치 시키지만 작동하지 않습니다. . 아래 전체 설정.

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
        .csrf().disable()
        .authorizeRequests()
             .antMatchers(HttpMethod.POST, "**/authenticate").permitAll()
             .antMatchers(HttpMethod.GET, "**/get-public-key").permitAll()
             .and()
        .authorizeRequests()
             .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
             .anyRequest().authenticated();
}

이 문제를 어떻게 해결할 수 있을지 제안 해 주시겠습니까?

해결법

  1. ==============================

    1.당신은 절대적인 패턴을 사용해야합니다, AntPathMatcher를보십시오 :

    당신은 절대적인 패턴을 사용해야합니다, AntPathMatcher를보십시오 :

    수정 및 단순화 된 구성 :

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
            .csrf().disable()
            .authorizeRequests()
                .antMatchers(HttpMethod.POST, "/**/authenticate").permitAll()
                .antMatchers(HttpMethod.GET, "/**/get-public-key").permitAll()
                .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                .anyRequest().authenticated();
    }
    
  2. from https://stackoverflow.com/questions/43704389/antmatchers-that-matches-any-beginning-of-path by cc-by-sa and MIT license