在我的Jersey应用程序中,我使用了@RolesAllowed("my-scope-or-role-name")
以及如何从请求中读取范围以确保授权的实现。例如。当HTTP标头my-role-header
的值为my-scope-or-role-name
时,我正在处理请求。
@RolesAllowed("my-scope-or-role-name")
public ResponseEntity<Object> post(@RequestBody final String plainText) {
// process request
}
由于服务位于代理后面,因此只有此代理可以设置my-header
的值,具体取决于它获得的访问令牌。
在Spring Boot中解决此问题的惯用方法是什么?我还阅读了关于使用@Secured
注释的内容......但是@RolesAllowed()
似乎非常直接。
答案 0 :(得分:0)
免责声明:不是专家。
首选方法似乎是使用@PreAuthorize
注释。
这个东西接受SpEL表达式,然后允许你(假设已经正确配置了所有的安全性和oauth2内容 - 例如需要启用全局方法级安全性)来做有趣的事情,如:
@PreAuthorize("#oauth2.hasScope('read') and hasAuthority('USER')")
我(谦卑地)也建议您的REST端点是服务类的瘦包装(然后执行实际工作)。然后将安全注释推送到那些服务类(或它们的接口 - 显然你可以注释接口,它仍然可以工作)。
这应该更安全,因为没有任何东西可以进入&#34;工作&#34;代码没有适当的安全许可。