【问题标题】:Update custom attribute for federated user in Keycloak在 Keycloak 中更新联合用户的自定义属性
【发布时间】:2023-01-09 23:51:42
【问题描述】:

我想添加 current_account_id - 对 access_token 的自定义属性声明。我们有一项功能,用户可以更改他们的帐户。

为实现这一目标,我创建了一个自定义映射器协议,它适用于非联合用户。下面是流程

  1. 用户首次登录current_account_id claim 将在 access_token 中为空,因此在 web 应用程序中设置 default_account_in。
  2. 一旦用户更改帐户,对 Keycloak 应用程序进行 API 调用以更新上述自定义属性 (current_account_id) 的值,使其现在变为 2
  3. 现在新的访问令牌将具有值 2 作为当前 account_id

    此流程适用于非联合用户。

    对于联合用户,我在我的 Web 应用程序的用户表中创建了一个名为 current_account_id 的列,一旦用户登录,我就按照 code 进行设置。但它仅在用户登录时有效。用户更改帐户后,我会更新用户表中的 current_account_id 列,我希望此自定义属性得到更新,但这并没有发生。

【问题讨论】:

  • 好的,所以你改变了一些联合用户存储的 id 而这个改变没有反映在 Keycloak 端?我的意思是 Keycloak 仍然使用自己的缓存,只有在用户登录时才会被驱逐,对吧?
  • 那是我的假设。正如我所提到的,如果我使用 Admin REST(更新用户)API 调用为非联合用户更新自定义属性,则 access_token 将具有自定义属性的新值。我想为联合用户实现同样的目标。
  • 好的,感谢您的澄清,想确认一下,请检查我的回答。

标签: keycloak keycloak-rest-api


【解决方案1】:

这是标准的 Keycloak 行为——映射器的数据直接来自提供者,但它是在登录期间执行的:https://www.keycloak.org/docs/latest/server_admin/#storage-mode

这是类似的问题,缓存驱逐可能会有所帮助: https://lists.jboss.org/pipermail/keycloak-user/2017-June/011091.html

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 2017-12-04
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 2022-12-04
    • 2021-03-22
    相关资源
    最近更新 更多