Keycloak 使用HTTP方法进行密钥伪装授权
我开发了一些taskmanagement服务来学习/评估Key斗篷。到目前为止,我所拥有的: 用户:Keycloak 使用HTTP方法进行密钥伪装授权,keycloak,Keycloak,我开发了一些taskmanagement服务来学习/评估Key斗篷。到目前为止,我所拥有的: 用户: 玛吉 荷马 丽莎 巴特 服务: POST/safe/tasks:创建新任务 获取/安全/任务:列出所有任务 要求: 只有老板Marge才能创建新任务 新任务可以标记为“parentOnly” 每个人都应该能够列出任务。结果列表取决于调用服务的用户: 家长们得到了完整的名单 子任务仅获取非父任务 客户: 授权启用 访问类型:机密 授权范围: 任务:创建 任务:列表 任务:列
- 玛吉
- 荷马
- 丽莎
- 巴特
- POST/safe/tasks:创建新任务
- 获取/安全/任务:列出所有任务
- 只有老板Marge才能创建新任务
- 新任务可以标记为“parentOnly”
- 每个人都应该能够列出任务。结果列表取决于调用服务的用户:
- 家长们得到了完整的名单
- 子任务仅获取非父任务
- 授权启用
- 访问类型:机密
- 任务:创建
- 任务:列表
- 任务:列出所有任务
- 任务资源
- URI:/safe/tasks
- 范围:
- 任务:创建
- 任务:列表
- 任务:列出所有任务
- 仅限Boss(用户=Marge)
- 仅限家长(用户=玛姬,荷马)
- 仅限儿童(用户=巴特、丽莎)
- 仅限家庭成员(合计=仅限父母+仅限子女)
- Boss可以创建任务:连接/安全/具有范围的任务任务:创建和策略“仅限Boss”
- 家庭可以列出任务:连接/安全/具有范围的任务任务:列出和策略“仅限家庭成员”
- 父级可以列出所有任务:连接/安全/具有范围的任务任务:列出所有任务和策略“仅限父级”
Lisa: Permission {id=5a1498e5-14e5-4353-8d5a-5fb12fc739c8, name=Tasks Resource, scopes=[tasks:list]}
Bart: Permission {id=5a1498e5-14e5-4353-8d5a-5fb12fc739c8, name=Tasks Resource, scopes=[tasks:list]}
Marge: Permission {id=5a1498e5-14e5-4353-8d5a-5fb12fc739c8, name=Tasks Resource, scopes=[tasks:list_full, tasks:list, tasks:create]}
Homer: Permission {id=5a1498e5-14e5-4353-8d5a-5fb12fc739c8, name=Tasks Resource, scopes=[tasks:list_full, tasks:list]}
因此,至少在GET/safe/tasks实现中,我可以检查list/list\u full并相应地返回任务
问题是:每个人都可以通过GET和POST访问资源
我已经尝试将http方法作为scope=true并进行了以下修改:
- 添加了GET和POST as授权范围
- 将POST as范围添加到权限“Boss可以创建任务”
- 将GET-as范围添加到权限“家庭可以列出任务”
- 将GET-as作用域添加到权限“家长可以列出所有任务”
Marge:Permission:Permission{id=5a1498e5-14e5-4353-8d5a-5fb12fc739c8,name=Tasks-Resource,scopes=[POST]}
同时,它也打破了GET。现在,当Lisa调用get on/safe/tasks时,我得到403
如果有人能帮我,我会非常感激的。如何获得正确的权限,同时保留对AuthorizationContext中可用作用域的访问
提前谢谢