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

公開メンバ関数

List< ProviderConfigProperty > getConfigProperties ()
 
String getId ()
 
String getDisplayType ()
 
String getDisplayCategory ()
 
String getHelpText ()
 
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 transformUserInfoToken (AccessToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 
AccessToken transformAccessToken (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)
 
IDToken transformIDToken (IDToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 

静的公開メンバ関数

static ProtocolMapperModel create (String realmRolePrefix, String name, String tokenClaimName, boolean accessToken, boolean idToken)
 
static ProtocolMapperModel create (String realmRolePrefix, String name, String tokenClaimName, boolean accessToken, boolean idToken, boolean multiValued)
 
static Stream< RoleModel > getAllUserRolesStream (UserModel user)
 

静的公開変数類

static final String PROVIDER_ID = "oidc-usermodel-realm-role-mapper"
 
static final String TOKEN_MAPPER_CATEGORY = "Token mapper"
 

限定公開メンバ関数

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

静的限定公開メンバ関数

static void setClaim (IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession, Predicate< RoleModel > restriction, String prefix)
 

静的関数

 [static initializer]
 

静的非公開変数類

static final List< ProviderConfigProperty > CONFIG_PROPERTIES = new ArrayList<>()
 

詳解

Allows mapping of user realm role mappings to an ID and Access Token claim.

著者
Thomas Darimont

関数詳解

◆ [static initializer]()

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

◆ close()

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

◆ create() [1/3]

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

◆ create() [2/3]

static ProtocolMapperModel org.keycloak.protocol.oidc.mappers.UserRealmRoleMappingMapper.create ( String  realmRolePrefix,
String  name,
String  tokenClaimName,
boolean  accessToken,
boolean  idToken 
)
inlinestatic
93  {
94 
95  return create(realmRolePrefix, name, tokenClaimName, accessToken, idToken, false);
96  }
static ProtocolMapperModel create(String realmRolePrefix, String name, String tokenClaimName, boolean accessToken, boolean idToken)
Definition: UserRealmRoleMappingMapper.java:91

◆ create() [3/3]

static ProtocolMapperModel org.keycloak.protocol.oidc.mappers.UserRealmRoleMappingMapper.create ( String  realmRolePrefix,
String  name,
String  tokenClaimName,
boolean  accessToken,
boolean  idToken,
boolean  multiValued 
)
inlinestatic
100  {
101  ProtocolMapperModel mapper = OIDCAttributeMapperHelper.createClaimMapper(name, "foo",
102  tokenClaimName, "String",
103  accessToken, idToken,
104  PROVIDER_ID);
105 
106  mapper.getConfig().put(ProtocolMapperUtils.MULTIVALUED, String.valueOf(multiValued));
107  mapper.getConfig().put(ProtocolMapperUtils.USER_MODEL_REALM_ROLE_MAPPING_ROLE_PREFIX, realmRolePrefix);
108  return mapper;
109  }
static final String PROVIDER_ID
Definition: UserRealmRoleMappingMapper.java:36

◆ getAllUserRolesStream()

static Stream<RoleModel> org.keycloak.protocol.oidc.mappers.AbstractUserRoleMappingMapper.getAllUserRolesStream ( UserModel  user)
inlinestaticinherited

Returns a stream with roles that come from:

  • Direct assignment of the role to the user
  • Direct assignment of the role to any group of the user or any of its parent group
  • Composite roles are expanded recursively, the composite role itself is also contained in the returned stream
引数
userUser to enumerate the roles for
戻り値
52  {
53  return Stream.concat(
54  user.getRoleMappings().stream(),
55  user.getGroups().stream()
56  .flatMap(g -> groupAndItsParentsStream(g))
57  .flatMap(g -> g.getRoleMappings().stream()))
58  .flatMap(RoleUtils::expandCompositeRolesStream);
59  }
static Stream< GroupModel > groupAndItsParentsStream(GroupModel group)
Definition: AbstractUserRoleMappingMapper.java:66

◆ getConfigProperties()

List<ProviderConfigProperty> org.keycloak.protocol.oidc.mappers.UserRealmRoleMappingMapper.getConfigProperties ( )
inline
61  {
62  return CONFIG_PROPERTIES;
63  }
static final List< ProviderConfigProperty > CONFIG_PROPERTIES
Definition: UserRealmRoleMappingMapper.java:38

◆ getDisplayCategory()

String org.keycloak.protocol.oidc.mappers.UserRealmRoleMappingMapper.getDisplayCategory ( )
inline
76  {
77  return TOKEN_MAPPER_CATEGORY;
78  }
static final String TOKEN_MAPPER_CATEGORY
Definition: AbstractOIDCProtocolMapper.java:37

◆ getDisplayType()

String org.keycloak.protocol.oidc.mappers.UserRealmRoleMappingMapper.getDisplayType ( )
inline
71  {
72  return "User Realm Role";
73  }

◆ getHelpText()

String org.keycloak.protocol.oidc.mappers.UserRealmRoleMappingMapper.getHelpText ( )
inline
81  {
82  return "Map a user realm role to a token claim.";
83  }

◆ getId()

String org.keycloak.protocol.oidc.mappers.UserRealmRoleMappingMapper.getId ( )
inline
66  {
67  return PROVIDER_ID;
68  }
static final String PROVIDER_ID
Definition: UserRealmRoleMappingMapper.java:36

◆ 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  }

◆ postInit()

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

◆ setClaim() [1/3]

void org.keycloak.protocol.oidc.mappers.UserRealmRoleMappingMapper.setClaim ( IDToken  token,
ProtocolMapperModel  mappingModel,
UserSessionModel  userSession 
)
inlineprotected
86  {
87  String rolePrefix = mappingModel.getConfig().get(ProtocolMapperUtils.USER_MODEL_REALM_ROLE_MAPPING_ROLE_PREFIX);
88  AbstractUserRoleMappingMapper.setClaim(token, mappingModel, userSession, role -> ! role.isClientRole(), rolePrefix);
89  }

◆ setClaim() [2/3]

static void org.keycloak.protocol.oidc.mappers.AbstractUserRoleMappingMapper.setClaim ( IDToken  token,
ProtocolMapperModel  mappingModel,
UserSessionModel  userSession,
Predicate< RoleModel >  restriction,
String  prefix 
)
inlinestaticprotectedinherited

Retrieves all roles of the current user based on direct roles set to the user, its groups and their parent groups. Then it recursively expands all composite roles, and restricts according to the given predicate

restriction

. If the current client sessions is restricted (i.e. no client found in active user session has full scope allowed), the final list of roles is also restricted by the client scope. Finally, the list is mapped to the token into a claim.

引数
token
mappingModel
userSession
restriction
prefix
89  {
90  String rolePrefix = prefix == null ? "" : prefix;
91  UserModel user = userSession.getUser();
92 
93  // get a set of all realm roles assigned to the user or its group
94  Stream<RoleModel> clientUserRoles = getAllUserRolesStream(user).filter(restriction);
95 
96  boolean dontLimitScope = userSession.getAuthenticatedClientSessions().values().stream().anyMatch(cs -> cs.getClient().isFullScopeAllowed());
97  if (! dontLimitScope) {
98  Set<RoleModel> clientRoles = userSession.getAuthenticatedClientSessions().values().stream()
99  .flatMap(cs -> cs.getClient().getScopeMappings().stream())
100  .collect(Collectors.toSet());
101 
102  clientUserRoles = clientUserRoles.filter(clientRoles::contains);
103  }
104 
105  List<String> realmRoleNames = clientUserRoles
106  .map(m -> rolePrefix + m.getName())
107  .collect(Collectors.toList());
108 
109  Object claimValue = realmRoleNames;
110 
111  boolean multiValued = "true".equals(mappingModel.getConfig().get(ProtocolMapperUtils.MULTIVALUED));
112  if (!multiValued) {
113  claimValue = realmRoleNames.toString();
114  }
115 
116  OIDCAttributeMapperHelper.mapClaim(token, mappingModel, claimValue);
117  }
static Stream< RoleModel > getAllUserRolesStream(UserModel user)
Definition: AbstractUserRoleMappingMapper.java:52

◆ setClaim() [3/3]

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

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

引数
token
mappingModel
userSession
keycloakSession
115  {
116  // we delegate to the old #setClaim(...) method for backwards compatibility
117  setClaim(token, mappingModel, userSession);
118  }
void setClaim(IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession)
Definition: AbstractOIDCProtocolMapper.java:105

◆ 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

メンバ詳解

◆ CONFIG_PROPERTIES

final List<ProviderConfigProperty> org.keycloak.protocol.oidc.mappers.UserRealmRoleMappingMapper.CONFIG_PROPERTIES = new ArrayList<>()
staticprivate

◆ PROVIDER_ID

final String org.keycloak.protocol.oidc.mappers.UserRealmRoleMappingMapper.PROVIDER_ID = "oidc-usermodel-realm-role-mapper"
static

◆ TOKEN_MAPPER_CATEGORY

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

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