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

公開メンバ関数

 RolePermissions (KeycloakSession session, RealmModel realm, AuthorizationProvider authz, MgmtPermissions root)
 
boolean isPermissionsEnabled (RoleModel role)
 
void setPermissionsEnabled (RoleModel role, boolean enable)
 
Map< String, String > getPermissions (RoleModel role)
 
Policy mapRolePermission (RoleModel role)
 
Policy mapCompositePermission (RoleModel role)
 
Policy mapClientScopePermission (RoleModel role)
 
Resource resource (RoleModel role)
 
ResourceServer resourceServer (RoleModel role)
 
boolean canMapRole (RoleModel role)
 
void requireMapRole (RoleModel role)
 
boolean canList (RoleContainerModel container)
 
void requireList (RoleContainerModel container)
 
boolean canManage (RoleContainerModel container)
 
void requireManage (RoleContainerModel container)
 
boolean canView (RoleContainerModel container)
 
void requireView (RoleContainerModel container)
 
boolean canMapComposite (RoleModel role)
 
void requireMapComposite (RoleModel role)
 
boolean canMapClientScope (RoleModel role)
 
void requireMapClientScope (RoleModel role)
 
boolean canManage (RoleModel role)
 
boolean canManageDefault (RoleModel role)
 
void requireManage (RoleModel role)
 
boolean canView (RoleModel role)
 
void requireView (RoleModel role)
 
Policy manageUsersPolicy (ResourceServer server)
 
Policy viewUsersPolicy (ResourceServer server)
 
Policy rolePolicy (ResourceServer server, RoleModel role)
 

静的公開変数類

static final String MAP_ROLE_SCOPE = "map-role"
 
static final String MAP_ROLE_CLIENT_SCOPE_SCOPE = "map-role-client-scope"
 
static final String MAP_ROLE_COMPOSITE_SCOPE = "map-role-composite"
 

限定公開変数類

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

非公開メンバ関数

void disablePermissions (RoleModel role)
 
boolean checkAdminRoles (RoleModel role)
 
boolean adminConflictMessage (RoleModel role)
 
ClientModel getRoleClient (RoleModel role)
 
Scope mapRoleScope (ResourceServer server)
 
Scope mapClientScope (ResourceServer server)
 
Scope mapCompositeScope (ResourceServer server)
 
void initialize (RoleModel role)
 
String getMapRolePermissionName (RoleModel role)
 
String getMapClientScopePermissionName (RoleModel role)
 
String getMapCompositePermissionName (RoleModel role)
 
ResourceServer sdfgetResourceServer (RoleModel role)
 

静的非公開メンバ関数

static String getRoleResourceName (RoleModel role)
 

静的非公開変数類

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

詳解

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ RolePermissions()

org.keycloak.services.resources.admin.permissions.RolePermissions.RolePermissions ( KeycloakSession  session,
RealmModel  realm,
AuthorizationProvider  authz,
MgmtPermissions  root 
)
inline
53  {
54  this.session = session;
55  this.realm = realm;
56  this.authz = authz;
57  this.root = root;
58  }
final KeycloakSession session
Definition: RolePermissions.java:48
final RealmModel realm
Definition: RolePermissions.java:49
final AuthorizationProvider authz
Definition: RolePermissions.java:50
final MgmtPermissions root
Definition: RolePermissions.java:51

関数詳解

◆ adminConflictMessage()

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.adminConflictMessage ( RoleModel  role)
inlineprivate
275  {
276  logger.debug("Trying to assign admin privileges of role: " + role.getName() + " but admin doesn't have same privilege");
277  return false;
278  }
static final Logger logger
Definition: RolePermissions.java:47

◆ canList()

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.canList ( RoleContainerModel  container)
inline

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

326  {
327  return root.hasAnyAdminRole();
328  }
boolean hasAnyAdminRole()
Definition: MgmtPermissions.java:147
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ canManage() [1/2]

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.canManage ( RoleContainerModel  container)
inline

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

339  {
340  if (container instanceof RealmModel) {
341  return root.realm().canManageRealm();
342  } else {
343  return root.clients().canConfigure((ClientModel)container);
344  }
345  }
ClientPermissions clients()
Definition: MgmtPermissions.java:220
RealmModel realm
Definition: MgmtPermissions.java:55
boolean canConfigure(ClientModel client)
Definition: ClientPermissions.java:383
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ canManage() [2/2]

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.canManage ( RoleModel  role)
inline

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

