8.3.2. 提交权限请求
作为授权过程的一部分,客户端需要首先从 UMA 保护的资源服务器获取权限票据,以便在红帽构建的 Keycloak Token Endpoint 中使用 RPT 进行交换。
默认情况下,红帽构建的 Keycloak 会以 403 HTTP 状态代码和 request_denied 错误(如果客户端无法使用 RPT )进行响应。
红帽构建的 Keycloak 拒绝授权请求
HTTP/1.1 403 Forbidden
Content-Type: application/json
...
{
"error": "access_denied",
"error_description": "request_denied"
}
此类响应意味着红帽构建的 Keycloak 无法发布 RPT,其权限由权限票据表示。
在某些情况下,客户端应用程序可能希望启动异步授权流,并让请求的资源所有者决定是否应授予访问权限。为此,客户端可以使用 submit_request 请求参数以及对令牌端点的授权请求:
curl -X POST \
http://${host}:${port}/realms/${realm-name}/protocol/openid-connect/token \
-H "Authorization: Bearer ${access_token}" \
--data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" \
--data "ticket=${permission_ticket} \
--data "submit_request=true"
使用 submit_request 参数时,红帽构建的 Keycloak 将为每个访问失败的资源保留权限请求。创建后,资源所有者可以检查其帐户并管理其权限请求。
您可以将此功能视为应用程序中的 请求访问 按钮,用户可以向其他用户询问其他用户访问其资源。