Keycloak - 权限和策略仅在使用评估选项卡时有效

Keycloak - Permissions & Policy only works when using Evaluate tab

我们的团队希望在 Keycloak 中使用 Policies/Permissions 在用户登录时向其授予范围,但前提是他们具有特定角色。

我学习了几个教程并成功地使用 Evaluate 选项卡(在 Authorization 下)进行了设置和测试。如果我的用户在我的策略中具有指定角色,则范围会显示在令牌中。当我删除角色时,范围没有显示。

太好了。我们的问题是,当我使用同一客户端(即不使用评估选项卡)进行身份验证代码流调用时,它不起作用。我的令牌中根本没有任何 authorization 部分...这仅在我使用 Evaluate 选项卡时出现。

我会注意到,我已经尝试过请求范围以及请求资源和不请求它们的授权代码流调用。相同的结果...在生成的令牌中根本没有 authorization 部分。

我是否遗漏了有关此功能应该如何工作的信息?我的差距在哪里? TIA!

您在“评估”选项卡中获得的令牌不是访问令牌,它是 Keycloak 将在客户请求权限时颁发给客户的授权令牌。

您通过授权代码流获取的访问令牌将不包含权限。

使用 Keycloak 授权服务时,您的客户端将通过向授权 REST 请求授权令牌来获得权限 API(参见:https://www.keycloak.org/docs/latest/authorization_services/#_service_obtaining_permissions

您可以手动执行此操作,也可以使用集成在 Keycloak 适配器中的 policy enforcer

keycloak 快速入门中有很多您想要实现的示例 github repo。 (以 app-authz-* 开头的文件夹)。

spring 启动适配器无法正确授权基于范围的资源策略,似乎存在错误。 在管理上评估 UI 确实正确评估了基于范围的策略。

我通过为每个单独的范围创建不同的资源然后分配策略来让它工作。但这不是应该的。