445  {
446  if (role.getContainer() instanceof RealmModel) {
447  return root.realm().canManageRealm();
448  } else if (role.getContainer() instanceof ClientModel) {
449  ClientModel client = (ClientModel)role.getContainer();
450  return root.clients().canManage(client);
451  }
452  return false;
453  }
ClientPermissions clients()
Definition: MgmtPermissions.java:220
RealmModel realm
Definition: MgmtPermissions.java:55
boolean canManage()
Definition: ClientPermissions.java:256
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ canManageDefault()

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.canManageDefault ( RoleModel  role)
inline
455  {
456  if (role.getContainer() instanceof RealmModel) {
457  return root.realm().canManageRealmDefault();
458  } else if (role.getContainer() instanceof ClientModel) {
459  ClientModel client = (ClientModel)role.getContainer();
461  }
462  return false;
463  }
boolean canManageClientsDefault()
Definition: ClientPermissions.java:248
ClientPermissions clients()
Definition: MgmtPermissions.java:220
RealmModel realm
Definition: MgmtPermissions.java:55
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ canMapClientScope()

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.canMapClientScope ( RoleModel  role)
inline

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

411  {
412  if (root.clients().canManageClientsDefault()) return true;
413  if (!root.isAdminSameRealm()) {
414  return false;
415  }
416  if (role.getContainer() instanceof ClientModel) {
417  if (root.clients().canMapClientScopeRoles((ClientModel)role.getContainer())) return true;
418  }
419  if (!isPermissionsEnabled(role)){
420  return false;
421  }
422 
423  ResourceServer resourceServer = resourceServer(role);
424  if (resourceServer == null) return false;
425 
426  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(getMapClientScopePermissionName(role), resourceServer.getId());
427  if (policy == null || policy.getAssociatedPolicies().isEmpty()) {
428  return false;
429  }
430 
431  Resource roleResource = resource(role);
432  Scope scope = mapClientScope(resourceServer);
433  return root.evaluatePermission(roleResource, scope, resourceServer);
434  }
boolean canManageClientsDefault()
Definition: ClientPermissions.java:248
Resource resource(RoleModel role)
Definition: RolePermissions.java:122
ClientPermissions clients()
Definition: MgmtPermissions.java:220
boolean canMapClientScopeRoles(ClientModel client)
Definition: ClientPermissions.java:612
boolean isPermissionsEnabled(RoleModel role)
Definition: RolePermissions.java:61
ResourceServer resourceServer(RoleModel role)
Definition: RolePermissions.java:130
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
Scope mapClientScope(ResourceServer server)
Definition: RolePermissions.java:526
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
String getMapClientScopePermissionName(RoleModel role)
Definition: RolePermissions.java:588
final AuthorizationProvider authz
Definition: RolePermissions.java:50
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ canMapComposite()

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.canMapComposite ( RoleModel  role)
inline

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

371  {
372  if (canManageDefault(role)) return checkAdminRoles(role);
373 
374  if (!root.isAdminSameRealm()) {
375  return false;
376  }
377  if (role.getContainer() instanceof ClientModel) {
378  if (root.clients().canMapCompositeRoles((ClientModel)role.getContainer())) return true;
379  }
380  if (!isPermissionsEnabled(role)){
381  return false;
382  }
383 
384  ResourceServer resourceServer = resourceServer(role);
385  if (resourceServer == null) return false;
386 
387  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(getMapCompositePermissionName(role), resourceServer.getId());
388  if (policy == null || policy.getAssociatedPolicies().isEmpty()) {
389  return false;
390  }
391 
392  Resource roleResource = resource(role);
393  Scope scope = mapCompositeScope(resourceServer);
394  if (root.evaluatePermission(roleResource, scope, resourceServer)) {
395  return checkAdminRoles(role);
396  } else {
397  return false;
398  }
399  }
boolean checkAdminRoles(RoleModel role)
Definition: RolePermissions.java:135
Resource resource(RoleModel role)
Definition: RolePermissions.java:122
String getMapCompositePermissionName(RoleModel role)
Definition: RolePermissions.java:592
ClientPermissions clients()
Definition: MgmtPermissions.java:220
boolean canManageDefault(RoleModel role)
Definition: RolePermissions.java:455
Scope mapCompositeScope(ResourceServer server)
Definition: RolePermissions.java:530
boolean isPermissionsEnabled(RoleModel role)
Definition: RolePermissions.java:61
ResourceServer resourceServer(RoleModel role)
Definition: RolePermissions.java:130
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
final AuthorizationProvider authz
Definition: RolePermissions.java:50
final MgmtPermissions root
Definition: RolePermissions.java:51
boolean canMapCompositeRoles(ClientModel client)
Definition: ClientPermissions.java:590

◆ canMapRole()

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.canMapRole ( RoleModel  role)
inline

Is admin allowed to map this role?

引数
role
戻り値

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

