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

クラス

interface  EvaluateGroup
 

公開メンバ関数

 UserPermissions (KeycloakSession session, RealmModel realm, AuthorizationProvider authz, MgmtPermissions root)
 
Map< String, String > getPermissions ()
 
boolean isPermissionsEnabled ()
 
void setPermissionsEnabled (boolean enable)
 
boolean canManageDefault ()
 
Resource resource ()
 
Policy managePermission ()
 
Policy viewPermission ()
 
Policy manageGroupMembershipPermission ()
 
Policy mapRolesPermission ()
 
Policy adminImpersonatingPermission ()
 
Policy userImpersonatedPermission ()
 
boolean canManage ()
 
void requireManage ()
 
boolean canManage (UserModel user)
 
void requireManage (UserModel user)
 
boolean canViewDefault ()
 
boolean canQuery ()
 
void requireQuery ()
 
boolean canQuery (UserModel user)
 
void requireQuery (UserModel user)
 
boolean canView ()
 
boolean canView (UserModel user)
 
void requireView (UserModel user)
 
void requireView ()
 
boolean canClientImpersonate (ClientModel client, UserModel user)
 
boolean canImpersonate (UserModel user)
 
boolean isImpersonatable (UserModel user)
 
boolean canImpersonate ()
 
void requireImpersonate (UserModel user)
 
Map< String, Boolean > getAccess (UserModel user)
 
boolean canMapRoles (UserModel user)
 
void requireMapRoles (UserModel user)
 
boolean canManageGroupMembership (UserModel user)
 
void requireManageGroupMembership (UserModel user)
 

静的公開変数類

static final String MAP_ROLES_SCOPE ="map-roles"
 
static final String IMPERSONATE_SCOPE ="impersonate"
 
static final String USER_IMPERSONATED_SCOPE ="user-impersonated"
 
static final String MANAGE_GROUP_MEMBERSHIP_SCOPE ="manage-group-membership"
 
static final String MAP_ROLES_PERMISSION_USERS = "map-roles.permission.users"
 
static final String ADMIN_IMPERSONATING_PERMISSION = "admin-impersonating.permission.users"
 
static final String USER_IMPERSONATED_PERMISSION = "user-impersonated.permission.users"
 
static final String MANAGE_GROUP_MEMBERSHIP_PERMISSION_USERS = "manage-group-membership.permission.users"
 
static final String MANAGE_PERMISSION_USERS = "manage.permission.users"
 
static final String VIEW_PERMISSION_USERS = "view.permission.users"
 
static final String USERS_RESOURCE = "Users"
 

限定公開メンバ関数

boolean canImpersonate (EvaluationContext context)
 

限定公開変数類

final KeycloakSession session
 
final RealmModel realm
 
final AuthorizationProvider authz
 
final MgmtPermissions root
 

非公開メンバ関数

void initialize ()
 
void deletePermissionSetup ()
 
boolean evaluateGroups (UserModel user, EvaluateGroup eval)
 
boolean evaluateHierarchy (UserModel user, EvaluateGroup eval)
 
boolean evaluateHierarchy (EvaluateGroup eval, GroupModel group, Set< GroupModel > visited)
 
boolean canManageByGroup (UserModel user)
 
boolean canViewByGroup (UserModel user)
 
boolean hasViewPermission ()
 

静的非公開変数類

static final Logger logger = Logger.getLogger(UserPermissions.class)
 

詳解

Manages default policies for all users.

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ UserPermissions()

org.keycloak.services.resources.admin.permissions.UserPermissions.UserPermissions ( KeycloakSession  session,
RealmModel  realm,
AuthorizationProvider  authz,
MgmtPermissions  root 
)
inline
72  {
73  this.session = session;
74  this.realm = realm;
75  this.authz = authz;
76  this.root = root;
77  }
final RealmModel realm
Definition: UserPermissions.java:68
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
final KeycloakSession session
Definition: UserPermissions.java:67

関数詳解

◆ adminImpersonatingPermission()

Policy org.keycloak.services.resources.admin.permissions.UserPermissions.adminImpersonatingPermission ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

241  {
242  ResourceServer server = root.realmResourceServer();
243  return authz.getStoreFactory().getPolicyStore().findByName(ADMIN_IMPERSONATING_PERMISSION, server.getId());
244  }
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
static final String ADMIN_IMPERSONATING_PERMISSION
Definition: UserPermissions.java:61
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62

◆ canClientImpersonate()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canClientImpersonate ( ClientModel  client,
UserModel  user 
)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

