【问题标题】:Keycloak client role attribute arrayKeycloak 客户端角色属性数组
【发布时间】:2021-10-27 11:19:06
【问题描述】:

情况

我有一个 keycloak 服务器 (v12.0.2) 与具有某些角色的客户端一起运行。我可以向该角色添加自定义属性并检索它们。没问题。但是角色总是返回一个数组。

输入键“foo”和值“bar”给我

 "attributes": {
    "foo": [
      "bar"
    ]
  }

我想要什么

我想在数组中有多个条目。留在前面的例子中,我想有“bar”和“baz”。

 "attributes": {
    "foo": [
      "bar",
      "baz"
    ]
  }

我的尝试

  • 只需使用相同的键添加 2 个条目 - 这只会导致用第二个条目覆盖第一个条目。所以我得到了
 "attributes": {
    "foo": [
      "baz"
    ]
  }
  • 在键中提供一个数组索引(“foo[0]”=“bar”和“foo[1]”=“baz”只是两个不同的键并给我
  "attributes": {
    "foo[0]": [
      "bar"
    ],
    "foo[1]": [
      "baz"
    ]
  }
  • 用分号、空格或逗号分隔值返回
  "attributes": {
    "foo": [
      "bar,baz"
    ]
  }

(分别与“;”或“”相同)

有什么方法可以做到这一点,还是我必须使用自定义分隔符并在我的应用程序中拆分字符串(这不是问题,但我认为将值作为数组获取会更好)

【问题讨论】:

    标签: arrays keycloak roles keycloak-rest-api


    【解决方案1】:

    您可以使用## 作为分隔符,例如:bar##baz。但是使用此分隔符无法保证数组的顺序,尽管您将数据保存为bar##baz,但数组可能会返回为foo[0]= "baz"foo[1] as="bar"

    如果顺序不重要,你可以试试这个分隔符。

    【讨论】:

    • 非常感谢!顺序对我来说确实无关紧要。请问您是否在文档中发现了这一点,而我只是盲目地看不到它?
    • @MCMLXXXII ,它不是文档的一部分,你可以参考这个线程stackoverflow.com/questions/60767085/…
    猜你喜欢
    • 2021-01-03
    • 2017-09-12
    • 2020-11-23
    • 2021-03-30
    • 2019-10-14
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    相关资源
    最近更新 更多