2017-12-21 7 views
0

Ich möchte ScriptBasedOIDCProtocolMapper Skript schreiben, um einige benutzerdefinierte Logik für meinen Rollenanspruch zu behandeln. Leider kann ich das serialisierte Array nicht korrekt zurückgeben.Array von Keycloaks Skript-Mapper zurückgeben

dh wenn Skript gibt folgende Array:

["one", "two"] 

Anspruch Wert ist als Karte serialisierten:

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

wo ich JSON-Array erwarten würde:

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

Was kann Ich mache das?

Ich möchte die Bereitstellung von benutzerdefinierten Protokoll-Mapper vermeiden, ich habe andere Anwendungsfälle für Skript-Mapper, d. H. Handhabung scope und aud Ansprüche.

Antwort

0

Ich habe meine Suche intensiviert und ich habe gerade eine Antwort auf die Frage

Wie erstelle ich einen Java-Array von JavaScript gefunden?

auf Rhino FAQ

Sie müssen Java Reflexion verwenden. Um zum Beispiel ein Array von java.lang.String der Länge fünf zu erzeugen, tun Sie

;

dann einfach, wenn Sie die Zeichenfolge „hallo“ auf das erste Element zuzuweisen, führen

stringArray[0] = "hi";

jedoch durch die ich brauchte, um es zu arbeiten, um es ein wenig zu ändern .class Hinzufügen erwarteten Typdefinition zu erhalten:

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