482  {
483  ClientModelIdentity identity = new ClientModelIdentity(session, client);
484  EvaluationContext context = new DefaultEvaluationContext(identity, session) {
485  @Override
486  public Map<String, Collection<String>> getBaseAttributes() {
487  Map<String, Collection<String>> attributes = super.getBaseAttributes();
488  attributes.put("kc.client.id", Arrays.asList(client.getClientId()));
489  return attributes;
490  }
491 
492  };
493  return canImpersonate(context) && isImpersonatable(user);
494 
495  }
boolean canImpersonate()
Definition: UserPermissions.java:532
final KeycloakSession session
Definition: UserPermissions.java:67
boolean isImpersonatable(UserModel user)
Definition: UserPermissions.java:507

◆ canImpersonate() [1/3]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canImpersonate ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

498  {
499  if (!canImpersonate()) {
500  return false;
501  }
502 
503  return isImpersonatable(user);
504  }
boolean canImpersonate()
Definition: UserPermissions.java:532
boolean isImpersonatable(UserModel user)
Definition: UserPermissions.java:507

◆ canImpersonate() [2/3]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canImpersonate ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

532  {
533  if (root.hasOneAdminRole(ImpersonationConstants.IMPERSONATION_ROLE)) return true;
534 
535  Identity identity = root.identity;
536 
537  if (!root.isAdminSameRealm()) {
538  return false;
539  }
540 
541  EvaluationContext context = new DefaultEvaluationContext(identity, session);
542  return canImpersonate(context);
543  }
boolean canImpersonate()
Definition: UserPermissions.java:532
final MgmtPermissions root
Definition: UserPermissions.java:70
boolean hasOneAdminRole(String... adminRoles)
Definition: MgmtPermissions.java:155
final KeycloakSession session
Definition: UserPermissions.java:67
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
Identity identity
Definition: MgmtPermissions.java:59

◆ canImpersonate() [3/3]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canImpersonate ( EvaluationContext  context)
inlineprotected
545  {
546 
547  ResourceServer server = root.realmResourceServer();
548  if (server == null) return false;
549 
550  Resource resource = authz.getStoreFactory().getResourceStore().findByName(USERS_RESOURCE, server.getId());
551  if (resource == null) return false;
552 
553  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(ADMIN_IMPERSONATING_PERMISSION, server.getId());
554  if (policy == null) {
555  return false;
556  }
557 
558  Set<Policy> associatedPolicies = policy.getAssociatedPolicies();
559  // if no policies attached to permission then just do default behavior
560  if (associatedPolicies == null || associatedPolicies.isEmpty()) {
561  return false;
562  }
563 
564  Scope scope = root.realmScope(IMPERSONATE_SCOPE);
565  return root.evaluatePermission(resource, scope, server, context);
566  }
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
static final String IMPERSONATE_SCOPE
Definition: UserPermissions.java:57
static final String ADMIN_IMPERSONATING_PERMISSION
Definition: UserPermissions.java:61
Resource resource()
Definition: UserPermissions.java:208
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Scope realmScope(String scope)
Definition: MgmtPermissions.java:310

◆ canManage() [1/2]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canManage ( )
inline

Is admin allowed to manage all users? In Authz terms, does the admin have the "manage" scope for the Users Authz resource?

This method will follow the old default behavior (does the admin have the manage-users role) if any of these conditions are met.:

  • The admin is from the master realm managing a different realm
  • If the Authz objects are not set up correctly for the Users resource in Authz
  • The "manage" permission for the Users resource has an empty associatedPolicy list.

Otherwise, it will use the Authz policy engine to resolve this answer.

戻り値

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

268  {
269  if (canManageDefault()) return true;
270  if (!root.isAdminSameRealm()) {
271  return false;
272  }
273 
274  ResourceServer server = root.realmResourceServer();
275  if (server == null) return false;
276 
277  Resource resource = authz.getStoreFactory().getResourceStore().findByName(USERS_RESOURCE, server.getId());
278  if (resource == null) return false;
279 
280  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(MANAGE_PERMISSION_USERS, server.getId());
281  if (policy == null) {
282  return false;
283  }
284 
285  Set<Policy> associatedPolicies = policy.getAssociatedPolicies();
286  // if no policies attached to permission then just do default behavior
287  if (associatedPolicies == null || associatedPolicies.isEmpty()) {
288  return false;
289  }
290 
291  Scope scope = root.realmManageScope();
292  return root.evaluatePermission(resource, scope, server);
293 
294  }
Scope realmManageScope()
Definition: MgmtPermissions.java:297
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
boolean canManageDefault()
Definition: UserPermissions.java:203
Resource resource()
Definition: UserPermissions.java:208
static final String MANAGE_PERMISSION_USERS
Definition: UserPermissions.java:64
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316

◆ canManage() [2/2]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canManage ( UserModel  user)
inline

Does current admin have manage permissions for this particular user?

引数
user
戻り値

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

311  {
312  return canManage() || canManageByGroup(user);
313  }
boolean canManageByGroup(UserModel user)
Definition: UserPermissions.java:351
boolean canManage()
Definition: UserPermissions.java:268

