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

Keycloak UMA-服务帐户的Grant类型票证似乎不能与策略一起工作

刁英朗
2023-03-14

我试图使用Keycloak AuthzClient在资源服务器中注册资源和相关权限。

我有一个启用authz服务的资源服务器“ResourceServer”。

使用AuthzClient(使用包含资源服务器客户机id和机密的json文件初始化),我可以获得PAT。

    ...
    authzClient.obtainAccessToken().getToken();
    ResourceRepresentation resource = new ResourceRepresentation();
    resource.setName("myresource");
    resource.setUris(new HashSet<>(Collections.singletonList("urn:resourceserver:resourcetype1:myresource")));
    resource.setOwnerManagedAccess(true);
    resource.setType("urn:resourceserver:resourcetype1");
    resource.addScope("read", "write");
    resource = authzClient.protection(pat).resource().create(resource);


    UmaPermissionRepresentation permissionRepresentation = new UmaPermissionRepresentation();
    permissionRepresentation.setName("myresourcepermissions");
    permissionRepresentation.setDescription("foo");
    permissionRepresentation.addRole("somerole");
    UmaPermissionRepresentation result = authzClient.protection(pat).policy(resource.getId()).create(permissionRepresentation)

首先使用密码授权获取访问令牌:

grant_type=password&username=joe&password=password&client_id=somePublicClient

然后将其交换为RPT:

我一直在试图理解为什么会这样。我还尝试在UmaPermissionRepresentation中使用.addclient(“ServiceAccount1”)甚至.adduser(“Service-Account-ServiceAccount1”),但策略似乎仍然没有发挥作用,而且我的服务帐户没有访问资源的权限。

这使用的是Keycloak 4.8.0.final。

注意:使用keycloak管理客户机,我能够创建策略/权限,从而真正实现此功能;但在我的环境中,这会导致其他问题,因为我需要分配给管理客户机的角色(比如查看所有客户机以检索id等)

共有1个答案

慕河
2023-03-14

我对KeyCloak11.0.2也有同样的问题。共享资源最终不会出现在服务帐户的权限票证中。服务帐户在授权令牌服务中被显式排除。由于可以与服务帐户共享资源,这似乎不一致。

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

 类似资料:
  • 我试图将JMX与activeMQ一起用于监控。到目前为止,我一直将其作为参考,但到目前为止我无法远程连接到JMX,而且我在activeMQ日志中没有看到任何提到JMX url的内容。我想知道是否有其他方法来确保jmx工作正常?它应该在activemq日志中显示吗?PS我正在使用jdk1.7和activeMQ 5.14.2。 提前感谢! 编辑 我在activemq.xml文件中设置了useJmx="

  • 我试图调用直接将一个项目添加到初始的中,如下所示,其中是我编写的PowerShell类(下面的示例使用类名: 但是,这会产生一个错误,提示它找不到此构造函数的重载: 找不到“列表`1”和参数计数“1”的重载。 虽然这样做有效,但我不确定为什么我不能使用我的PowerShell类作为类型。我的理解是,只有上下文绑定类型和(默认情况下)嵌套类型不能与泛型一起使用,但以下显示我的类不是: 我不确定Pow

  • 我试图将zookeeper和kafka设置为共享名称空间中单独的Kubernetes部署/吊舱。我已经在我的Ubuntu沙盒上通过kubeadm用Calico引导了一个本地K8s 1.8... 所以我假设我的集群中有一个普通的网络问题,然后我注意到一些更让我困惑的事情...如果我将zookeeper.connect设置为10.107.41.148:2181(zookeeper服务的当前地址),连接

  • 我很难为微服务架构选择一个体面的/安全的身份验证策略。我在这个主题上找到的唯一的SO帖子是这样的:微服务架构中的单点登录 在这里,我的想法是在每个服务(例如身份验证、消息传递、通知、配置文件等)中都有一个对每个用户的唯一引用(从逻辑上讲,然后是他的),并且如果登录,可以获得当前用户的。 从我的研究中,我看到有两种可能的策略: null

  • 我的代码看起来像 我的文件如下所示 当我运行程序时,我看到 我怎样才能修好它呢?

  • 我正在根据条件创建一个组件: 现在我想给它添加一些动画,这意味着我想融入容器中,而不是让它突然出现。我在想以下几点: 然后在我的SCSS文件中,我添加了以下内容: 现在,这个动画根本不起作用。我在单击图标时切换变量,并且我已经验证了该变量实际上正在切换!我有一种感觉,这可能与指令有关。有人能帮我吗?