Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Spring安全+密钥斗篷授权:如何将端点与资源关联?_Spring Boot_Kotlin_Spring Security_Authorization_Keycloak - Fatal编程技术网

Spring boot Spring安全+密钥斗篷授权:如何将端点与资源关联?

Spring boot Spring安全+密钥斗篷授权:如何将端点与资源关联?,spring-boot,kotlin,spring-security,authorization,keycloak,Spring Boot,Kotlin,Spring Security,Authorization,Keycloak,我已经创建了一个SpringBoot应用程序,它具有SpringBootStarter安全性和KeyClope-Spring安全适配器,并使用KeyClope验证用户的身份 现在,我想使用keydove对我的API进行细粒度的访问控制 在KeyClope中,我已经为我的客户启用了授权。我已经创建了一个角色,并将该角色分配给了我的测试用户。我创建了资源和基于资源的权限,并添加了基于角色的策略。使用评估功能,我已经确认,我的用户有权访问我的资源 假设我有一个端点的控制器 @RestControlle

我已经创建了一个SpringBoot应用程序,它具有SpringBootStarter安全性和KeyClope-Spring安全适配器,并使用KeyClope验证用户的身份

现在,我想使用keydove对我的API进行细粒度的访问控制

在KeyClope中,我已经为我的客户启用了授权。我已经创建了一个角色,并将该角色分配给了我的测试用户。我创建了资源和基于资源的权限,并添加了基于角色的策略。使用评估功能,我已经确认,我的用户有权访问我的资源

假设我有一个端点的控制器

@RestController
class GreetingController {

    @GetMapping("/hello")
    fun getPatientInfo(principal: Principal): String {
        return "Hello, ${principal.name}!"
    }
}
现在我的问题是:如何将Spring Boot应用程序中的端点与给定的资源相关联,以便在发出请求时评估权限

“如何将Spring Boot应用程序中的端点与给定资源关联,以便在发出请求时评估权限?”

举个例子,让我们说

您的KeyClope服务器正在端口8585上运行 您的应用程序服务器正在端口8080上运行 您的领域名为“myrealm” 您的资源名为“我的客户资源” 您的角色名为“超级用户” 然后在Spring Boot应用程序的application.properties文件中设置

应用程序将在其上运行的端口 server.port=8080 keydape.realm=myrealm keydape.auth-server-url=http://localhost:8585/auth keydape.ssl-required=无 KeyClope资源是客户端ID keydape.resource=我的客户机资源 keydape.use-resource-role-mappings=true keydape.public-client=true … 配置${principal.name}将返回的内容 KeyClope.principal属性=首选\u用户名 您可以通过以下方式连接到Spring Boot的KeyClope配置中

… @配置 @启用Web安全性 @EnableGlobalMethodSecurity Prespenabled=true @ComponentScan basePackageClasses=keydeposecurityComponents.class 公共类安全配置扩展了KeyDopperWebSecurity配置适配器{ @凌驾 public void configure HttpSecurity http引发异常{ super.configurehttp; http.authorized请求 .antMatchers/你好… .hasRole超级用户 .任何请求 .permitAll; } … } 在没有更具体的应用程序和配置细节的情况下,以上只是一个示意图。但这是一般的方法


为了更具体地掌握我最近实施的上述通用方法。

如果您不介意,请为您提供一些Qs?1您迄今为止尝试了哪些方法?2如果您迄今为止尝试了哪些方法导致错误,那么错误消息是什么?3您使用的是什么版本的Spring Boot、KeyClope、JDK等?4您的应用程序是什么操作系统yed on?5什么构建工具-如果有的话-你用什么构建你的应用程序?6你想象的任何其他细节可能有助于帮助你重现你观察到的任何失败?7你能分享一个吗?谢谢你的回答,并对这个不具体的问题表示抱歉。有没有一种方法可以拥有多个端点,并且每个端点都是一个端点与不同的资源关联?…有多个端点,并且每个端点都与不同的资源关联?…”–@KirillRakhman-是。每个资源都可以有自己的根URL、Redirecris等。作为另一个可能的通用示例,在文档中搜索“如果您有多个部署”“第节。但让我强调一下:我并不是建议将该页面上的内容作为您特定需求的解决方案。我只是指出Key斗篷可以做的一般事情。也许我有一个问题,然后我应该更广泛地阐述我的问题。我如何对不同的端点应用不同的权限来实现基于角色的访问c?”控制?我不在乎是否通过资源完成,但角色“admin”不够,因为它检查的是角色,而不是权限。“可能我有XY问题。”“-老实说,我不能说。但我确实同意该怎么办?部分:”“1……包括……任何尝试的解决方案的信息……2若有人要求提供更多信息,请提供详细信息……”-“但hasRole'admin'是不够的,因为它检查的是角色,而不是权限……”…“-感谢您排除了这一点。我将使用基于资源的权限,并相应地编辑我的答案。同时,请参阅我昨天在评论中提交的7个请求以获取更多信息?TIA。”。