【问题标题】:Keycloak user attributes with multiple values (list)具有多个值的 Keycloak 用户属性(列表)
【发布时间】:2020-04-10 01:56:32
【问题描述】:

我有一个 Keycloak 用例,其中单个用户可能有多个客户编号。这些客户编号需要发送给服务提供商/客户,并且管理员也可以轻松更新。一些用户可能有数百个客户号码。目前我正在使用名为“customerNumbers”的单个用户属性,其中客户编号用逗号分隔,但我想:

  1. 让管理员可以在自己的字段中查看每个客户编号
  2. 以 JSON 数组而不是逗号分隔声明的形式发送客户编号

所以不要这样:

我想要这样的东西:

而不是这个

"customers": {
"customerNumbers": "140661,140662"
},

我想要这样的东西:

"customers": [
    {"customerNumber": "140661"},
    {"customerNumber": "140662"}
],

应该如何处理这种情况?

【问题讨论】:

    标签: customization keycloak


    【解决方案1】:

    Keyclaok 使用自定义格式通过## 分隔多个值来将多个值保存在同一字段中

    key: customerNumbers      value: 140661##140662
    

    如果您想在您的 jwt 访问令牌上显示该字段,您可以通过为自定义属性创建 client scope -> protocol mapper (user attribute) 来做到这一点,确保设置多值 on

    在协议映射器上设置自定义属性:

    之后,您可以将这些映射器添加到您的客户端,以便它出现在您的访问令牌上

    在 jwt 令牌上设置自定义属性:

    【讨论】:

    • 谢谢,这应该是公认的答案:)
    【解决方案2】:

    您需要在用户属性中添加您的值,例如 [{"customerNumber": "140661"}, {"customerNumber": "140662"}]

    [Keycloak user management, attributes tab][1]

    您的客户端映射器需要像这样(我想我尝试了所有其他选项)

    enter image description here

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多