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

Ben*_*Vue 4 openid-connect keycloak keycloak-rest-api

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

这是我的尝试。#1 首先找到PAT(Protection API Token) 在此输入图像描述

#2 获取权限票列表 在此输入图像描述

#3 尝试获取 RPT 但收到“票证验证失败”错误。 在此输入图像描述

#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);
        }
Run Code Online (Sandbox Code Playgroud)

它从第 670 行的源文件(AuthorizationTokenService.java)复制。 在此输入图像描述

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

小智 5

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

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

在此输入图像描述

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

在此输入图像描述

注意:这里的audience属性是client_id