Spring Security中的AntMatcher

时间:2018-07-23 18:41:22

标签: java spring servlets spring-security-oauth2

我无法配置规则以符合以下条件:

  • 获取对->“ / logout”,“ / user”,“ / oauth2 / auth”,“ / error **”的请求 (所有人)
  • 向->“ / oauth2 / token”(所有人)的POST请求

通过GET请求(甚至是“ / oauth2 / token”)发送时,我对上述端点的每个请求均得到验证和授权。 POST请求被拒绝。

我的规则如下:

// @formatter:off
    http.authorizeRequests()
                .antMatchers(HttpMethod.GET,"/logout", "/user" ,"/oauth2/auth", "/error**").permitAll()
                .antMatchers(HttpMethod.POST, "/oauth2/token").permitAll()
            .anyRequest().authenticated()
        .and()
            .exceptionHandling().authenticationEntryPoint((request, response, e) -> {

                //create Json Object
                try {

                    JSONObject values = new JSONObject();

                    values.put("timestamp", String.valueOf(Timestamp.from(Instant.now())));
                    values.put("message", e.getMessage());

                    response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
                    response.setContentType("application/json");
                    response.setCharacterEncoding("UTF-8");
                    response.getWriter().write(values.toString());
                } catch (JSONException | IOException f) {
                    f.printStackTrace();
                }
           })
        .and()
           .addFilterBefore(googleOAuth2Filter, BasicAuthenticationFilter.class);
// @formatter:on

其他:

googleOAuth2Filter匹配“ / oauth2 / token”,其他所有使用@RequestMapping调用的东西

谢谢

0 个答案:

没有答案