◆ canManageByGroup()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canManageByGroup ( UserModel  user)
inlineprivate
351  {
352  /* no inheritance
353  return evaluateGroups(user,
354  (group) -> root.groups().canViewMembers(group)
355  );
356  */
357 
358  /* inheritance
359  */
360  return evaluateHierarchy(user, (group) -> root.groups().canManageMembers(group));
361 
362  }
GroupPermissions groups
Definition: MgmtPermissions.java:64
final MgmtPermissions root
Definition: UserPermissions.java:70
boolean canManageMembers(GroupModel group)
Definition: GroupPermissions.java:406
boolean evaluateHierarchy(UserModel user, EvaluateGroup eval)
Definition: UserPermissions.java:333

◆ canManageDefault()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canManageDefault ( )
inline
203  {
204  return root.hasOneAdminRole(AdminRoles.MANAGE_USERS);
205  }
final MgmtPermissions root
Definition: UserPermissions.java:70
boolean hasOneAdminRole(String... adminRoles)
Definition: MgmtPermissions.java:155

◆ canManageGroupMembership()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canManageGroupMembership ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

626  {
627  if (canManage(user)) return true;
628 
629  if (!root.isAdminSameRealm()) {
630  return false;
631  }
632 
633  ResourceServer server = root.realmResourceServer();
634  if (server == null) return false;
635 
636  Resource resource = authz.getStoreFactory().getResourceStore().findByName(USERS_RESOURCE, server.getId());
637  if (resource == null) return false;
638 
639  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(MANAGE_GROUP_MEMBERSHIP_PERMISSION_USERS, server.getId());
640  if (policy == null) {
641  return false;
642  }
643 
644  Set<Policy> associatedPolicies = policy.getAssociatedPolicies();
645  // if no policies attached to permission then just do default behavior
646  if (associatedPolicies == null || associatedPolicies.isEmpty()) {
647  return false;
648  }
649 
651  return root.evaluatePermission(resource, scope, server);
652 
653  }
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
static final String MANAGE_GROUP_MEMBERSHIP_PERMISSION_USERS
Definition: UserPermissions.java:63
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
static final String MANAGE_GROUP_MEMBERSHIP_SCOPE
Definition: UserPermissions.java:59
Resource resource()
Definition: UserPermissions.java:208
boolean canManage()
Definition: UserPermissions.java:268
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Scope realmScope(String scope)
Definition: MgmtPermissions.java:310

◆ canMapRoles()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canMapRoles ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

587  {
588  if (canManage(user)) return true;
589 
590  if (!root.isAdminSameRealm()) {
591  return false;
592  }
593 
594  ResourceServer server = root.realmResourceServer();
595  if (server == null) return false;
596 
597  Resource resource = authz.getStoreFactory().getResourceStore().findByName(USERS_RESOURCE, server.getId());
598  if (resource == null) return false;
599 
600  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(MAP_ROLES_PERMISSION_USERS, server.getId());
601  if (policy == null) {
602  return false;
603  }
604 
605  Set<Policy> associatedPolicies = policy.getAssociatedPolicies();
606  // if no policies attached to permission then just do default behavior
607  if (associatedPolicies == null || associatedPolicies.isEmpty()) {
608  return false;
609  }
610 
611  Scope scope = root.realmScope(MAP_ROLES_SCOPE);
612  return root.evaluatePermission(resource, scope, server);
613 
614  }
static final String MAP_ROLES_SCOPE
Definition: UserPermissions.java:56
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
Resource resource()
Definition: UserPermissions.java:208
boolean canManage()
Definition: UserPermissions.java:268
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Scope realmScope(String scope)
Definition: MgmtPermissions.java:310
static final String MAP_ROLES_PERMISSION_USERS
Definition: UserPermissions.java:60

◆ canQuery() [1/2]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canQuery ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

380  {
381  return canView() || root.hasOneAdminRole(AdminRoles.QUERY_USERS);
382  }
boolean canView()
Definition: UserPermissions.java:420
final MgmtPermissions root
Definition: UserPermissions.java:70
boolean hasOneAdminRole(String... adminRoles)
Definition: MgmtPermissions.java:155

◆ canQuery() [2/2]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canQuery ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

392  {
393  return canView(user);
394  }
boolean canView()
Definition: UserPermissions.java:420

◆ canView() [1/2]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canView ( )
inline

Is admin allowed to view all users? In Authz terms, does the admin have the "view" scope for the Users Authz resource?

This method will follow the old default behavior (does the admin have the view-users role) if any of these conditions are met.:

  • The admin is from the master realm managing a different realm
  • If the Authz objects are not set up correctly for the Users resource in Authz
  • The "view" permission for the Users resource has an empty associatedPolicy list.

Otherwise, it will use the Authz policy engine to resolve this answer.

戻り値

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