287  {
288  if (root.users().canManageDefault()) return checkAdminRoles(role);
289  if (!root.isAdminSameRealm()) {
290  return false;
291  }
292 
293  if (role.getContainer() instanceof ClientModel) {
294  if (root.clients().canMapRoles((ClientModel)role.getContainer())) return true;
295  }
296  if (!isPermissionsEnabled(role)){
297  return false;
298  }
299 
300  ResourceServer resourceServer = resourceServer(role);
301  if (resourceServer == null) return false;
302 
303  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(getMapRolePermissionName(role), resourceServer.getId());
304  if (policy == null || policy.getAssociatedPolicies().isEmpty()) {
305  return false;
306  }
307 
308  Resource roleResource = resource(role);
309  Scope mapRoleScope = mapRoleScope(resourceServer);
310  if (root.evaluatePermission(roleResource, mapRoleScope, resourceServer)) {
311  return checkAdminRoles(role);
312  } else {
313  return false;
314  }
315  }
boolean checkAdminRoles(RoleModel role)
Definition: RolePermissions.java:135
Resource resource(RoleModel role)
Definition: RolePermissions.java:122
String getMapRolePermissionName(RoleModel role)
Definition: RolePermissions.java:584
ClientPermissions clients()
Definition: MgmtPermissions.java:220
UserPermissions users
Definition: MgmtPermissions.java:63
boolean isPermissionsEnabled(RoleModel role)
Definition: RolePermissions.java:61
ResourceServer resourceServer(RoleModel role)
Definition: RolePermissions.java:130
boolean canMapRoles(ClientModel client)
Definition: ClientPermissions.java:513
boolean isAdminSameRealm()
Definition: MgmtPermissions.java:178
boolean canManageDefault()
Definition: UserPermissions.java:203
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Scope mapRoleScope(ResourceServer server)
Definition: RolePermissions.java:522
final AuthorizationProvider authz
Definition: RolePermissions.java:50
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ canView() [1/2]

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.canView ( RoleContainerModel  container)
inline

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

355  {
356  if (container instanceof RealmModel) {
357  return root.realm().canViewRealm();
358  } else {
359  return root.clients().canView((ClientModel)container);
360  }
361  }
ClientPermissions clients()
Definition: MgmtPermissions.java:220
boolean canView()
Definition: ClientPermissions.java:267
RealmModel realm
Definition: MgmtPermissions.java:55
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ canView() [2/2]

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.canView ( RoleModel  role)
inline

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

