我一直在使用密钥斗篷来设置授权,并且已经根据资源设置了特定的角色和权限,但是JWT访问令牌仅包含有关角色的详细信息,而不包含分配给用户的权限。
我希望访问令牌包含权限详细信息,并尝试了Keycloak文档中的方法: 1)使用许可票证无法使用
生成票证http://${host}:${port}/auth/realms/${realm_name}/authz/protection/permission
它显示:
{
"error": "invalid_bearer_token",
"error_description": "Could not obtain bearer access_token from request."
}
,因此无法生成RPT并获取权限的详细信息。
也尝试使用授权API。
2)使用授权API:
curl -X GET \
-H "Authorization: Bearer ${access_token}" \
"http://localhost:8080/auth/realms/hello-world-authz/authz/entitlement/${resource_server_id}"
我尝试使用邮递员,但显示404未找到。
任何人都可以向我展示将访问权限包含在访问令牌中的正确过程或正确生成RPT。
答案 0 :(得分:0)
Keycloak为授权服务提供了一个发现文档。您可以从以下网址获取。
from rest_framework_jwt.views import obtain_jwt_token
from rest_framework_jwt.views import refresh_jwt_token
urlpatterns = [
path('auth/obtain_token/', obtain_jwt_token),
path('auth/refresh_token/', refresh_jwt_token),
此处localhost和8080用于密钥斗篷主机和端口
错误说您正在使用的令牌对客户端无效。
我能够使用以下命令获取curl -X GET http://localhost:8080/auth/realms/{realm}/.well-known/uma2-configuration -H "Authorization: Bearer ${access_token}"
RPT
Keycloak通过RPT响应客户端