我正在使用Spring Boot编写Web服务,并使用Keycloak保护应用程序。该应用程序将公开管理餐厅的API。
在Keycloak中,我有两个角色:管理员和经理。
拥有管理员角色的用户可以进行增删改查操作。同一公司拥有多个餐厅,每个餐厅都有一个经理。我希望具有经理角色的用户只能编辑他们的餐厅(即他们管理的餐厅)。
根据我对Keycloak文档的理解,我必须使用Resource和Permission,但是他们指出:
[]您还可以拥有一个名为“ Alice's Banking Account”的不同资源,它表示单个客户拥有的单个资源,它可以拥有自己的授权策略。
因此,我需要创建这样一个资源/api/restaurants/12345,但问题是我不能像这样硬编码ID。
目前,我在Spring Boot中保护了我的端点。
在Keycloak中,我有两个角色:管理员和经理。
拥有管理员角色的用户可以进行增删改查操作。同一公司拥有多个餐厅,每个餐厅都有一个经理。我希望具有经理角色的用户只能编辑他们的餐厅(即他们管理的餐厅)。
根据我对Keycloak文档的理解,我必须使用Resource和Permission,但是他们指出:
[]您还可以拥有一个名为“ Alice's Banking Account”的不同资源,它表示单个客户拥有的单个资源,它可以拥有自己的授权策略。
因此,我需要创建这样一个资源/api/restaurants/12345,但问题是我不能像这样硬编码ID。
目前,我在Spring Boot中保护了我的端点。
http
.authorizeRequests()
.mvcMatchers(HttpMethod.PUT, "/api/restaurants/*").hasAnyRole("ADMIN", "MANAGER")
.anyRequest().permitAll();
这意味着任何餐厅的经理都可以编辑另一个餐厅。我想将其限制为仅限于他们管理的餐厅 (即他们所管理的餐厅)。如果可能的话,如何在Keycloak中实现?