420  {
421  if (canViewDefault()) return true;
422  if (!root.isAdminSameRealm()) {
423  return false;
424  }
425 
426  return hasViewPermission() || canManage();
427  }
boolean hasViewPermission()
Definition: UserPermissions.java:429
boolean canViewDefault()
Definition: UserPermissions.java:375
final MgmtPermissions root
Definition: UserPermissions.java:70
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
boolean canManage()
Definition: UserPermissions.java:268

◆ canView() [2/2]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canView ( UserModel  user)
inline

Does current admin have view permissions for this particular user?

Evaluates in this order. If any true, return true:

  • canViewUsers
  • canManageUsers
引数
user
戻り値

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

463  {
464  return canView() || canViewByGroup(user);
465  }
boolean canView()
Definition: UserPermissions.java:420
boolean canViewByGroup(UserModel user)
Definition: UserPermissions.java:363

◆ canViewByGroup()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canViewByGroup ( UserModel  user)
inlineprivate
363  {
364  /* no inheritance
365  return evaluateGroups(user,
366  (group) -> root.groups().canViewMembers(group)
367  );
368  */
369 
370  /* inheritance
371  */
372  return evaluateHierarchy(user, (group) -> root.groups().canViewMembers(group));
373  }
GroupPermissions groups
Definition: MgmtPermissions.java:64
final MgmtPermissions root
Definition: UserPermissions.java:70
boolean evaluateHierarchy(UserModel user, EvaluateGroup eval)
Definition: UserPermissions.java:333
boolean canViewMembers(GroupModel group)
Definition: GroupPermissions.java:363

◆ canViewDefault()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.canViewDefault ( )
inline
375  {
376  return root.hasOneAdminRole(AdminRoles.MANAGE_USERS, AdminRoles.VIEW_USERS);
377  }
final MgmtPermissions root
Definition: UserPermissions.java:70
boolean hasOneAdminRole(String... adminRoles)
Definition: MgmtPermissions.java:155

◆ deletePermissionSetup()

void org.keycloak.services.resources.admin.permissions.UserPermissions.deletePermissionSetup ( )
inlineprivate
164  {
165  ResourceServer server = root.realmResourceServer();
166  if (server == null) return;
167  Policy policy = managePermission();
168  if (policy != null) {
169  authz.getStoreFactory().getPolicyStore().delete(policy.getId());
170 
171  }
172  policy = viewPermission();
173  if (policy != null) {
174  authz.getStoreFactory().getPolicyStore().delete(policy.getId());
175 
176  }
177  policy = mapRolesPermission();
178  if (policy != null) {
179  authz.getStoreFactory().getPolicyStore().delete(policy.getId());
180 
181  }
183  if (policy != null) {
184  authz.getStoreFactory().getPolicyStore().delete(policy.getId());
185 
186  }
187  policy = adminImpersonatingPermission();
188  if (policy != null) {
189  authz.getStoreFactory().getPolicyStore().delete(policy.getId());
190 
191  }
192  policy = userImpersonatedPermission();
193  if (policy != null) {
194  authz.getStoreFactory().getPolicyStore().delete(policy.getId());
195 
196  }
197  Resource usersResource = authz.getStoreFactory().getResourceStore().findByName(USERS_RESOURCE, server.getId());
198  if (usersResource != null) {
199  authz.getStoreFactory().getResourceStore().delete(usersResource.getId());
200  }
201  }
Policy manageGroupMembershipPermission()
Definition: UserPermissions.java:228
Policy viewPermission()
Definition: UserPermissions.java:222
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
Policy managePermission()
Definition: UserPermissions.java:216
Policy mapRolesPermission()
Definition: UserPermissions.java:234
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
Policy adminImpersonatingPermission()
Definition: UserPermissions.java:241
Policy userImpersonatedPermission()
Definition: UserPermissions.java:247

◆ evaluateGroups()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.evaluateGroups ( UserModel  user,
EvaluateGroup  eval 
)
inlineprivate
326  {
327  for (GroupModel group : user.getGroups()) {
328  if (eval.evaluate(group)) return true;
329  }
330  return false;
331  }

◆ evaluateHierarchy() [1/2]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.evaluateHierarchy ( UserModel  user,
EvaluateGroup  eval 
)
inlineprivate
333  {
334  Set<GroupModel> visited = new HashSet<>();
335  for (GroupModel group : user.getGroups()) {
336  if (evaluateHierarchy(eval, group, visited)) return true;
337  }
338  return false;
339  }
boolean evaluateHierarchy(UserModel user, EvaluateGroup eval)
Definition: UserPermissions.java:333

