当前位置: 首页 > 知识库问答 >
问题:

Keycloak无法使用服务帐户令牌获得具有权限的RPT

宗政天逸
2023-03-14

我使用的是keycloak:4.8.3.final

UserService(作为service-account)在service-account-roles选项卡中分配了必要的客户端角色

每当有人试图访问InventoryService的APIs时,我都会执行以下操作:

  • 从授权标头获取访问令牌
  • 获取RPT(如本文所述)
  • 检查RPT是否存在所需的权限。
{
  "error": "invalid_resource",
  "error_description": "Resource with id [item] does not exist."
}
AuthorizationResource authResource = authzClient.authorization(at);
AuthorizationRequest request = new AuthorizationRequest();
request.addPermission(resourceId, scopes);
AuthorizationResponse authResponse = authResource.authorize(request);
String rpt = authResponse.getToken();

顺便说一句,另一个观察是:当令牌属于用户(而不是服务帐户)时,上面的代码片段可以正常工作。

有人能让我知道发生了什么吗?这是KeyCloak中的bug吗?

共有1个答案

马国源
2023-03-14

这个问题在KeyCloak 11.0.2中仍然存在。服务帐户在授权令牌服务中被显式排除。

但是,您可以通过在客户机上的协议映射器将AZP声明设置为client_id以外的内容来解决这个问题。

 类似资料:
  • 实际上,我想使用这个api回复我的google play应用程序的评论:https://developers.google.com/android-publisher/reply-to-reviews#gaining_access但是在这里,它想让我输入auth_token。首先,我在google play中添加了服务号。之后,我创建了一个密钥,并下载了密钥的json文件。使用这个json文件,我

  • 我想使用gsutil和服务帐户在命令行上访问Goolge播放报告。有一个云存储URI,格式为gs://bucket\u name,我可以用我的用户帐户列出和下载报告,但不能用我创建的服务帐户。错误总是相同的: 我已向服务帐户授予了所有必需的权限,因此我不明白为什么用户帐户可以使用,而服务帐户却无法使用。 所以如果你知道如何帮助我,我会非常感谢你。

  • 我试图使用从Spring应用程序中的公共客户端获取访问令牌。 谁能帮我弄清楚我做错了什么吗?

  • 我一直试图用角色导入预先配置的客户机和服务帐户,所以我的json文件看起来像 我还尝试在导入的领域配置中设置客户端,但在这两种情况下,我都有以下问题 null Keycloak版本为:8.0.0 谢了。

  • 我试图创建一个服务帐户与一个已知的,固定的令牌Jenkins使用,以部署到Kubernetes的东西。我使用以下YAML创建了令牌: