【发布时间】:2023-01-09 23:51:42
【问题描述】:
我想添加 current_account_id - 对 access_token 的自定义属性声明。我们有一项功能,用户可以更改他们的帐户。
为实现这一目标,我创建了一个自定义映射器协议,它适用于非联合用户。下面是流程
- 用户首次登录
current_account_idclaim 将在 access_token 中为空,因此在 web 应用程序中设置 default_account_in。 - 一旦用户更改帐户,对 Keycloak 应用程序进行 API 调用以更新上述自定义属性 (current_account_id) 的值,使其现在变为 2
- 现在新的访问令牌将具有值 2 作为当前 account_id
此流程适用于非联合用户。
对于联合用户,我在我的 Web 应用程序的用户表中创建了一个名为 current_account_id 的列,一旦用户登录,我就按照 code 进行设置。但它仅在用户登录时有效。用户更改帐户后,我会更新用户表中的 current_account_id 列,我希望此自定义属性得到更新,但这并没有发生。
【问题讨论】:
-
好的,所以你改变了一些联合用户存储的 id 而这个改变没有反映在 Keycloak 端?我的意思是 Keycloak 仍然使用自己的缓存,只有在用户登录时才会被驱逐,对吧?
-
那是我的假设。正如我所提到的,如果我使用 Admin REST(更新用户)API 调用为非联合用户更新自定义属性,则 access_token 将具有自定义属性的新值。我想为联合用户实现同样的目标。
-
好的,感谢您的澄清,想确认一下,请检查我的回答。
标签: keycloak keycloak-rest-api