474  {
475  if (role.getContainer() instanceof RealmModel) {
476  return root.realm().canViewRealm();
477  } else if (role.getContainer() instanceof ClientModel) {
478  ClientModel client = (ClientModel)role.getContainer();
479  return root.clients().canView(client);
480  }
481  return false;
482  }
ClientPermissions clients()
Definition: MgmtPermissions.java:220
boolean canView()
Definition: ClientPermissions.java:267
RealmModel realm
Definition: MgmtPermissions.java:55
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ checkAdminRoles()

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.checkAdminRoles ( RoleModel  role)
inlineprivate
135  {
136  if (AdminRoles.ALL_ROLES.contains(role.getName())) {
137  if (root.admin().hasRole(role)) return true;
138 
139  ClientModel adminClient = root.getRealmManagementClient();
140  // is this an admin role in 'realm-management' client of the realm we are managing?
141  if (adminClient.equals(role.getContainer())) {
142  // if this is realm admin role, then check to see if admin has similar permissions
143  // we do this so that the authz service is invoked
144  if (role.getName().equals(AdminRoles.MANAGE_CLIENTS)
145  || role.getName().equals(AdminRoles.CREATE_CLIENT)
146  ) {
147  if (!root.clients().canManage()) {
148  return adminConflictMessage(role);
149  } else {
150  return true;
151  }
152  } else if (role.getName().equals(AdminRoles.VIEW_CLIENTS)) {
153  if (!root.clients().canView()) {
154  return adminConflictMessage(role);
155  } else {
156  return true;
157  }
158 
159  } else if (role.getName().equals(AdminRoles.QUERY_REALMS)) {
160  return true;
161  } else if (role.getName().equals(AdminRoles.QUERY_CLIENTS)) {
162  return true;
163  } else if (role.getName().equals(AdminRoles.QUERY_USERS)) {
164  return true;
165  } else if (role.getName().equals(AdminRoles.QUERY_GROUPS)) {
166  return true;
167  } else if (role.getName().equals(AdminRoles.MANAGE_AUTHORIZATION)) {
168  if (!root.realm().canManageAuthorization()) {
169  return adminConflictMessage(role);
170  } else {
171  return true;
172  }
173  } else if (role.getName().equals(AdminRoles.VIEW_AUTHORIZATION)) {
174  if (!root.realm().canViewAuthorization()) {
175  return adminConflictMessage(role);
176  } else {
177  return true;
178  }
179  } else if (role.getName().equals(AdminRoles.MANAGE_EVENTS)) {
180  if (!root.realm().canManageEvents()) {
181  return adminConflictMessage(role);
182  } else {
183  return true;
184  }
185  } else if (role.getName().equals(AdminRoles.VIEW_EVENTS)) {
186  if (!root.realm().canViewEvents()) {
187  return adminConflictMessage(role);
188  } else {
189  return true;
190  }
191  } else if (role.getName().equals(AdminRoles.MANAGE_USERS)) {
192  if (!root.users().canManage()) {
193  return adminConflictMessage(role);
194  } else {
195  return true;
196  }
197  } else if (role.getName().equals(AdminRoles.VIEW_USERS)) {
198  if (!root.users().canView()) {
199  return adminConflictMessage(role);
200  } else {
201  return true;
202  }
203  } else if (role.getName().equals(AdminRoles.MANAGE_IDENTITY_PROVIDERS)) {
204  if (!root.realm().canManageIdentityProviders()) {
205  return adminConflictMessage(role);
206  } else {
207  return true;
208  }
209  } else if (role.getName().equals(AdminRoles.VIEW_IDENTITY_PROVIDERS)) {
210  if (!root.realm().canViewIdentityProviders()) {
211  return adminConflictMessage(role);
212  } else {
213  return true;
214  }
215  } else if (role.getName().equals(AdminRoles.MANAGE_REALM)) {
216  if (!root.realm().canManageRealm()) {
217  return adminConflictMessage(role);
218  } else {
219  return true;
220  }
221  } else if (role.getName().equals(AdminRoles.VIEW_REALM)) {
222  if (!root.realm().canViewRealm()) {
223  return adminConflictMessage(role);
224  } else {
225  return true;
226  }
227  } else if (role.getName().equals(ImpersonationConstants.IMPERSONATION_ROLE)) {
228  if (!root.users().canImpersonate()) {
229  return adminConflictMessage(role);
230  } else {
231  return true;
232  }
233  } else if (role.getName().equals(AdminRoles.REALM_ADMIN)) {
234  // check to see if we have masterRealm.admin role. Otherwise abort
235  if (root.adminsRealm() == null || !root.adminsRealm().getName().equals(Config.getAdminRealm())) {
236  return adminConflictMessage(role);
237  }
238 
239  RealmModel masterRealm = root.adminsRealm();
240  RoleModel adminRole = masterRealm.getRole(AdminRoles.ADMIN);
241  if (root.admin().hasRole(adminRole)) {
242  return true;
243  } else {
244  return adminConflictMessage(role);
245  }
246  } else {
247  return adminConflictMessage(role);
248  }
249 
250  } else {
251  // now we need to check to see if this is a master admin role
252  if (role.getContainer() instanceof RealmModel) {
253  RealmModel realm = (RealmModel)role.getContainer();
254  // If realm role is master admin role then abort
255  // if realm name is master realm, than we know this is a admin role in master realm.
256  if (realm.getName().equals(Config.getAdminRealm())) {
257  return adminConflictMessage(role);
258  }
259  } else {
260  ClientModel container = (ClientModel)role.getContainer();
261  // abort if this is an role in master realm and role is an admin role of any realm
262  if (container.getRealm().getName().equals(Config.getAdminRealm())
263  && container.getClientId().endsWith("-realm")) {
264  return adminConflictMessage(role);
265  }
266  }
267  return true;
268  }
269 
270  }
271  return true;
272 
273  }
boolean adminConflictMessage(RoleModel role)
Definition: RolePermissions.java:275
boolean canView()
Definition: UserPermissions.java:420
ClientPermissions clients()
Definition: MgmtPermissions.java:220
UserPermissions users
Definition: MgmtPermissions.java:63
boolean canView()
Definition: ClientPermissions.java:267
ClientModel getRealmManagementClient()
Definition: MgmtPermissions.java:122
UserModel admin
Definition: MgmtPermissions.java:60
RealmModel adminsRealm
Definition: MgmtPermissions.java:61
RealmModel realm
Definition: MgmtPermissions.java:55
boolean canManage()
Definition: UserPermissions.java:268
final RealmModel realm
Definition: RolePermissions.java:49
boolean canImpersonate(UserModel user)
Definition: UserPermissions.java:498
boolean canManage()
Definition: ClientPermissions.java:256
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ disablePermissions()

