spring-boot - Spring Security - 只允许带有前缀的请求
问题描述
我需要保护我们的资源服务器中的所有其余端点,除了以/unsecured
. 因此,每个人都应该允许以下请求:
/unsecured/foo/bar
/unsecured
- ...
但像这样的请求:
/foo/unsecured/bar
/foo/bar
- ...
应该需要认证。
@Configuration
@EnableResourceServer
public class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity security) throws Exception {
security
.authorizeRequests(authorizeRequests -> {
authorizeRequests.antMatchers("unsecured/**").permitAll();
authorizeRequests.anyRequest().authenticated();
});
}
}
但在上面的配置中,所有端点都需要身份验证。
这是我尝试访问不安全端点时收到的响应:
代码 401
{
"error": "unauthorized",
"error_description": "Full authentication is required to access this resource"
}
解决方案
premitAll() 是您正在寻找的。看起来您只是缺少 URL 之前的 /
@Configuration
@EnableResourceServer
public class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity security) throws Exception {
security
.authorizeRequests(authorizeRequests - > {
authorizeRequests.antMatchers("/unsecured/**").permitAll();
authorizeRequests.anyRequest().authenticated();
});
}
}
推荐阅读
- php - 注意:只能通过引用返回变量引用
- c# - 在 POST 请求中发送文件和元数据信息 ajax .NET core api 2.1
- xml - 博主标题只显示在首页
- php - Laravel 无法解析模型
- google-chrome - 如何私下测试因未在 Chrome Web Store 中列出而被禁用的 Chrome 扩展程序
- c# - 从服务器获取响应时出现异常:远程服务器返回错误:(500)内部服务器错误
- python - 将文本清理功能应用于多列
- c# - 隐藏的表单值未绑定到表单 POST
- fullpage.js - Fullpage.js 和移动设备:之前如何触发幻灯片更改?
- nginx - NGINX X-Accel-Redirect 不会自动传递 Content-Type?