我正在尝试在本质上处理受保护资源的 API 中实现 Keycloak 授权。我在 KeyCloak 中创建了一个启用了授权的机密客户端的后端。如果请求用户是管理员,则该流程有效,否则将返回 403 Forbidden。
每当将新资源添加到我的后端(或者删除或修改现有资源)时,KeyCloak 客户端也会通过 KeyCloak API 进行更新。为了授予或拒绝对特定资源和用户的访问,我的方法如下(我是新手,并不真正知道我在做什么):
现在我认为一切都按计划进行,但问题是这仅在请求用户是管理员时才有效。如果我在步骤 4 中使用非管理员用户,我会收到 403 Forbidden:
{ "error": "access_denied", "error_description": "not_authorized" }
相反,如果我使用角色“admin”请求 RTP 和访问令牌,则它可以正常工作。
有人可以指出我做错了什么吗?
谢谢!
刚刚发现问题 - 在这里发布解决方案,因为它可能会帮助某人。
如果没有一个权限对该用户评估为肯定,KeyCloak 将返回一个
403 Forbidden
,而不是像我预期的那样,带有空授权部分的令牌或没有授权部分的令牌。
所以实际上一切都工作得很好,我只是不明白。