【问题标题】:Returning array from Keycloak's script mapper从 Keycloak 的脚本映射器返回数组
【发布时间】:2018-06-04 04:28:08
【问题描述】:

我想编写ScriptBasedOIDCProtocolMapper 脚本来处理我的角色声明的一些自定义逻辑。不幸的是,我无法返回正确序列化的数组。

即当脚本返回以下数组时:

["one", "two"]

声明值被序列化为映射:

...other claims...   
claimName: { 0: "one", 1: "two" }

我期望 JSON 数组的位置:

...other claims...   
claimName: ["one", "two"]

对此我能做些什么?

我想避免提供自定义协议映射器,我还有其他脚本映射器用例,即处理 scopeaud 声明。

【问题讨论】:

    标签: serialization wildfly claims-based-identity keycloak


    【解决方案1】:

    我已经加强了搜索,我刚刚找到了问题的答案

    如何从 JavaScript 创建 Java 数组?

    犀牛FAQ

    您必须使用 Java 反射。例如,要创建一个长度为 5 的 java.lang.String 数组,请执行

    var stringArray = java.lang.reflect.Array.newInstance(java.lang.String, 5);

    如果你想将字符串“hi”分配给第一个元素,只需执行

    stringArray[0] = "hi";

    但是为了让它工作,我需要通过添加.class 来稍微修改它以获得预期的类型定义:

    java.lang.reflect.Array.newInstance(java.lang.String.class, 5);`
    

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 2019-03-02
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      • 2018-06-29
      • 2012-10-02
      • 1970-01-01
      相关资源
      最近更新 更多