我们正在开发基于Spring Oauth2的Auth服务器。我们已经设法通过自定义UserDetails
实现(以及一些其他自定义组件)将自定义数据添加到令牌中,以便我们可以将Auth服务器中的用户映射到应用程序中的实体。
应用程序后台还将支持通过管理界面创建新用户。出于这个原因,我们从/users
开始打开了一些端点。
我们希望此ednpoints只能由具有信任范围的经过身份验证的客户端访问。因此,对这些端点的请求应提供Authorization
标头,其中包含通过客户端凭据授予获得的有效Bearer
令牌。
我们已尝试配置扩展WebSecurityConfigurerAdapter
的这些端点的安全性。以下是configure(HttpSecurity http)
方法的不同版本和结果:
http.csrf().disable().authorizeRequests().antMatchers("/users/**").permitAll();
这个有效!但是没有安全保障。
http.csrf().disable().authorizeRequests().antMatchers("/users/**").authenticated();
失败!似乎未应用执行身份验证的过滤器,我收到了403 Forbidden
响应。使用authenticated()
或hasRole(...)
替换hasAuthority(...)
或建议经过身份验证的客户端的任何其他配置也是如此。
问题是如何配置端点以保护具有可信范围的客户端?