void org.keycloak.services.resources.admin.permissions.RolePermissions.disablePermissions ( RoleModel  role)
inlineprivate
74  {
75  ResourceServer server = resourceServer(role);
76  if (server == null) return;
77  Policy policy = mapRolePermission(role);
78  if (policy != null) authz.getStoreFactory().getPolicyStore().delete(policy.getId());
79  policy = mapClientScopePermission(role);
80  if (policy != null) authz.getStoreFactory().getPolicyStore().delete(policy.getId());
81  policy = mapCompositePermission(role);
82  if (policy != null) authz.getStoreFactory().getPolicyStore().delete(policy.getId());
83 
84  Resource resource = authz.getStoreFactory().getResourceStore().findByName(getRoleResourceName(role), server.getId());
85  if (resource != null) authz.getStoreFactory().getResourceStore().delete(resource.getId());
86  }
Policy mapClientScopePermission(RoleModel role)
Definition: RolePermissions.java:114
Policy mapCompositePermission(RoleModel role)
Definition: RolePermissions.java:106
Resource resource(RoleModel role)
Definition: RolePermissions.java:122
Policy mapRolePermission(RoleModel role)
Definition: RolePermissions.java:99
ResourceServer resourceServer(RoleModel role)
Definition: RolePermissions.java:130
static String getRoleResourceName(RoleModel role)
Definition: RolePermissions.java:601
final AuthorizationProvider authz
Definition: RolePermissions.java:50

◆ getMapClientScopePermissionName()

String org.keycloak.services.resources.admin.permissions.RolePermissions.getMapClientScopePermissionName ( RoleModel  role)
inlineprivate
588  {
589  return MAP_ROLE_CLIENT_SCOPE_SCOPE + ".permission." + role.getId();
590  }
static final String MAP_ROLE_CLIENT_SCOPE_SCOPE
Definition: RolePermissionManagement.java:33

◆ getMapCompositePermissionName()

String org.keycloak.services.resources.admin.permissions.RolePermissions.getMapCompositePermissionName ( RoleModel  role)
inlineprivate
592  {
593  return MAP_ROLE_COMPOSITE_SCOPE + ".permission." + role.getId();
594  }
static final String MAP_ROLE_COMPOSITE_SCOPE
Definition: RolePermissionManagement.java:34

◆ getMapRolePermissionName()

String org.keycloak.services.resources.admin.permissions.RolePermissions.getMapRolePermissionName ( RoleModel  role)
inlineprivate
584  {
585  return MAP_ROLE_SCOPE + ".permission." + role.getId();
586  }
static final String MAP_ROLE_SCOPE
Definition: RolePermissionManagement.java:32

◆ getPermissions()

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

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

89  {
90  initialize(role);
91  Map<String, String> scopes = new LinkedHashMap<>();
92  scopes.put(RolePermissionManagement.MAP_ROLE_SCOPE, mapRolePermission(role).getId());
93  scopes.put(RolePermissionManagement.MAP_ROLE_CLIENT_SCOPE_SCOPE, mapClientScopePermission(role).getId());
94  scopes.put(RolePermissionManagement.MAP_ROLE_COMPOSITE_SCOPE, mapCompositePermission(role).getId());
95  return scopes;
96  }
Policy mapClientScopePermission(RoleModel role)
Definition: RolePermissions.java:114
Policy mapCompositePermission(RoleModel role)
Definition: RolePermissions.java:106
void initialize(RoleModel role)
Definition: RolePermissions.java:535
Policy mapRolePermission(RoleModel role)
Definition: RolePermissions.java:99

◆ getRoleClient()

ClientModel org.keycloak.services.resources.admin.permissions.RolePermissions.getRoleClient ( RoleModel  role)
inlineprivate
492  {
493  ClientModel client = null;
494  if (role.getContainer() instanceof ClientModel) {
495  client = (ClientModel)role.getContainer();
496  } else {
497  client = root.getRealmManagementClient();
498  }
499  return client;
500  }
ClientModel getRealmManagementClient()
Definition: MgmtPermissions.java:122
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ getRoleResourceName()

static String org.keycloak.services.resources.admin.permissions.RolePermissions.getRoleResourceName ( RoleModel  role)
inlinestaticprivate
601  {
602  return "role.resource." + role.getId();
603  }

◆ initialize()

