8.4. 保护 API
Protection API 提供了与 UMA 兼容的端点集合:
资源管理
使用这个端点,资源服务器可以远程管理其资源,并启用 策略 enforcers 查询服务器,以获取需要保护的资源。
权限管理
在 UMA 协议中,资源服务器访问此端点以创建权限票据。Red Hat Single Sign-On 还提供端点来管理权限状态和查询权限。
Policy API
Red Hat Single Sign-On 利用 UMA Protection API 允许资源服务器管理其用户的权限。除了 Resource 和 Permission API 外,Red Hat Single Sign-On 还提供了 Policy API,其中权限可以通过代表他们的用户的资源服务器设置为资源。
此 API 的一个重要要求是,仅允许 资源服务器使用名为保护 API 令牌(PAT)的特殊 OAuth2 访问令牌访问其端点。在 UMA 中,PAT 是范围为 uma_protection 的令牌。
8.4.1. 什么是 PAT 以及如何获取它 复制链接链接已复制到粘贴板!
保护 API 令牌 (PAT)是一种特殊的 OAuth2 访问令牌,其范围定义为 uma_protection。当您创建资源服务器时,Red Hat Single Sign-On 会自动创建一个角色 uma_protection (对应的客户端应用程序),并将它与客户端的服务帐户相关联。
通过 uma_protection 角色授予的服务帐户
与任何其他 OAuth2 访问令牌一样,资源服务器可以从 Red Hat Single Sign-On 获取 PAT。例如,使用 curl:
curl -X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d 'grant_type=client_credentials&client_id=${client_id}&client_secret=${client_secret}' \
"http://localhost:8080/auth/realms/${realm_name}/protocol/openid-connect/token"
上面的示例是使用 client_credentials 授权类型从服务器获取 PAT。因此,服务器会返回类似如下的响应:
{
"access_token": ${PAT},
"expires_in": 300,
"refresh_expires_in": 1800,
"refresh_token": ${refresh_token},
"token_type": "bearer",
"id_token": ${id_token},
"not-before-policy": 0,
"session_state": "ccea4a55-9aec-4024-b11c-44f6f168439e"
}
Red Hat Single Sign-On 可以以不同的方式验证您的客户端应用程序。为了简单起见,此处使用了 client_credentials 授权类型,它需要一个 client_id 和 client_secret。您可以选择使用任何支持的身份验证方法。