Spring Boot Security禁用特定URL的Web安全性

时间:2018-06-13 06:47:42

标签: java spring spring-boot spring-security basic-authentication

我将Spring安全性用于包含一组Restful服务的Spring Boot应用程序。我已通过基本身份验证启用了Web安全性。 我希望启用基本身份验证,但特定API URL以特定模式结尾。 (例如,健康检查API,如:/ application / _healthcheck)

代码如下所示:

WHERE

但是,每当我调用... / application / _healthcheck URL时,浏览器总是提示我输入凭据。

或者,我甚至尝试从Spring boot的application.properties中忽略这条路径(使用web.ignoring()删除了configure方法.antMatchers(“* / _ healthcheck”))但仍无法摆脱此端点的身份验证

foo

3 个答案:

答案 0 :(得分:0)

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/application/_healthcheck");
}

上面的示例和您的代码的区别是webhttp的用法。尝试使用网络,看看它是否有效{实际上应该可以:)}。

答案 1 :(得分:0)

您可以创建一个权限列表并将其用于禁用安全性。

List<String> permitAllEndpointList = Arrays.asList(
            AUTHENTICATION_URL,
            REFRESH_TOKEN_URL,
            EXTERNAL_AUTH_URL,
            "/swagger-resources",
            "/swagger-resources/**",
            "/swagger-ui.html"
);

,然后将此语句添加到您的HttpSecurity对象

.and()
.authorizeRequests()
.antMatchers(permitAllEndpointList.toArray(new String[permitAllEndpointList.size()]))
.permitAll()

这将解决您的问题。

答案 2 :(得分:-1)

试试这个。这将跳过健康URL的身份验证部分。

@Override
protected void configure(final HttpSecurity http) throws Exception {
        http.csrf().disable()
                .authorizeRequests()
                .antMatchers("*/_healthcheck").permitAll() // added this line
                .anyRequest().authenticated()
                .and().httpBasic()
                .authenticationEntryPoint(authEntryPoint);
}