允许用户使用 REST API 更新他们自己的配置文件

min*_*rse 10 keycloak

我一直在使用我登录的用户帐户的令牌试验 REST API,然后在我的用户记录上发出 PUT 请求以更新一些自定义属性。

为了完成这项工作,我必须在 Keycloak 中授予我的用户帐户管理用户角色,在此之前我收到了禁止回复。

我现在可以成功发出 PUT 请求,注销并重新登录后,我可以看到我在 PUT 请求中设置的更新属性。

但是我现在允许我的用户能够管理我领域中的所有用户,这是我不想允许的。

相反,我只想能够更新我自己的帐户详细信息。

我知道用户可以查看自己的个人资料并在 Keycloak 提供的屏幕上进行更改。但是对于某些自定义属性,我希望能够从他们登录的客户端应用程序执行此操作,因此使用 REST API 但不授予他们可以允许他们更新其他用户详细信息的角色。

这可能吗?

ter*_*ina 6

根据用户部分Keycloak's Admin REST API,这是不可能的。

一种解决方案是让您的客户端应用程序将更新请求发送到后端。后端将验证更新请求是否合法(也就是验证了 JWT 并且更新确实适用于请求更改的用户)。

另一种解决方案是将User Account Service的屏幕主题化,为您的自定义属性添加输入字段,如文档所述:

可以扩展此屏幕以允许用户管理其他属性。有关更多详细信息,请参阅服务器开发人员指南

第二种选择似乎更安全。我希望这有帮助。

  • 一年半多过去了,有没有一种通过用户token和角色管理,而不赋予用户编辑其他用户的权限的解决方案? (3认同)
  • 似乎第一个解决方案是将前端与后端耦合起来,这可能不太好看到。你知道keycloak的[细粒度授权](https://www.keycloak.org/docs/6.0/authorization_services/#_overview)吗? (2认同)