keycloak
クラス | 公開メンバ関数 | 静的公開変数類 | 限定公開メンバ関数 | 限定公開変数類 | 非公開メンバ関数 | 静的非公開変数類 | 全メンバ一覧
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 MgmtPermissions root
Definition: UserPermissions.java:70
final KeycloakSession session
Definition: UserPermissions.java:67
final AuthorizationProvider authz
Definition: UserPermissions.java:69
final RealmModel realm
Definition: UserPermissions.java:68

関数詳解

◆ adminImpersonatingPermission()

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

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

241  {
242  ResourceServer server = root.realmResourceServer();
244  }
Policy findByName(String name, String resourceServerId)
static final String ADMIN_IMPERSONATING_PERMISSION
Definition: UserPermissions.java:61
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69

◆ 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 isImpersonatable(UserModel user)
Definition: UserPermissions.java:507
final KeycloakSession session
Definition: UserPermissions.java:67
boolean canImpersonate()
Definition: UserPermissions.java:532

◆ 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 isImpersonatable(UserModel user)
Definition: UserPermissions.java:507
boolean canImpersonate()
Definition: UserPermissions.java:532

◆ 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  }
Identity identity
Definition: MgmtPermissions.java:59
boolean hasOneAdminRole(String... adminRoles)
Definition: MgmtPermissions.java:155
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
final MgmtPermissions root
Definition: UserPermissions.java:70
final KeycloakSession session
Definition: UserPermissions.java:67
boolean canImpersonate()
Definition: UserPermissions.java:532

◆ 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 
551  if (resource == null) return false;
552 
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  }
Scope realmScope(String scope)
Definition: MgmtPermissions.java:310
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Policy findByName(String name, String resourceServerId)
static final String ADMIN_IMPERSONATING_PERMISSION
Definition: UserPermissions.java:61
static final String IMPERSONATE_SCOPE
Definition: UserPermissions.java:57
Resource findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
Resource resource()
Definition: UserPermissions.java:208
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69

◆ 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 
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  }
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Policy findByName(String name, String resourceServerId)
static final String MANAGE_PERMISSION_USERS
Definition: UserPermissions.java:64
Resource findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
Resource resource()
Definition: UserPermissions.java:208
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
boolean canManageDefault()
Definition: UserPermissions.java:203
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
Scope realmManageScope()
Definition: MgmtPermissions.java:297

◆ 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 canManage()
Definition: UserPermissions.java:268
boolean canManageByGroup(UserModel user)
Definition: UserPermissions.java:351

◆ 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  }
boolean canManageMembers(GroupModel group)
Definition: GroupPermissions.java:406
GroupPermissions groups
Definition: MgmtPermissions.java:64
boolean evaluateHierarchy(UserModel user, EvaluateGroup eval)
Definition: UserPermissions.java:333
final MgmtPermissions root
Definition: UserPermissions.java:70

◆ canManageDefault()

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

◆ 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 
637  if (resource == null) return false;
638 
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  }
Scope realmScope(String scope)
Definition: MgmtPermissions.java:310
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Policy findByName(String name, String resourceServerId)
Resource findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
Resource resource()
Definition: UserPermissions.java:208
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
boolean canManage()
Definition: UserPermissions.java:268
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
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 MANAGE_GROUP_MEMBERSHIP_SCOPE
Definition: UserPermissions.java:59

◆ 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 
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  }
Scope realmScope(String scope)
Definition: MgmtPermissions.java:310
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Policy findByName(String name, String resourceServerId)
static final String MAP_ROLES_SCOPE
Definition: UserPermissions.java:56
Resource findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
Resource resource()
Definition: UserPermissions.java:208
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
boolean canManage()
Definition: UserPermissions.java:268
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
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
boolean hasOneAdminRole(String... adminRoles)
Definition: MgmtPermissions.java:155
final MgmtPermissions root
Definition: UserPermissions.java:70

◆ 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 canViewDefault()
Definition: UserPermissions.java:375
boolean hasViewPermission()
Definition: UserPermissions.java:429
boolean canManage()
Definition: UserPermissions.java:268
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
final MgmtPermissions root
Definition: UserPermissions.java:70

◆ 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  }
boolean canViewMembers(GroupModel group)
Definition: GroupPermissions.java:363
GroupPermissions groups
Definition: MgmtPermissions.java:64
boolean evaluateHierarchy(UserModel user, EvaluateGroup eval)
Definition: UserPermissions.java:333
final MgmtPermissions root
Definition: UserPermissions.java:70

◆ canViewDefault()

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

◆ 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 viewPermission()
Definition: UserPermissions.java:222
Policy manageGroupMembershipPermission()
Definition: UserPermissions.java:228
Policy managePermission()
Definition: UserPermissions.java:216
Resource findByName(String name, String resourceServerId)
Policy userImpersonatedPermission()
Definition: UserPermissions.java:247
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
Policy adminImpersonatingPermission()
Definition: UserPermissions.java:241
Policy mapRolesPermission()
Definition: UserPermissions.java:234
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69

◆ 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 canManageGroupMembership(UserModel user)
Definition: UserPermissions.java:626
boolean canManage()
Definition: UserPermissions.java:268
boolean canMapRoles(UserModel user)
Definition: UserPermissions.java:587
boolean canImpersonate()
Definition: UserPermissions.java:532

