web-dev-qa-db-ja.com

Keycloakでスクリプトマッパーを作成する方法

Keycloakでタイプスクリプトマッパーのプロトコルマッパーを作成する必要があります。スクリプトはユーザー属性を取得し、そのサイズを確認して、トークンに配置する必要があります。スクリプトの作成方法のドキュメントや例は見つかりませんでした。私が集めることができた小片から、私はスクリプトが次のようなものになる必要があると思います:

var value = user.getAttribute("myAttribute");
if (value.length > LIMIT) {
    value = value.substring(0,LIMIT);
}
token.setOtherClaims("myAttribute",value);
  • これは正しいですか? user.getAttribute( "myAttribute")を作成しました。 Keycloakユーザー属性を取得する方法を見つけることができるドキュメントのソースはありますか?
  • スクリプトは何かを返す必要がありますか?どんな助けでも大歓迎です。
9
Jacobs2000

スクリプトマッパーの魔法は、ここのキークロークソースを見ると理解できます。 Source

スクリプトは、このようなexports変数を使用して何かを返すことができます

exports = "Claim Value"

さまざまなタイプ:

次にスクリプトの例を示します。

// you can set standard fields in token
token.setAcr("test value");

// you can set claims in the token
token.getOtherClaims().put("claimName", "claim value");

// work with variables and return multivalued token value
var ArrayList = Java.type("Java.util.ArrayList");
var roles = new ArrayList();
var client = keycloakSession.getContext().getClient();
var forEach = Array.prototype.forEach;
forEach.call(user.getClientRoleMappings(client).toArray(), function(roleModel) {
  roles.add(roleModel.getName());
});

exports = roles;

それが役に立てば幸い!

18
André B.