我想编写ScriptBasedOIDCProtocolMapper
脚本来处理我的角色声明的一些自定义逻辑。不幸的是我无法返回正确的序列化数组。
即当脚本返回以下数组时:
["one", "two"]
声明值被序列化为地图:
...other claims...
claimName: { 0: "one", 1: "two" }
在哪里我期待JSON数组:
...other claims...
claimName: ["one", "two"]
我该怎么办?
我想避免提供自定义协议映射器,我有脚本映射器的其他用例,即处理scope
和aud
声称。
我加强了搜索,我刚刚找到了问题的答案
如何从JavaScript创建Java数组?
关于Rhino 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);`