◆ evaluateHierarchy() [2/2]

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.evaluateHierarchy ( EvaluateGroup  eval,
GroupModel  group,
Set< GroupModel >  visited 
)
inlineprivate
341  {
342  if (visited.contains(group)) return false;
343  if (eval.evaluate(group)) {
344  return true;
345  }
346  visited.add(group);
347  if (group.getParent() == null) return false;
348  return evaluateHierarchy(eval, group.getParent(), visited);
349  }
boolean evaluateHierarchy(UserModel user, EvaluateGroup eval)
Definition: UserPermissions.java:333

◆ getAccess()

Map<String, Boolean> org.keycloak.services.resources.admin.permissions.UserPermissions.getAccess ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

576  {
577  Map<String, Boolean> map = new HashMap<>();
578  map.put("view", canView(user));
579  map.put("manage", canManage(user));
580  map.put("mapRoles", canMapRoles(user));
581  map.put("manageGroupMembership", canManageGroupMembership(user));
582  map.put("impersonate", canImpersonate(user));
583  return map;
584  }
boolean canView()
Definition: UserPermissions.java:420
boolean canImpersonate()
Definition: UserPermissions.java:532
boolean canManage()
Definition: UserPermissions.java:268
boolean canManageGroupMembership(UserModel user)
Definition: UserPermissions.java:626
boolean canMapRoles(UserModel user)
Definition: UserPermissions.java:587

◆ getPermissions()

Map<String, String> org.keycloak.services.resources.admin.permissions.UserPermissions.getPermissions ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

130  {
131  initialize();
132  Map<String, String> scopes = new LinkedHashMap<>();
133  scopes.put(AdminPermissionManagement.VIEW_SCOPE, viewPermission().getId());
134  scopes.put(AdminPermissionManagement.MANAGE_SCOPE, managePermission().getId());
135  scopes.put(MAP_ROLES_SCOPE, mapRolesPermission().getId());
137  scopes.put(IMPERSONATE_SCOPE, adminImpersonatingPermission().getId());
139  return scopes;
140  }
void initialize()
Definition: UserPermissions.java:80
Policy manageGroupMembershipPermission()
Definition: UserPermissions.java:228
static final String MAP_ROLES_SCOPE
Definition: UserPermissions.java:56
static final String USER_IMPERSONATED_SCOPE
Definition: UserPermissions.java:58
Policy viewPermission()
Definition: UserPermissions.java:222
Policy managePermission()
Definition: UserPermissions.java:216
static final String IMPERSONATE_SCOPE
Definition: UserPermissions.java:57
Policy mapRolesPermission()
Definition: UserPermissions.java:234
static final String MANAGE_GROUP_MEMBERSHIP_SCOPE
Definition: UserPermissions.java:59
Policy adminImpersonatingPermission()
Definition: UserPermissions.java:241
Policy userImpersonatedPermission()
Definition: UserPermissions.java:247

◆ hasViewPermission()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.hasViewPermission ( )
inlineprivate
429  {
430  ResourceServer server = root.realmResourceServer();
431  if (server == null) return canViewDefault();
432 
433  Resource resource = authz.getStoreFactory().getResourceStore().findByName(USERS_RESOURCE, server.getId());
434  if (resource == null) return canViewDefault();
435 
436  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(VIEW_PERMISSION_USERS, server.getId());
437  if (policy == null) {
438  return canViewDefault();
439  }
440 
441  Set<Policy> associatedPolicies = policy.getAssociatedPolicies();
442  // if no policies attached to permission then just do default behavior
443  if (associatedPolicies == null || associatedPolicies.isEmpty()) {
444  return canViewDefault();
445  }
446 
447  Scope scope = root.realmViewScope();
448  return root.evaluatePermission(resource, scope, server);
449  }
static final String VIEW_PERMISSION_USERS
Definition: UserPermissions.java:65
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
boolean canViewDefault()
Definition: UserPermissions.java:375
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
Scope realmViewScope()
Definition: MgmtPermissions.java:304
Resource resource()
Definition: UserPermissions.java:208
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316

◆ initialize()

