keycloak-service
公開メンバ関数 | 静的公開メンバ関数 | 静的公開変数類 | 限定公開メンバ関数 | 静的関数 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper クラス
org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper の継承関係図
Inheritance graph
org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper 連携図
Collaboration graph

公開メンバ関数

List< ProviderConfigProperty > getConfigProperties ()
 
String getId ()
 
String getDisplayType ()
 
String getDisplayCategory ()
 
String getHelpText ()
 
boolean isSupported ()
 
void validateConfig (KeycloakSession session, RealmModel realm, ProtocolMapperContainerModel client, ProtocolMapperModel mapperModel) throws ProtocolMapperConfigException
 
String getProtocol ()
 
void close ()
 
final ProtocolMapper create (KeycloakSession session)
 
void init (Config.Scope config)
 
void postInit (KeycloakSessionFactory factory)
 
AccessToken transformUserInfoToken (AccessToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 
AccessToken transformAccessToken (AccessToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 
IDToken transformIDToken (IDToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 
AccessToken transformAccessToken (AccessToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 
IDToken transformIDToken (IDToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 
AccessToken transformUserInfoToken (AccessToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 

静的公開メンバ関数

static ProtocolMapperModel create (String name, String userAttribute, String tokenClaimName, String claimType, boolean accessToken, boolean idToken, String script, boolean multiValued)
 

静的公開変数類

static final String PROVIDER_ID = "oidc-script-based-protocol-mapper"
 
static final String TOKEN_MAPPER_CATEGORY = "Token mapper"
 

限定公開メンバ関数

void setClaim (IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession, KeycloakSession keycloakSession)
 
void setClaim (IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession)
 

静的関数

 [static initializer]
 

静的非公開変数類

static final Logger LOGGER = Logger.getLogger(ScriptBasedOIDCProtocolMapper.class)
 
static final String SCRIPT = "script"
 
static final List< ProviderConfigProperty > configProperties
 

詳解

OIDC org.keycloak.protocol.ProtocolMapper that uses a provided JavaScript fragment to compute the token claim value.

著者
Thomas Darimont

関数詳解

◆ [static initializer]()

org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.[static initializer] ( )
inlinestaticpackage

◆ close()

void org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.close ( )
inlineinherited
45  {
46 
47  }

◆ create() [1/2]

final ProtocolMapper org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.create ( KeycloakSession  session)
inlineinherited
50  {
51  throw new RuntimeException("UNSUPPORTED METHOD");
52  }

◆ create() [2/2]

static ProtocolMapperModel org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.create ( String  name,
String  userAttribute,
String  tokenClaimName,
String  claimType,
boolean  accessToken,
boolean  idToken,
String  script,
boolean  multiValued 
)
inlinestatic
172  {
173  ProtocolMapperModel mapper = OIDCAttributeMapperHelper.createClaimMapper(name, userAttribute,
174  tokenClaimName, claimType,
175  accessToken, idToken,
176  PROVIDER_ID);
177 
178  mapper.getConfig().put(SCRIPT, script);
179  mapper.getConfig().put(ProtocolMapperUtils.MULTIVALUED, String.valueOf(multiValued));
180 
181  return mapper;
182  }
static final String SCRIPT
Definition: ScriptBasedOIDCProtocolMapper.java:53
static final String PROVIDER_ID
Definition: ScriptBasedOIDCProtocolMapper.java:49

◆ getConfigProperties()

List<ProviderConfigProperty> org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.getConfigProperties ( )
inline
95  {
96  return configProperties;
97  }
static final List< ProviderConfigProperty > configProperties
Definition: ScriptBasedOIDCProtocolMapper.java:55

◆ getDisplayCategory()

String org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.getDisplayCategory ( )
inline
110  {
111  return TOKEN_MAPPER_CATEGORY;
112  }
static final String TOKEN_MAPPER_CATEGORY
Definition: AbstractOIDCProtocolMapper.java:37

◆ getDisplayType()

String org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.getDisplayType ( )
inline
105  {
106  return "Script Mapper";
107  }

◆ getHelpText()

String org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.getHelpText ( )
inline
115  {
116  return "Evaluates a JavaScript function to produce a token claim based on context information.";
117  }

◆ getId()

String org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.getId ( )
inline
100  {
101  return PROVIDER_ID;
102  }
static final String PROVIDER_ID
Definition: ScriptBasedOIDCProtocolMapper.java:49

◆ getProtocol()

String org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.getProtocol ( )
inlineinherited
40  {
41  return OIDCLoginProtocol.LOGIN_PROTOCOL;
42  }

◆ init()

void org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.init ( Config.Scope  config)
inlineinherited
55  {
56  }

◆ isSupported()

boolean org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.isSupported ( )
inline
119  {
120  return Profile.isFeatureEnabled(Profile.Feature.SCRIPTS);
121  }

◆ postInit()

void org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.postInit ( KeycloakSessionFactory  factory)
inlineinherited
59  {
60 
61  }

◆ setClaim() [1/2]

void org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.setClaim ( IDToken  token,
ProtocolMapperModel  mappingModel,
UserSessionModel  userSession 
)
inlineprotectedinherited

Intended to be overridden in ProtocolMapper implementations to add claims to an token.

引数
token
mappingModel
userSession
非推奨:
override setClaim(IDToken, ProtocolMapperModel, UserSessionModel, KeycloakSession) instead.
105  {
106  }

◆ setClaim() [2/2]

void org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.setClaim ( IDToken  token,
ProtocolMapperModel  mappingModel,
UserSessionModel  userSession,
KeycloakSession  keycloakSession 
)
inlineprotected
123  {
124 
125  UserModel user = userSession.getUser();
126  String scriptSource = mappingModel.getConfig().get(SCRIPT);
127  RealmModel realm = userSession.getRealm();
128 
129  ScriptingProvider scripting = keycloakSession.getProvider(ScriptingProvider.class);
130  ScriptModel scriptModel = scripting.createScript(realm.getId(), ScriptModel.TEXT_JAVASCRIPT, "token-mapper-script_" + mappingModel.getName(), scriptSource, null);
131 
132  EvaluatableScriptAdapter script = scripting.prepareEvaluatableScript(scriptModel);
133 
134  Object claimValue;
135  try {
136  claimValue = script.eval((bindings) -> {
137  bindings.put("user", user);
138  bindings.put("realm", realm);
139  bindings.put("token", token);
140  bindings.put("userSession", userSession);
141  bindings.put("keycloakSession", keycloakSession);
142  });
143  } catch (Exception ex) {
144  LOGGER.error("Error during execution of ProtocolMapper script", ex);
145  claimValue = null;
146  }
147 
148  OIDCAttributeMapperHelper.mapClaim(token, mappingModel, claimValue);
149  }
static final String SCRIPT
Definition: ScriptBasedOIDCProtocolMapper.java:53
static final Logger LOGGER
Definition: ScriptBasedOIDCProtocolMapper.java:51

◆ transformAccessToken() [1/2]

AccessToken org.keycloak.protocol.oidc.mappers.OIDCAccessTokenMapper.transformAccessToken ( AccessToken  token,
ProtocolMapperModel  mappingModel,
KeycloakSession  session,
UserSessionModel  userSession,
AuthenticatedClientSessionModel  clientSession 
)
inherited

◆ transformAccessToken() [2/2]

AccessToken org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.transformAccessToken ( AccessToken  token,
ProtocolMapperModel  mappingModel,
KeycloakSession  session,
UserSessionModel  userSession,
AuthenticatedClientSessionModel  clientSession 
)
inlineinherited
75  {
76 
77  if (!OIDCAttributeMapperHelper.includeInAccessToken(mappingModel)){
78  return token;
79  }
80 
81  setClaim(token, mappingModel, userSession, session);
82  return token;
83  }
void setClaim(IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession)
Definition: AbstractOIDCProtocolMapper.java:105

◆ transformIDToken() [1/2]

IDToken org.keycloak.protocol.oidc.mappers.OIDCIDTokenMapper.transformIDToken ( IDToken  token,
ProtocolMapperModel  mappingModel,
KeycloakSession  session,
UserSessionModel  userSession,
AuthenticatedClientSessionModel  clientSession 
)
inherited

◆ transformIDToken() [2/2]

IDToken org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.transformIDToken ( IDToken  token,
ProtocolMapperModel  mappingModel,
KeycloakSession  session,
UserSessionModel  userSession,
AuthenticatedClientSessionModel  clientSession 
)
inlineinherited
86  {
87 
88  if (!OIDCAttributeMapperHelper.includeInIDToken(mappingModel)){
89  return token;
90  }
91 
92  setClaim(token, mappingModel, userSession, session);
93  return token;
94  }
void setClaim(IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession)
Definition: AbstractOIDCProtocolMapper.java:105

◆ transformUserInfoToken() [1/2]

AccessToken org.keycloak.protocol.oidc.mappers.UserInfoTokenMapper.transformUserInfoToken ( AccessToken  token,
ProtocolMapperModel  mappingModel,
KeycloakSession  session,
UserSessionModel  userSession,
AuthenticatedClientSessionModel  clientSession 
)
inherited

◆ transformUserInfoToken() [2/2]

AccessToken org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.transformUserInfoToken ( AccessToken  token,
ProtocolMapperModel  mappingModel,
KeycloakSession  session,
UserSessionModel  userSession,
AuthenticatedClientSessionModel  clientSession 
)
inlineinherited
64  {
65 
66  if (!OIDCAttributeMapperHelper.includeInUserInfo(mappingModel)) {
67  return token;
68  }
69 
70  setClaim(token, mappingModel, userSession, session);
71  return token;
72  }
void setClaim(IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession)
Definition: AbstractOIDCProtocolMapper.java:105

◆ validateConfig()

void org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.validateConfig ( KeycloakSession  session,
RealmModel  realm,
ProtocolMapperContainerModel  client,
ProtocolMapperModel  mapperModel 
) throws ProtocolMapperConfigException
inline
152  {
153 
154  String scriptCode = mapperModel.getConfig().get(SCRIPT);
155  if (scriptCode == null) {
156  return;
157  }
158 
159  ScriptingProvider scripting = session.getProvider(ScriptingProvider.class);
160  ScriptModel scriptModel = scripting.createScript(realm.getId(), ScriptModel.TEXT_JAVASCRIPT, mapperModel.getName() + "-script", scriptCode, "");
161 
162  try {
163  scripting.prepareEvaluatableScript(scriptModel);
164  } catch (ScriptCompilationException ex) {
165  throw new ProtocolMapperConfigException("error", "{0}", ex.getMessage());
166  }
167  }
static final String SCRIPT
Definition: ScriptBasedOIDCProtocolMapper.java:53

メンバ詳解

◆ configProperties

final List<ProviderConfigProperty> org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.configProperties
staticprivate

◆ LOGGER

final Logger org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.LOGGER = Logger.getLogger(ScriptBasedOIDCProtocolMapper.class)
staticprivate

◆ PROVIDER_ID

final String org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.PROVIDER_ID = "oidc-script-based-protocol-mapper"
static

◆ SCRIPT

final String org.keycloak.protocol.oidc.mappers.ScriptBasedOIDCProtocolMapper.SCRIPT = "script"
staticprivate

◆ TOKEN_MAPPER_CATEGORY

final String org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.TOKEN_MAPPER_CATEGORY = "Token mapper"
staticinherited

このクラス詳解は次のファイルから抽出されました: