Keycloak 用户授权 openid-protocol Rest API
Keycloak user authorization openid-protocol Rest API
我是 keycloak 的新手。
我已经创建了门户网站,用户的身份验证(登录、注销、忘记密码)是在后端(PHP)使用 REST Api 完成的。身份验证成功后,允许用户进入门户的安全部分。
我无法获取 REST API 端点,因此当用户登录时,我想获取该用户拥有的权限列表,这样我就可以使用特定用户拥有权限的功能来呈现 UI到。到目前为止,我找到了只能请求特定权限的端点
curl -X POST http://$URL/auth/realms/argo/protocol/openid-connect/token -H "Authorization: Bearer $TOKEN" --data "audience=$CLIENTID" --data "permission=$PERMISSIONNAME#$PERMISSIONSCOPE"
这可以用 keycloak 实现吗?我可能会有大约 10 个导航功能,有些是付费的,所以一旦用户购买了这个功能,我们就会允许这个特定用户获得这个权限。
谢谢
我花了很多时间让它发挥作用。
基本上,一旦用户登录(通过 JWT 访问令牌),您的应用程序必须向 OIDC 端点发出 额外 调用,以便 获得扩展的 JWT令牌(包括细粒度权限).
下面是这个额外调用的详细信息:
POST http://server:port/auth/realms/<realm>/protocol/openid-connect/token
Content-Type: application/x-www-form-urlencoded
Authorization: "Bearer ....." (=access token of logged-in user)
Parameters:
- grant_type: the constant "urn:ietf:params:oauth:grant-type:uma-ticket"
- audience : the keycloak client id
- response_include_resource_name: true
您将得到一个应该被解码的 JWT 令牌作为响应
- 以编程方式(非常简单)
- 或通过调用 Keycloak 令牌自省端点(即 /auth/realms//protocol/openid-connect/token/introspect
而且,一旦解码,您会注意到 json 有效载荷包含一个额外的“授权”节点。
我是 keycloak 的新手。 我已经创建了门户网站,用户的身份验证(登录、注销、忘记密码)是在后端(PHP)使用 REST Api 完成的。身份验证成功后,允许用户进入门户的安全部分。 我无法获取 REST API 端点,因此当用户登录时,我想获取该用户拥有的权限列表,这样我就可以使用特定用户拥有权限的功能来呈现 UI到。到目前为止,我找到了只能请求特定权限的端点
curl -X POST http://$URL/auth/realms/argo/protocol/openid-connect/token -H "Authorization: Bearer $TOKEN" --data "audience=$CLIENTID" --data "permission=$PERMISSIONNAME#$PERMISSIONSCOPE"
这可以用 keycloak 实现吗?我可能会有大约 10 个导航功能,有些是付费的,所以一旦用户购买了这个功能,我们就会允许这个特定用户获得这个权限。
谢谢
我花了很多时间让它发挥作用。 基本上,一旦用户登录(通过 JWT 访问令牌),您的应用程序必须向 OIDC 端点发出 额外 调用,以便 获得扩展的 JWT令牌(包括细粒度权限).
下面是这个额外调用的详细信息:
POST http://server:port/auth/realms/<realm>/protocol/openid-connect/token
Content-Type: application/x-www-form-urlencoded
Authorization: "Bearer ....." (=access token of logged-in user)
Parameters:
- grant_type: the constant "urn:ietf:params:oauth:grant-type:uma-ticket"
- audience : the keycloak client id
- response_include_resource_name: true
您将得到一个应该被解码的 JWT 令牌作为响应
- 以编程方式(非常简单)
- 或通过调用 Keycloak 令牌自省端点(即 /auth/realms//protocol/openid-connect/token/introspect
而且,一旦解码,您会注意到 json 有效载荷包含一个额外的“授权”节点。