void org.keycloak.services.resources.admin.permissions.UserPermissions.initialize ( )
inlineprivate
80  {
83  ResourceServer server = root.realmResourceServer();
84  Scope manageScope = root.realmManageScope();
85  Scope viewScope = root.realmViewScope();
86  Scope mapRolesScope = root.initializeRealmScope(MAP_ROLES_SCOPE);
87  Scope impersonateScope = root.initializeRealmScope(IMPERSONATE_SCOPE);
88  Scope userImpersonatedScope = root.initializeRealmScope(USER_IMPERSONATED_SCOPE);
89  Scope manageGroupMembershipScope = root.initializeRealmScope(MANAGE_GROUP_MEMBERSHIP_SCOPE);
90 
91  Resource usersResource = authz.getStoreFactory().getResourceStore().findByName(USERS_RESOURCE, server.getId());
92  if (usersResource == null) {
93  usersResource = authz.getStoreFactory().getResourceStore().create(USERS_RESOURCE, server, server.getId());
94  Set<Scope> scopeset = new HashSet<>();
95  scopeset.add(manageScope);
96  scopeset.add(viewScope);
97  scopeset.add(mapRolesScope);
98  scopeset.add(impersonateScope);
99  scopeset.add(manageGroupMembershipScope);
100  scopeset.add(userImpersonatedScope);
101  usersResource.updateScopes(scopeset);
102  }
103  Policy managePermission = authz.getStoreFactory().getPolicyStore().findByName(MANAGE_PERMISSION_USERS, server.getId());
104  if (managePermission == null) {
105  Helper.addEmptyScopePermission(authz, server, MANAGE_PERMISSION_USERS, usersResource, manageScope);
106  }
107  Policy viewPermission = authz.getStoreFactory().getPolicyStore().findByName(VIEW_PERMISSION_USERS, server.getId());
108  if (viewPermission == null) {
109  Helper.addEmptyScopePermission(authz, server, VIEW_PERMISSION_USERS, usersResource, viewScope);
110  }
111  Policy mapRolesPermission = authz.getStoreFactory().getPolicyStore().findByName(MAP_ROLES_PERMISSION_USERS, server.getId());
112  if (mapRolesPermission == null) {
113  Helper.addEmptyScopePermission(authz, server, MAP_ROLES_PERMISSION_USERS, usersResource, mapRolesScope);
114  }
115  Policy membershipPermission = authz.getStoreFactory().getPolicyStore().findByName(MANAGE_GROUP_MEMBERSHIP_PERMISSION_USERS, server.getId());
116  if (membershipPermission == null) {
117  Helper.addEmptyScopePermission(authz, server, MANAGE_GROUP_MEMBERSHIP_PERMISSION_USERS, usersResource, manageGroupMembershipScope);
118  }
119  Policy impersonatePermission = authz.getStoreFactory().getPolicyStore().findByName(ADMIN_IMPERSONATING_PERMISSION, server.getId());
120  if (impersonatePermission == null) {
121  Helper.addEmptyScopePermission(authz, server, ADMIN_IMPERSONATING_PERMISSION, usersResource, impersonateScope);
122  }
123  impersonatePermission = authz.getStoreFactory().getPolicyStore().findByName(USER_IMPERSONATED_PERMISSION, server.getId());
124  if (impersonatePermission == null) {
125  Helper.addEmptyScopePermission(authz, server, USER_IMPERSONATED_PERMISSION, usersResource, userImpersonatedScope);
126  }
127  }
static final String VIEW_PERMISSION_USERS
Definition: UserPermissions.java:65
static final String MAP_ROLES_SCOPE
Definition: UserPermissions.java:56
static final String USER_IMPERSONATED_SCOPE
Definition: UserPermissions.java:58
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
Scope realmManageScope()
Definition: MgmtPermissions.java:297
Policy viewPermission()
Definition: UserPermissions.java:222
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
static final String MANAGE_GROUP_MEMBERSHIP_PERMISSION_USERS
Definition: UserPermissions.java:63
static final String USER_IMPERSONATED_PERMISSION
Definition: UserPermissions.java:62
Policy managePermission()
Definition: UserPermissions.java:216
static final String IMPERSONATE_SCOPE
Definition: UserPermissions.java:57
Policy mapRolesPermission()
Definition: UserPermissions.java:234
static final String ADMIN_IMPERSONATING_PERMISSION
Definition: UserPermissions.java:61
static final String MANAGE_GROUP_MEMBERSHIP_SCOPE
Definition: UserPermissions.java:59
Scope initializeRealmScope(String name)
Definition: MgmtPermissions.java:278
Scope realmViewScope()
Definition: MgmtPermissions.java:304
static final String MANAGE_PERMISSION_USERS
Definition: UserPermissions.java:64
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
void initializeRealmDefaultScopes()
Definition: MgmtPermissions.java:272
static final String MAP_ROLES_PERMISSION_USERS
Definition: UserPermissions.java:60

◆ isImpersonatable()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.isImpersonatable ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

507  {
508  Identity userIdentity = new UserModelIdentity(root.realm, user);
509 
510  ResourceServer server = root.realmResourceServer();
511  if (server == null) return true;
512 
513  Resource resource = authz.getStoreFactory().getResourceStore().findByName(USERS_RESOURCE, server.getId());
514  if (resource == null) return true;
515 
516  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(USER_IMPERSONATED_PERMISSION, server.getId());
517  if (policy == null) {
518  return true;
519  }
520 
521  Set<Policy> associatedPolicies = policy.getAssociatedPolicies();
522  // if no policies attached to permission then just do default behavior
523  if (associatedPolicies == null || associatedPolicies.isEmpty()) {
524  return true;
525  }
526 
527  Scope scope = root.realmScope(USER_IMPERSONATED_SCOPE);
528  return root.evaluatePermission(resource, scope, server, userIdentity);
529  }
static final String USER_IMPERSONATED_SCOPE
Definition: UserPermissions.java:58
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
static final String USER_IMPERSONATED_PERMISSION
Definition: UserPermissions.java:62
RealmModel realm
Definition: MgmtPermissions.java:55
Resource resource()
Definition: UserPermissions.java:208
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Scope realmScope(String scope)
Definition: MgmtPermissions.java:310

