2017-12-21 32 views
0

私はロールリクエストのカスタムロジックを処理するためにScriptBasedOIDCProtocolMapperスクリプトを書いています。残念ながら、私は適切にシリアル化された配列を返すことができません。Keycloakのスクリプトマッパーから配列を返す

すなわち次のスクリプトが返す配列とき:

["one", "two"] 

主張値がマップとしてシリアル化される:

私はJSON配列を期待
...other claims... 
claimName: { 0: "one", 1: "two" } 

...other claims... 
claimName: ["one", "two"] 
何ができる

私はそれについてやっている?

私はカスタムプロトコルマッパーの提供を避けたいと思います。スクリプトマッパーの他の使用例、つまりscopeaudの主張を持っています。

答えて

0

は、私は私の検索を強化してきたと私はちょうど私が質問JavaScriptからJavaの配列を作成するにはどうすればよい

への答えを見つけましたか? RhinoのFAQ

あなたはJavaリフレクションを使用する必要があります。たとえば、長さ5のjava.lang.Stringの配列を作成するには、do

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);` 
関連する問題