◆ 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  }
Policy viewPermission()
Definition: UserPermissions.java:222
Policy manageGroupMembershipPermission()
Definition: UserPermissions.java:228
static final String IMPERSONATE_SCOPE
Definition: UserPermissions.java:57
Policy managePermission()
Definition: UserPermissions.java:216
static final String USER_IMPERSONATED_SCOPE
Definition: UserPermissions.java:58
static final String MAP_ROLES_SCOPE
Definition: UserPermissions.java:56
Policy userImpersonatedPermission()
Definition: UserPermissions.java:247
Policy adminImpersonatingPermission()
Definition: UserPermissions.java:241
Policy mapRolesPermission()
Definition: UserPermissions.java:234
void initialize()
Definition: UserPermissions.java:80
static final String MANAGE_GROUP_MEMBERSHIP_SCOPE
Definition: UserPermissions.java:59

◆ hasViewPermission()

boolean org.keycloak.services.resources.admin.permissions.UserPermissions.hasViewPermission ( )
inlineprivate
429  {
430  ResourceServer server = root.realmResourceServer();
431  if (server == null) return canViewDefault();
432 
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  }
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Policy findByName(String name, String resourceServerId)
boolean canViewDefault()
Definition: UserPermissions.java:375
Resource findByName(String name, String resourceServerId)
Scope realmViewScope()
Definition: MgmtPermissions.java:304
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
Resource resource()
Definition: UserPermissions.java:208
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
static final String VIEW_PERMISSION_USERS
Definition: UserPermissions.java:65

◆ 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  }
104  if (managePermission == null) {
105  Helper.addEmptyScopePermission(authz, server, MANAGE_PERMISSION_USERS, usersResource, manageScope);
106  }
108  if (viewPermission == null) {
109  Helper.addEmptyScopePermission(authz, server, VIEW_PERMISSION_USERS, usersResource, viewScope);
110  }
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  }
Policy viewPermission()
Definition: UserPermissions.java:222
Policy findByName(String name, String resourceServerId)
static final String ADMIN_IMPERSONATING_PERMISSION
Definition: UserPermissions.java:61
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
void initializeRealmDefaultScopes()
Definition: MgmtPermissions.java:272
static final String IMPERSONATE_SCOPE
Definition: UserPermissions.java:57
void updateScopes(Set< Scope > scopes)
static final String MANAGE_PERMISSION_USERS
Definition: UserPermissions.java:64
Policy managePermission()
Definition: UserPermissions.java:216
static final String USER_IMPERSONATED_SCOPE
Definition: UserPermissions.java:58
static final String MAP_ROLES_SCOPE
Definition: UserPermissions.java:56
Resource findByName(String name, String resourceServerId)
Scope realmViewScope()
Definition: MgmtPermissions.java:304
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
Resource create(String name, ResourceServer resourceServer, String owner)
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
Scope initializeRealmScope(String name)
Definition: MgmtPermissions.java:278
Policy mapRolesPermission()
Definition: UserPermissions.java:234
static final String USER_IMPERSONATED_PERMISSION
Definition: UserPermissions.java:62
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
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 VIEW_PERMISSION_USERS
Definition: UserPermissions.java:65
Scope realmManageScope()
Definition: MgmtPermissions.java:297
static final String MAP_ROLES_PERMISSION_USERS
Definition: UserPermissions.java:60
static final String MANAGE_GROUP_MEMBERSHIP_SCOPE
Definition: UserPermissions.java:59

◆ 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 
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  }
Scope realmScope(String scope)
Definition: MgmtPermissions.java:310
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Policy findByName(String name, String resourceServerId)
static final String USER_IMPERSONATED_SCOPE
Definition: UserPermissions.java:58
Resource findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
Resource resource()
Definition: UserPermissions.java:208
static final String USER_IMPERSONATED_PERMISSION
Definition: UserPermissions.java:62
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
RealmModel realm
Definition: MgmtPermissions.java:55
final AuthorizationProvider authz
Definition: UserPermissions.java:69

◆ 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 
148  if (resource == null) return false;
149 
150  Policy policy = managePermission();
151 
152  return policy != null;
153  }
Policy managePermission()
Definition: UserPermissions.java:216
Resource findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
Resource resource()
Definition: UserPermissions.java:208
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69

◆ manageGroupMembershipPermission()

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

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

228  {
229  ResourceServer server = root.realmResourceServer();
231  }
Policy findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
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

◆ managePermission()

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

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

216  {
217  ResourceServer server = root.realmResourceServer();
219  }
Policy findByName(String name, String resourceServerId)
static final String MANAGE_PERMISSION_USERS
Definition: UserPermissions.java:64
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69

◆ mapRolesPermission()

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

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

234  {
235  ResourceServer server = root.realmResourceServer();
237  }
Policy findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
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  }
Resource findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
static final String USERS_RESOURCE
Definition: UserPermissions.java:66
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69

◆ 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 deletePermissionSetup()
Definition: UserPermissions.java:164
void initialize()
Definition: UserPermissions.java:80

◆ userImpersonatedPermission()

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

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

247  {
248  ResourceServer server = root.realmResourceServer();
250  }
Policy findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
static final String USER_IMPERSONATED_PERMISSION
Definition: UserPermissions.java:62
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69

◆ viewPermission()

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

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

222  {
223  ResourceServer server = root.realmResourceServer();
225  }
Policy findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
ResourceServer realmResourceServer
Definition: MgmtPermissions.java:62
final MgmtPermissions root
Definition: UserPermissions.java:70
final AuthorizationProvider authz
Definition: UserPermissions.java:69
static final String VIEW_PERMISSION_USERS
Definition: UserPermissions.java:65

メンバ詳解

◆ 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

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