◆ isPermissionsEnabled()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.isPermissionsEnabled ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

143  {
144  ResourceServer server = root.realmResourceServer();
145  if (server == null) return false;
146 
147  Resource resource = authz.getStoreFactory().getResourceStore().findByName(USERS_RESOURCE, server.getId());
148  if (resource == null) return false;
149 
150  Policy policy = managePermission();
151 
152  return policy != null;
153  }
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
Policy managePermission()
Definition: UserPermissions.java:216
Resource resource()
Definition: UserPermissions.java:208
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62

◆ manageGroupMembershipPermission()

Policy org.keycloak.services.resources.admin.permissions.UserPermissions.manageGroupMembershipPermission ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

228  {
229  ResourceServer server = root.realmResourceServer();
230  return authz.getStoreFactory().getPolicyStore().findByName(MANAGE_GROUP_MEMBERSHIP_PERMISSION_USERS, server.getId());
231  }
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
static final String MANAGE_GROUP_MEMBERSHIP_PERMISSION_USERS
Definition: UserPermissions.java:63
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62

◆ managePermission()

Policy org.keycloak.services.resources.admin.permissions.UserPermissions.managePermission ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

216  {
217  ResourceServer server = root.realmResourceServer();
218  return authz.getStoreFactory().getPolicyStore().findByName(MANAGE_PERMISSION_USERS, server.getId());
219  }
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
static final String MANAGE_PERMISSION_USERS
Definition: UserPermissions.java:64
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62

◆ mapRolesPermission()

Policy org.keycloak.services.resources.admin.permissions.UserPermissions.mapRolesPermission ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

234  {
235  ResourceServer server = root.realmResourceServer();
236  return authz.getStoreFactory().getPolicyStore().findByName(MAP_ROLES_PERMISSION_USERS, server.getId());
237  }
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
static final String MAP_ROLES_PERMISSION_USERS
Definition: UserPermissions.java:60

◆ requireImpersonate()

void org.keycloak.services.resources.admin.permissions.UserPermissions.requireImpersonate ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

569  {
570  if (!canImpersonate(user)) {
571  throw new ForbiddenException();
572  }
573  }
boolean canImpersonate()
Definition: UserPermissions.java:532

◆ requireManage() [1/2]

void org.keycloak.services.resources.admin.permissions.UserPermissions.requireManage ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

297  {
298  if (!canManage()) {
299  throw new ForbiddenException();
300  }
301  }
boolean canManage()
Definition: UserPermissions.java:268

◆ requireManage() [2/2]

void org.keycloak.services.resources.admin.permissions.UserPermissions.requireManage ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

316  {
317  if (!canManage(user)) {
318  throw new ForbiddenException();
319  }
320  }
boolean canManage()
Definition: UserPermissions.java:268

◆ requireManageGroupMembership()

void org.keycloak.services.resources.admin.permissions.UserPermissions.requireManageGroupMembership ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

656  {
657  if (!canManageGroupMembership(user)) {
658  throw new ForbiddenException();
659  }
660 
661  }
boolean canManageGroupMembership(UserModel user)
Definition: UserPermissions.java:626

◆ requireMapRoles()

void org.keycloak.services.resources.admin.permissions.UserPermissions.requireMapRoles ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

617  {
618  if (!canMapRoles(user)) {
619  throw new ForbiddenException();
620  }
621 
622  }
boolean canMapRoles(UserModel user)
Definition: UserPermissions.java:587

◆ requireQuery() [1/2]

void org.keycloak.services.resources.admin.permissions.UserPermissions.requireQuery ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

385  {
386  if (!canQuery()) {
387  throw new ForbiddenException();
388  }
389  }
boolean canQuery()
Definition: UserPermissions.java:380

◆ requireQuery() [2/2]

void org.keycloak.services.resources.admin.permissions.UserPermissions.requireQuery ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

397  {
398  if (!canQuery(user)) {
399  throw new ForbiddenException();
400  }
401 
402  }
boolean canQuery()
Definition: UserPermissions.java:380

◆ requireView() [1/2]

void org.keycloak.services.resources.admin.permissions.UserPermissions.requireView ( UserModel  user)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

468  {
469  if (!canView(user)) {
470  throw new ForbiddenException();
471  }
472  }
boolean canView()
Definition: UserPermissions.java:420

◆ requireView() [2/2]

