我将Spring安全性用于包含一组Restful服务的Spring Boot应用程序。我已通过基本身份验证启用了Web安全性。 我希望启用基本身份验证,但特定API URL以特定模式结尾。 (例如,健康检查API,如:/ application / _healthcheck)
代码如下所示:
WHERE
但是,每当我调用... / application / _healthcheck URL时,浏览器总是提示我输入凭据。
或者,我甚至尝试从Spring boot的application.properties中忽略这条路径(使用web.ignoring()删除了configure方法.antMatchers(“* / _ healthcheck”))但仍无法摆脱此端点的身份验证
foo
答案 0 :(得分:0)
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/application/_healthcheck");
}
上面的示例和您的代码的区别是web
比http
的用法。尝试使用网络,看看它是否有效{实际上应该可以:)}。
答案 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);
}