void org.keycloak.services.resources.admin.permissions.RolePermissions.initialize ( RoleModel  role)
inlineprivate
535  {
536  ResourceServer server = resourceServer(role);
537  if (server == null) {
538  ClientModel client = getRoleClient(role);
539  server = root.findOrCreateResourceServer(client);
540  }
541  Scope mapRoleScope = mapRoleScope(server);
542  if (mapRoleScope == null) {
543  mapRoleScope = authz.getStoreFactory().getScopeStore().create(MAP_ROLE_SCOPE, server);
544  }
545  Scope mapClientScope = mapClientScope(server);
546  if (mapClientScope == null) {
547  mapClientScope = authz.getStoreFactory().getScopeStore().create(MAP_ROLE_CLIENT_SCOPE_SCOPE, server);
548  }
549  Scope mapCompositeScope = mapCompositeScope(server);
550  if (mapCompositeScope == null) {
551  mapCompositeScope = authz.getStoreFactory().getScopeStore().create(MAP_ROLE_COMPOSITE_SCOPE, server);
552  }
553 
554  String roleResourceName = getRoleResourceName(role);
555  Resource resource = authz.getStoreFactory().getResourceStore().findByName(roleResourceName, server.getId());
556  if (resource == null) {
557  resource = authz.getStoreFactory().getResourceStore().create(roleResourceName, server, server.getId());
558  Set<Scope> scopeset = new HashSet<>();
559  scopeset.add(mapClientScope);
560  scopeset.add(mapCompositeScope);
561  scopeset.add(mapRoleScope);
562  resource.updateScopes(scopeset);
563  resource.setType("Role");
564  }
565  Policy mapRolePermission = mapRolePermission(role);
566  if (mapRolePermission == null) {
567  mapRolePermission = Helper.addEmptyScopePermission(authz, server, getMapRolePermissionName(role), resource, mapRoleScope);
568  mapRolePermission.setDecisionStrategy(DecisionStrategy.AFFIRMATIVE);
569  }
570 
572  if (mapClientScopePermission == null) {
573  mapClientScopePermission = Helper.addEmptyScopePermission(authz, server, getMapClientScopePermissionName(role), resource, mapClientScope);
574  mapClientScopePermission.setDecisionStrategy(DecisionStrategy.AFFIRMATIVE);
575  }
576 
578  if (mapCompositePermission == null) {
579  mapCompositePermission = Helper.addEmptyScopePermission(authz, server, getMapCompositePermissionName(role), resource, mapCompositeScope);
580  mapCompositePermission.setDecisionStrategy(DecisionStrategy.AFFIRMATIVE);
581  }
582  }
Policy mapClientScopePermission(RoleModel role)
Definition: RolePermissions.java:114
Policy mapCompositePermission(RoleModel role)
Definition: RolePermissions.java:106
Resource resource(RoleModel role)
Definition: RolePermissions.java:122
String getMapCompositePermissionName(RoleModel role)
Definition: RolePermissions.java:592
String getMapRolePermissionName(RoleModel role)
Definition: RolePermissions.java:584
Policy mapRolePermission(RoleModel role)
Definition: RolePermissions.java:99
ResourceServer findOrCreateResourceServer(ClientModel client)
Definition: MgmtPermissions.java:240
static final String MAP_ROLE_SCOPE
Definition: RolePermissionManagement.java:32
Scope mapCompositeScope(ResourceServer server)
Definition: RolePermissions.java:530
ResourceServer resourceServer(RoleModel role)
Definition: RolePermissions.java:130
static String getRoleResourceName(RoleModel role)
Definition: RolePermissions.java:601
Scope mapClientScope(ResourceServer server)
Definition: RolePermissions.java:526
Scope mapRoleScope(ResourceServer server)
Definition: RolePermissions.java:522
static final String MAP_ROLE_CLIENT_SCOPE_SCOPE
Definition: RolePermissionManagement.java:33
ClientModel getRoleClient(RoleModel role)
Definition: RolePermissions.java:492
String getMapClientScopePermissionName(RoleModel role)
Definition: RolePermissions.java:588
static final String MAP_ROLE_COMPOSITE_SCOPE
Definition: RolePermissionManagement.java:34
final AuthorizationProvider authz
Definition: RolePermissions.java:50
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ isPermissionsEnabled()

boolean org.keycloak.services.resources.admin.permissions.RolePermissions.isPermissionsEnabled ( RoleModel  role)
inline

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

61  {
62  return mapRolePermission(role) != null;
63  }
Policy mapRolePermission(RoleModel role)
Definition: RolePermissions.java:99

◆ manageUsersPolicy()

Policy org.keycloak.services.resources.admin.permissions.RolePermissions.manageUsersPolicy ( ResourceServer  server)
inline

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

503  {
504  RoleModel role = root.getRealmManagementClient().getRole(AdminRoles.MANAGE_USERS);
505  return rolePolicy(server, role);
506  }
ClientModel getRealmManagementClient()
Definition: MgmtPermissions.java:122
Policy rolePolicy(ResourceServer server, RoleModel role)
Definition: RolePermissions.java:515
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ mapClientScope()

Scope org.keycloak.services.resources.admin.permissions.RolePermissions.mapClientScope ( ResourceServer  server)
inlineprivate
526  {
527  return authz.getStoreFactory().getScopeStore().findByName(MAP_ROLE_CLIENT_SCOPE_SCOPE, server.getId());
528  }
static final String MAP_ROLE_CLIENT_SCOPE_SCOPE
Definition: RolePermissionManagement.java:33
final AuthorizationProvider authz
Definition: RolePermissions.java:50

◆ mapClientScopePermission()

