Keycloak 客户端角色属性数组

Posted

技术标签:

【中文标题】Keycloak 客户端角色属性数组【英文标题】:Keycloak client role attribute array 【发布时间】: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"
    ]
  

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

非常感谢!顺序对我来说确实无关紧要。请问您是否在文档中发现了这一点,而我只是盲目地看不到它? @MCMLXXXII ,它不是文档的一部分,你可以参考这个线程***.com/questions/60767085/…

以上是关于Keycloak 客户端角色属性数组的主要内容,如果未能解决你的问题,请参考以下文章

客户端角色的 Keycloak Spring Boot 配置

keycloak 无法在 access_token 中获取客户端角色

Keycloak REST API 无法从用户角色映射中删除客户端级角色

在 Keycloak 中创建新用户期间未分配客户端角色

如何从 keycloak 中的自定义客户端获取角色?

Keycloak:我可以为每个客户端/用户/角色设置令牌的到期时间吗?