gpt4 book ai didi

java - 使用自定义范围/角色保护 Spring Boot 应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:37 36 4
gpt4 key购买 nike

在我的 Jersey 应用程序中,我使用了 @RolesAllowed("my-scope-or-role-name") 以及如何从请求中读取范围以确保授权的实现。例如。当 HTTP header 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 的值,具体取决于它获得的访问 token 。

在 Spring Boot 中解决此问题的惯用方法是什么?我还阅读了有关使用 @Secured 注释的内容……但是 @RolesAllowed() 似乎非常简单。

最佳答案

免责声明:不是专家。

首选方法似乎是使用 @PreAuthorize 注释。

这个东西接受 SpEL 表达式,然后允许您(假设所有安全性和 oauth2 内容都已正确配置 - 例如需要启用全局方法级别安全性)做一些有趣的事情,例如:

@PreAuthorize("#oauth2.hasScope('read') and hasAuthority('USER')")

我(谦虚地)还建议您的 REST 端点是服务类的瘦包装器(然后执行实际工作)。然后,安全注释会被推送到这些服务类(或其接口(interface) - 显然你可以注释接口(interface),它仍然有效)。

这应该更安全,因为如果没有适当的安全许可,任何东西都无法访问“工作”代码。

关于java - 使用自定义范围/角色保护 Spring Boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36868114/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com