Policy org.keycloak.services.resources.admin.permissions.RolePermissions.mapClientScopePermission ( RoleModel  role)
inline

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

114  {
115  ResourceServer server = resourceServer(role);
116  if (server == null) return null;
117 
118  return authz.getStoreFactory().getPolicyStore().findByName(getMapClientScopePermissionName(role), server.getId());
119  }
ResourceServer resourceServer(RoleModel role)
Definition: RolePermissions.java:130
String getMapClientScopePermissionName(RoleModel role)
Definition: RolePermissions.java:588
final AuthorizationProvider authz
Definition: RolePermissions.java:50

◆ mapCompositePermission()

Policy org.keycloak.services.resources.admin.permissions.RolePermissions.mapCompositePermission ( RoleModel  role)
inline

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

106  {
107  ResourceServer server = resourceServer(role);
108  if (server == null) return null;
109 
110  return authz.getStoreFactory().getPolicyStore().findByName(getMapCompositePermissionName(role), server.getId());
111  }
String getMapCompositePermissionName(RoleModel role)
Definition: RolePermissions.java:592
ResourceServer resourceServer(RoleModel role)
Definition: RolePermissions.java:130
final AuthorizationProvider authz
Definition: RolePermissions.java:50

◆ mapCompositeScope()

Scope org.keycloak.services.resources.admin.permissions.RolePermissions.mapCompositeScope ( ResourceServer  server)
inlineprivate
530  {
531  return authz.getStoreFactory().getScopeStore().findByName(MAP_ROLE_COMPOSITE_SCOPE, server.getId());
532  }
static final String MAP_ROLE_COMPOSITE_SCOPE
Definition: RolePermissionManagement.java:34
final AuthorizationProvider authz
Definition: RolePermissions.java:50

◆ mapRolePermission()

Policy org.keycloak.services.resources.admin.permissions.RolePermissions.mapRolePermission ( RoleModel  role)
inline

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

99  {
100  ResourceServer server = resourceServer(role);
101  if (server == null) return null;
102  return authz.getStoreFactory().getPolicyStore().findByName(getMapRolePermissionName(role), server.getId());
103  }
String getMapRolePermissionName(RoleModel role)
Definition: RolePermissions.java:584
ResourceServer resourceServer(RoleModel role)
Definition: RolePermissions.java:130
final AuthorizationProvider authz
Definition: RolePermissions.java:50

◆ mapRoleScope()

Scope org.keycloak.services.resources.admin.permissions.RolePermissions.mapRoleScope ( ResourceServer  server)
inlineprivate
522  {
523  return authz.getStoreFactory().getScopeStore().findByName(MAP_ROLE_SCOPE, server.getId());
524  }
static final String MAP_ROLE_SCOPE
Definition: RolePermissionManagement.java:32
final AuthorizationProvider authz
Definition: RolePermissions.java:50

◆ requireList()

void org.keycloak.services.resources.admin.permissions.RolePermissions.requireList ( RoleContainerModel  container)
inline

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

331  {
332  if (!canList(container)) {
333  throw new ForbiddenException();
334  }
335 
336  }
boolean canList(RoleContainerModel container)
Definition: RolePermissions.java:326

◆ requireManage() [1/2]

void org.keycloak.services.resources.admin.permissions.RolePermissions.requireManage ( RoleContainerModel  container)
inline

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

348  {
349  if (!canManage(container)) {
350  throw new ForbiddenException();
351  }
352  }
boolean canManage(RoleContainerModel container)
Definition: RolePermissions.java:339

◆ requireManage() [2/2]

void org.keycloak.services.resources.admin.permissions.RolePermissions.requireManage ( RoleModel  role)
inline

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

466  {
467  if (!canManage(role)) {
468  throw new ForbiddenException();
469  }
470 
471  }
boolean canManage(RoleContainerModel container)
Definition: RolePermissions.java:339

◆ requireMapClientScope()

void org.keycloak.services.resources.admin.permissions.RolePermissions.requireMapClientScope ( RoleModel  role)
inline

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

437  {
438  if (!canMapClientScope(role)) {
439  throw new ForbiddenException();
440  }
441  }
boolean canMapClientScope(RoleModel role)
Definition: RolePermissions.java:411

◆ requireMapComposite()

void org.keycloak.services.resources.admin.permissions.RolePermissions.requireMapComposite ( RoleModel  role)
inline

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

402  {
403  if (!canMapComposite(role)) {
404  throw new ForbiddenException();
405  }
406 
407  }
boolean canMapComposite(RoleModel role)
Definition: RolePermissions.java:371

◆ requireMapRole()

void org.keycloak.services.resources.admin.permissions.RolePermissions.requireMapRole ( RoleModel  role)
inline

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

