【问题标题】:Keycloak - Permissions & Policy only works when using Evaluate tabKeycloak - 权限和政策仅在使用“评估”选项卡时有效
【发布时间】:2021-11-12 16:20:06
【问题描述】:

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

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

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

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

我是否遗漏了有关此功能应该如何工作的内容?我的差距在哪里?蒂亚!

【问题讨论】:

    标签: oauth-2.0 keycloak openid-connect


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
      猜你喜欢
      • 1970-01-01
      • 2017-08-06
      • 2022-10-15
      • 2020-04-11
      • 1970-01-01
      • 2021-12-31
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多