如何通过Keycloak中的API获取请求方令牌RPT?

问题描述

我要努力寻找它,但找不到解决方案。有人帮我吗?

这是我的尝试。 #1首先找到PAT(保护API令牌)

enter image description here

#2获取许可票证列表

enter image description here

#3尝试获取RPT,但出现“票证验证失败”错误

enter image description here

#4此错误的源代码,但我对源代码不熟悉。

    private PermissionTicketToken verifyPermissionTicket(KeycloakAuthorizationRequest request) {
        String ticketString = request.getTicket();

        PermissionTicketToken ticket = request.getKeycloakSession().tokens().decode(ticketString,PermissionTicketToken.class);
        if (ticket == null) {
            throw new CorsErrorResponseException(request.getCors(),"invalid_ticket","Ticket verification Failed",Status.FORBIDDEN);
        }

它从第670行的源文件(AuthorizationTokenService.java)复制。

enter image description here

https://www.keycloak.org/docs/latest/authorization_services/#_service_overview

解决方法

我花了很多时间试图获得 RPT,我终于找到了解决方案。

所以首先你必须获得一个带有 grant_type 密码的普通令牌:

enter image description here

然后你用你收到的 access_token 请求派对令牌,这次你的 grant_type 将是 "urn:ietf:params:oauth:grant-type:uma-ticket"

enter image description here

注意:这里的受众属性是 client_id

,

这是您要查看的相当高级/新兴的标准。用户管理的访问与用户A有关,它基于可验证的前提条件向其他用户授予资源访问权限。

这真的是您想要做的吗?如果您可以解释您的方案/需求(例如,其中包含哪些组件),我们也许可以建议一个更简单/替代的解决方案。