318  {
319  if (!canMapRole(role)) {
320  throw new ForbiddenException();
321  }
322 
323  }
boolean canMapRole(RoleModel role)
Definition: RolePermissions.java:287

◆ requireView() [1/2]

void org.keycloak.services.resources.admin.permissions.RolePermissions.requireView ( RoleContainerModel  container)
inline

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

364  {
365  if (!canView(container)) {
366  throw new ForbiddenException();
367  }
368  }
boolean canView(RoleContainerModel container)
Definition: RolePermissions.java:355

◆ requireView() [2/2]

void org.keycloak.services.resources.admin.permissions.RolePermissions.requireView ( RoleModel  role)
inline

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

485  {
486  if (!canView(role)) {
487  throw new ForbiddenException();
488  }
489 
490  }
boolean canView(RoleContainerModel container)
Definition: RolePermissions.java:355

◆ resource()

Resource org.keycloak.services.resources.admin.permissions.RolePermissions.resource ( RoleModel  role)
inline

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

122  {
123  ResourceStore resourceStore = authz.getStoreFactory().getResourceStore();
124  ResourceServer server = resourceServer(role);
125  if (server == null) return null;
126  return resourceStore.findByName(getRoleResourceName(role), server.getId());
127  }
ResourceServer resourceServer(RoleModel role)
Definition: RolePermissions.java:130
static String getRoleResourceName(RoleModel role)
Definition: RolePermissions.java:601
final AuthorizationProvider authz
Definition: RolePermissions.java:50

◆ resourceServer()

ResourceServer org.keycloak.services.resources.admin.permissions.RolePermissions.resourceServer ( RoleModel  role)
inline

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

130  {
131  ClientModel client = getRoleClient(role);
132  return root.resourceServer(client);
133  }
ResourceServer resourceServer(ClientModel client)
Definition: MgmtPermissions.java:244
ClientModel getRoleClient(RoleModel role)
Definition: RolePermissions.java:492
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ rolePolicy()

Policy org.keycloak.services.resources.admin.permissions.RolePermissions.rolePolicy ( ResourceServer  server,
RoleModel  role 
)
inline

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

515  {
516  String policyName = Helper.getRolePolicyName(role);
517  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(policyName, server.getId());
518  if (policy != null) return policy;
519  return Helper.createRolePolicy(authz, server, role, policyName);
520  }
final AuthorizationProvider authz
Definition: RolePermissions.java:50

◆ sdfgetResourceServer()

ResourceServer org.keycloak.services.resources.admin.permissions.RolePermissions.sdfgetResourceServer ( RoleModel  role)
inlineprivate
596  {
597  ClientModel client = getRoleClient(role);
598  return root.findOrCreateResourceServer(client);
599  }
ResourceServer findOrCreateResourceServer(ClientModel client)
Definition: MgmtPermissions.java:240
ClientModel getRoleClient(RoleModel role)
Definition: RolePermissions.java:492
final MgmtPermissions root
Definition: RolePermissions.java:51

◆ setPermissionsEnabled()

void org.keycloak.services.resources.admin.permissions.RolePermissions.setPermissionsEnabled ( RoleModel  role,
boolean  enable 
)
inline

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

66  {
67  if (enable) {
68  initialize(role);
69  } else {
70  disablePermissions(role);
71  }
72  }
void initialize(RoleModel role)
Definition: RolePermissions.java:535
void disablePermissions(RoleModel role)
Definition: RolePermissions.java:74

◆ viewUsersPolicy()

Policy org.keycloak.services.resources.admin.permissions.RolePermissions.viewUsersPolicy ( ResourceServer  server)
inline

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

509  {
510  RoleModel role = root.getRealmManagementClient().getRole(AdminRoles.VIEW_USERS);
511  return rolePolicy(server, role);
512  }
ClientModel getRealmManagementClient()
Definition: MgmtPermissions.java:122
Policy rolePolicy(ResourceServer server, RoleModel role)
Definition: RolePermissions.java:515
final MgmtPermissions root
Definition: RolePermissions.java:51

メンバ詳解

◆ authz

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

◆ logger

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

◆ MAP_ROLE_CLIENT_SCOPE_SCOPE

final String org.keycloak.services.resources.admin.permissions.RolePermissionManagement.MAP_ROLE_CLIENT_SCOPE_SCOPE = "map-role-client-scope"
staticinherited

◆ MAP_ROLE_COMPOSITE_SCOPE

final String org.keycloak.services.resources.admin.permissions.RolePermissionManagement.MAP_ROLE_COMPOSITE_SCOPE = "map-role-composite"
staticinherited

◆ MAP_ROLE_SCOPE

final String org.keycloak.services.resources.admin.permissions.RolePermissionManagement.MAP_ROLE_SCOPE = "map-role"
staticinherited

◆ realm

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

◆ root

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

◆ session

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

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