void org.keycloak.services.resources.admin.permissions.UserPermissions.requireView ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionEvaluatorを実装しています。

475  {
476  if (!(canView())) {
477  throw new ForbiddenException();
478  }
479  }
boolean canView()
Definition: UserPermissions.java:420

◆ resource()

Resource org.keycloak.services.resources.admin.permissions.UserPermissions.resource ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

208  {
209  ResourceServer server = root.realmResourceServer();
210  if (server == null) return null;
211 
212  return authz.getStoreFactory().getResourceStore().findByName(USERS_RESOURCE, server.getId());
213  }
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62

◆ setPermissionsEnabled()

void org.keycloak.services.resources.admin.permissions.UserPermissions.setPermissionsEnabled ( boolean  enable)
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

156  {
157  if (enable) {
158  initialize();
159  } else {
161  }
162  }
void initialize()
Definition: UserPermissions.java:80
void deletePermissionSetup()
Definition: UserPermissions.java:164

◆ userImpersonatedPermission()

Policy org.keycloak.services.resources.admin.permissions.UserPermissions.userImpersonatedPermission ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

247  {
248  ResourceServer server = root.realmResourceServer();
249  return authz.getStoreFactory().getPolicyStore().findByName(USER_IMPERSONATED_PERMISSION, server.getId());
250  }
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
static final String USER_IMPERSONATED_PERMISSION
Definition: UserPermissions.java:62
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62

◆ viewPermission()

Policy org.keycloak.services.resources.admin.permissions.UserPermissions.viewPermission ( )
inline

org.keycloak.services.resources.admin.permissions.UserPermissionManagementを実装しています。

222  {
223  ResourceServer server = root.realmResourceServer();
224  return authz.getStoreFactory().getPolicyStore().findByName(VIEW_PERMISSION_USERS, server.getId());
225  }
static final String VIEW_PERMISSION_USERS
Definition: UserPermissions.java:65
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62

メンバ詳解

◆ ADMIN_IMPERSONATING_PERMISSION

final String org.keycloak.services.resources.admin.permissions.UserPermissions.ADMIN_IMPERSONATING_PERMISSION = "admin-impersonating.permission.users"
static

◆ authz

final AuthorizationProvider org.keycloak.services.resources.admin.permissions.UserPermissions.authz
protected

◆ IMPERSONATE_SCOPE

final String org.keycloak.services.resources.admin.permissions.UserPermissions.IMPERSONATE_SCOPE ="impersonate"
static

◆ logger

final Logger org.keycloak.services.resources.admin.permissions.UserPermissions.logger = Logger.getLogger(UserPermissions.class)
staticprivate

◆ MANAGE_GROUP_MEMBERSHIP_PERMISSION_USERS

final String org.keycloak.services.resources.admin.permissions.UserPermissions.MANAGE_GROUP_MEMBERSHIP_PERMISSION_USERS = "manage-group-membership.permission.users"
static

◆ MANAGE_GROUP_MEMBERSHIP_SCOPE

final String org.keycloak.services.resources.admin.permissions.UserPermissions.MANAGE_GROUP_MEMBERSHIP_SCOPE ="manage-group-membership"
static

◆ MANAGE_PERMISSION_USERS

final String org.keycloak.services.resources.admin.permissions.UserPermissions.MANAGE_PERMISSION_USERS = "manage.permission.users"
static

◆ MAP_ROLES_PERMISSION_USERS

final String org.keycloak.services.resources.admin.permissions.UserPermissions.MAP_ROLES_PERMISSION_USERS = "map-roles.permission.users"
static

◆ MAP_ROLES_SCOPE

final String org.keycloak.services.resources.admin.permissions.UserPermissions.MAP_ROLES_SCOPE ="map-roles"
static

◆ realm

final RealmModel org.keycloak.services.resources.admin.permissions.UserPermissions.realm
protected

◆ root

final MgmtPermissions org.keycloak.services.resources.admin.permissions.UserPermissions.root
protected

◆ session

final KeycloakSession org.keycloak.services.resources.admin.permissions.UserPermissions.session
protected

◆ USER_IMPERSONATED_PERMISSION

final String org.keycloak.services.resources.admin.permissions.UserPermissions.USER_IMPERSONATED_PERMISSION = "user-impersonated.permission.users"
static

◆ USER_IMPERSONATED_SCOPE

final String org.keycloak.services.resources.admin.permissions.UserPermissions.USER_IMPERSONATED_SCOPE ="user-impersonated"
static

◆ USERS_RESOURCE

final String org.keycloak.services.resources.admin.permissions.UserPermissions.USERS_RESOURCE = "Users"
static

◆ VIEW_PERMISSION_USERS

final String org.keycloak.services.resources.admin.permissions.UserPermissions.VIEW_PERMISSION_USERS = "view.permission.users"
static

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