keycloak-oidc-service
公開メンバ関数 | 関数 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.keycloak.authorization.AuthorizationProvider クラス
org.keycloak.authorization.AuthorizationProvider の継承関係図
Inheritance graph
org.keycloak.authorization.AuthorizationProvider 連携図
Collaboration graph

公開メンバ関数

 AuthorizationProvider (KeycloakSession session, RealmModel realm, Map< String, PolicyProviderFactory > policyProviderFactories, PolicyEvaluator policyEvaluator)
 
Evaluators evaluators ()
 
StoreFactory getStoreFactory ()
 
StoreFactory getLocalStoreFactory ()
 
Collection< PolicyProviderFactorygetProviderFactories ()
 
KeycloakSession getKeycloakSession ()
 
RealmModel getRealm ()
 
PolicyEvaluator getPolicyEvaluator ()
 
void close ()
 

関数

public< F extends PolicyProviderFactory > F getProviderFactory (String type)
 
public< P extends PolicyProvider > P getProvider (String type)
 

非公開メンバ関数

StoreFactory createStoreFactory (StoreFactory storeFactory)
 
ScopeStore createScopeWrapper (StoreFactory storeFactory)
 
PolicyStore createPolicyWrapper (StoreFactory storeFactory)
 
ResourceStore createResourceStoreWrapper (StoreFactory storeFactory)
 

非公開変数類

final PolicyEvaluator policyEvaluator
 
StoreFactory storeFactory
 
StoreFactory storeFactoryDelegate
 
final Map< String, PolicyProviderFactorypolicyProviderFactories
 
final KeycloakSession keycloakSession
 
final RealmModel realm
 

詳解

The main contract here is the creation of org.keycloak.authorization.permission.evaluator.PermissionEvaluator instances. Usually an application has a single AuthorizationProvider instance and threads servicing client requests obtain org.keycloak.authorization.permission.evaluator.PermissionEvaluator from the evaluators() method.

The internal state of a AuthorizationProvider is immutable. This internal state includes all of the metadata used during the evaluation of policies.

Once created, org.keycloak.authorization.permission.evaluator.PermissionEvaluator instances can be obtained from the evaluators() method:

    List<ResourcePermission> permissionsToEvaluate = getPermissions(); // the permissions to evaluate
    EvaluationContext evaluationContext = createEvaluationContext(); // the context with runtime environment information
    PermissionEvaluator evaluator = authorization.evaluators().from(permissionsToEvaluate, context);
    evaluator.evaluate(new Decision() {
        public void onDecision(Evaluation evaluation) {
             // do something on grant
        }
    });
著者
Pedro Igor

構築子と解体子

◆ AuthorizationProvider()

org.keycloak.authorization.AuthorizationProvider.AuthorizationProvider ( KeycloakSession  session,
RealmModel  realm,
Map< String, PolicyProviderFactory policyProviderFactories,
PolicyEvaluator  policyEvaluator 
)
inline
85  {
86  this.keycloakSession = session;
87  this.realm = realm;
90  }
final Map< String, PolicyProviderFactory > policyProviderFactories
Definition: AuthorizationProvider.java:81
final PolicyEvaluator policyEvaluator
Definition: AuthorizationProvider.java:78
final KeycloakSession keycloakSession
Definition: AuthorizationProvider.java:82
final RealmModel realm
Definition: AuthorizationProvider.java:83

関数詳解

◆ close()

void org.keycloak.authorization.AuthorizationProvider.close ( )
inline

org.keycloak.provider.Providerを実装しています。

178  {
179 
180  }

◆ createPolicyWrapper()

PolicyStore org.keycloak.authorization.AuthorizationProvider.createPolicyWrapper ( StoreFactory  storeFactory)
inlineprivate
280  {
281  return new PolicyStore() {
282 
283  PolicyStore policyStore = storeFactory.getPolicyStore();
284 
285  @Override
286  public Policy create(AbstractPolicyRepresentation representation, ResourceServer resourceServer) {
287  Set<String> resources = representation.getResources();
288 
289  if (resources != null) {
290  representation.setResources(resources.stream().map(id -> {
291  Resource resource = storeFactory.getResourceStore().findById(id, resourceServer.getId());
292 
293  if (resource == null) {
294  resource = storeFactory.getResourceStore().findByName(id, resourceServer.getId());
295  }
296 
297  if (resource == null) {
298  throw new RuntimeException("Resource [" + id + "] does not exist or is not owned by the resource server.");
299  }
300 
301  return resource.getId();
302  }).collect(Collectors.toSet()));
303  }
304 
305  Set<String> scopes = representation.getScopes();
306 
307  if (scopes != null) {
308  representation.setScopes(scopes.stream().map(id -> {
309  Scope scope = storeFactory.getScopeStore().findById(id, resourceServer.getId());
310 
311  if (scope == null) {
312  scope = storeFactory.getScopeStore().findByName(id, resourceServer.getId());
313  }
314 
315  if (scope == null) {
316  throw new RuntimeException("Scope [" + id + "] does not exist");
317  }
318 
319  return scope.getId();
320  }).collect(Collectors.toSet()));
321  }
322 
323 
324  Set<String> policies = representation.getPolicies();
325 
326  if (policies != null) {
327  representation.setPolicies(policies.stream().map(id -> {
328  Policy policy = storeFactory.getPolicyStore().findById(id, resourceServer.getId());
329 
330  if (policy == null) {
331  policy = storeFactory.getPolicyStore().findByName(id, resourceServer.getId());
332  }
333 
334  if (policy == null) {
335  throw new RuntimeException("Policy [" + id + "] does not exist");
336  }
337 
338  return policy.getId();
339  }).collect(Collectors.toSet()));
340  }
341 
342  return RepresentationToModel.toModel(representation, AuthorizationProvider.this, policyStore.create(representation, resourceServer));
343  }
344 
345  @Override
346  public void delete(String id) {
347  Policy policy = findById(id, null);
348 
349  if (policy != null) {
350  ResourceServer resourceServer = policy.getResourceServer();
351 
352  findDependentPolicies(policy.getId(), resourceServer.getId()).forEach(dependentPolicy -> {
353  dependentPolicy.removeAssociatedPolicy(policy);
354  if (dependentPolicy.getAssociatedPolicies().isEmpty()) {
355  delete(dependentPolicy.getId());
356  }
357  });
358 
359  policyStore.delete(id);
360  }
361  }
362 
363  @Override
364  public Policy findById(String id, String resourceServerId) {
365  return policyStore.findById(id, resourceServerId);
366  }
367 
368  @Override
369  public Policy findByName(String name, String resourceServerId) {
370  return policyStore.findByName(name, resourceServerId);
371  }
372 
373  @Override
374  public List<Policy> findByResourceServer(String resourceServerId) {
375  return policyStore.findByResourceServer(resourceServerId);
376  }
377 
378  @Override
379  public List<Policy> findByResourceServer(Map<String, String[]> attributes, String resourceServerId, int firstResult, int maxResult) {
380  return policyStore.findByResourceServer(attributes, resourceServerId, firstResult, maxResult);
381  }
382 
383  @Override
384  public List<Policy> findByResource(String resourceId, String resourceServerId) {
385  return policyStore.findByResource(resourceId, resourceServerId);
386  }
387 
388  @Override
389  public void findByResource(String resourceId, String resourceServerId, Consumer<Policy> consumer) {
390  policyStore.findByResource(resourceId, resourceServerId, consumer);
391  }
392 
393  @Override
394  public List<Policy> findByResourceType(String resourceType, String resourceServerId) {
395  return policyStore.findByResourceType(resourceType, resourceServerId);
396  }
397 
398  @Override
399  public List<Policy> findByScopeIds(List<String> scopeIds, String resourceServerId) {
400  return policyStore.findByScopeIds(scopeIds, resourceServerId);
401  }
402 
403  @Override
404  public List<Policy> findByScopeIds(List<String> scopeIds, String resourceId, String resourceServerId) {
405  return policyStore.findByScopeIds(scopeIds, resourceId, resourceServerId);
406  }
407 
408  @Override
409  public void findByScopeIds(List<String> scopeIds, String resourceId, String resourceServerId, Consumer<Policy> consumer) {
410  policyStore.findByScopeIds(scopeIds, resourceId, resourceServerId, consumer);
411  }
412 
413  @Override
414  public List<Policy> findByType(String type, String resourceServerId) {
415  return policyStore.findByType(type, resourceServerId);
416  }
417 
418  @Override
419  public List<Policy> findDependentPolicies(String id, String resourceServerId) {
420  return policyStore.findDependentPolicies(id, resourceServerId);
421  }
422 
423  @Override
424  public void findByResourceType(String type, String id, Consumer<Policy> policyConsumer) {
425  policyStore.findByResourceType(type, id, policyConsumer);
426  }
427  };
428  }
Policy findByName(String name, String resourceServerId)
AuthorizationProvider(KeycloakSession session, RealmModel realm, Map< String, PolicyProviderFactory > policyProviderFactories, PolicyEvaluator policyEvaluator)
Definition: AuthorizationProvider.java:85
Resource findById(String id, String resourceServerId)
StoreFactory storeFactory
Definition: AuthorizationProvider.java:79
Scope findById(String id, String resourceServerId)
Policy findById(String id, String resourceServerId)
Scope findByName(String name, String resourceServerId)
Resource findByName(String name, String resourceServerId)

◆ createResourceStoreWrapper()

ResourceStore org.keycloak.authorization.AuthorizationProvider.createResourceStoreWrapper ( StoreFactory  storeFactory)
inlineprivate
430  {
431  return new ResourceStore() {
432  ResourceStore delegate = storeFactory.getResourceStore();
433 
434  @Override
435  public Resource create(String name, ResourceServer resourceServer, String owner) {
436  return delegate.create(name, resourceServer, owner);
437  }
438 
439  @Override
440  public Resource create(String id, String name, ResourceServer resourceServer, String owner) {
441  return delegate.create(id, name, resourceServer, owner);
442  }
443 
444  @Override
445  public void delete(String id) {
446  Resource resource = findById(id, null);
447  StoreFactory storeFactory = AuthorizationProvider.this.getStoreFactory();
448  PermissionTicketStore ticketStore = storeFactory.getPermissionTicketStore();
449  List<PermissionTicket> permissions = ticketStore.findByResource(id, resource.getResourceServer().getId());
450 
451  for (PermissionTicket permission : permissions) {
452  ticketStore.delete(permission.getId());
453  }
454 
455  PolicyStore policyStore = storeFactory.getPolicyStore();
456  List<Policy> policies = policyStore.findByResource(id, resource.getResourceServer().getId());
457 
458  for (Policy policyModel : policies) {
459  if (policyModel.getResources().size() == 1) {
460  policyStore.delete(policyModel.getId());
461  } else {
462  policyModel.removeResource(resource);
463  }
464  }
465 
466  delegate.delete(id);
467  }
468 
469  @Override
470  public Resource findById(String id, String resourceServerId) {
471  return delegate.findById(id, resourceServerId);
472  }
473 
474  @Override
475  public List<Resource> findByOwner(String ownerId, String resourceServerId) {
476  return delegate.findByOwner(ownerId, resourceServerId);
477  }
478 
479  @Override
480  public void findByOwner(String ownerId, String resourceServerId, Consumer<Resource> consumer) {
481  delegate.findByOwner(ownerId, resourceServerId, consumer);
482  }
483 
484  @Override
485  public List<Resource> findByUri(String uri, String resourceServerId) {
486  return delegate.findByUri(uri, resourceServerId);
487  }
488 
489  @Override
490  public List<Resource> findByResourceServer(String resourceServerId) {
491  return delegate.findByResourceServer(resourceServerId);
492  }
493 
494  @Override
495  public List<Resource> findByResourceServer(Map<String, String[]> attributes, String resourceServerId, int firstResult, int maxResult) {
496  return delegate.findByResourceServer(attributes, resourceServerId, firstResult, maxResult);
497  }
498 
499  @Override
500  public List<Resource> findByScope(List<String> id, String resourceServerId) {
501  return delegate.findByScope(id, resourceServerId);
502  }
503 
504  @Override
505  public void findByScope(List<String> scopes, String resourceServerId, Consumer<Resource> consumer) {
506  delegate.findByScope(scopes, resourceServerId, consumer);
507  }
508 
509  @Override
510  public Resource findByName(String name, String resourceServerId) {
511  return delegate.findByName(name, resourceServerId);
512  }
513 
514  @Override
515  public Resource findByName(String name, String ownerId, String resourceServerId) {
516  return delegate.findByName(name, ownerId, resourceServerId);
517  }
518 
519  @Override
520  public List<Resource> findByType(String type, String resourceServerId) {
521  return delegate.findByType(type, resourceServerId);
522  }
523 
524  @Override
525  public void findByType(String type, String resourceServerId, Consumer<Resource> consumer) {
526  delegate.findByType(type, resourceServerId, consumer);
527  }
528  };
529  }
AuthorizationProvider(KeycloakSession session, RealmModel realm, Map< String, PolicyProviderFactory > policyProviderFactories, PolicyEvaluator policyEvaluator)
Definition: AuthorizationProvider.java:85
StoreFactory storeFactory
Definition: AuthorizationProvider.java:79
Resource create(String name, ResourceServer resourceServer, String owner)

◆ createScopeWrapper()

ScopeStore org.keycloak.authorization.AuthorizationProvider.createScopeWrapper ( StoreFactory  storeFactory)
inlineprivate
230  {
231  return new ScopeStore() {
232 
233  ScopeStore delegate = storeFactory.getScopeStore();
234 
235  @Override
236  public Scope create(String name, ResourceServer resourceServer) {
237  return delegate.create(name, resourceServer);
238  }
239 
240  @Override
241  public Scope create(String id, String name, ResourceServer resourceServer) {
242  return delegate.create(id, name, resourceServer);
243  }
244 
245  @Override
246  public void delete(String id) {
247  Scope scope = findById(id, null);
248  PermissionTicketStore ticketStore = AuthorizationProvider.this.getStoreFactory().getPermissionTicketStore();
249  List<PermissionTicket> permissions = ticketStore.findByScope(id, scope.getResourceServer().getId());
250 
251  for (PermissionTicket permission : permissions) {
252  ticketStore.delete(permission.getId());
253  }
254 
255  delegate.delete(id);
256  }
257 
258  @Override
259  public Scope findById(String id, String resourceServerId) {
260  return delegate.findById(id, resourceServerId);
261  }
262 
263  @Override
264  public Scope findByName(String name, String resourceServerId) {
265  return delegate.findByName(name, resourceServerId);
266  }
267 
268  @Override
269  public List<Scope> findByResourceServer(String id) {
270  return delegate.findByResourceServer(id);
271  }
272 
273  @Override
274  public List<Scope> findByResourceServer(Map<String, String[]> attributes, String resourceServerId, int firstResult, int maxResult) {
275  return delegate.findByResourceServer(attributes, resourceServerId, firstResult, maxResult);
276  }
277  };
278  }
AuthorizationProvider(KeycloakSession session, RealmModel realm, Map< String, PolicyProviderFactory > policyProviderFactories, PolicyEvaluator policyEvaluator)
Definition: AuthorizationProvider.java:85
StoreFactory storeFactory
Definition: AuthorizationProvider.java:79
Scope create(String name, ResourceServer resourceServer)

◆ createStoreFactory()

StoreFactory org.keycloak.authorization.AuthorizationProvider.createStoreFactory ( StoreFactory  storeFactory)
inlineprivate
182  {
183  return new StoreFactory() {
184 
185  ResourceStore resourceStore;
186  ScopeStore scopeStore;
187  PolicyStore policyStore;
188 
189  @Override
190  public ResourceStore getResourceStore() {
191  if (resourceStore == null) {
192  resourceStore = createResourceStoreWrapper(storeFactory);
193  }
194  return resourceStore;
195  }
196 
197  @Override
198  public ResourceServerStore getResourceServerStore() {
200  }
201 
202  @Override
203  public ScopeStore getScopeStore() {
204  if (scopeStore == null) {
205  scopeStore = createScopeWrapper(storeFactory);
206  }
207  return scopeStore;
208  }
209 
210  @Override
211  public PolicyStore getPolicyStore() {
212  if (policyStore == null) {
213  policyStore = createPolicyWrapper(storeFactory);
214  }
215  return policyStore;
216  }
217 
218  @Override
219  public PermissionTicketStore getPermissionTicketStore() {
221  }
222 
223  @Override
224  public void close() {
226  }
227  };
228  }
StoreFactory storeFactory
Definition: AuthorizationProvider.java:79
PolicyStore createPolicyWrapper(StoreFactory storeFactory)
Definition: AuthorizationProvider.java:280
ScopeStore createScopeWrapper(StoreFactory storeFactory)
Definition: AuthorizationProvider.java:230
void close()
Definition: AuthorizationProvider.java:178
PermissionTicketStore getPermissionTicketStore()
ResourceStore createResourceStoreWrapper(StoreFactory storeFactory)
Definition: AuthorizationProvider.java:430

◆ evaluators()

Evaluators org.keycloak.authorization.AuthorizationProvider.evaluators ( )
inline

Returns a Evaluators instance from where org.keycloak.authorization.policy.evaluation.PolicyEvaluator instances can be obtained.

戻り値
a Evaluators instance
98  {
99  return new Evaluators(this);
100  }

◆ getKeycloakSession()

KeycloakSession org.keycloak.authorization.AuthorizationProvider.getKeycloakSession ( )
inline
165  {
166  return this.keycloakSession;
167  }
final KeycloakSession keycloakSession
Definition: AuthorizationProvider.java:82

◆ getLocalStoreFactory()

StoreFactory org.keycloak.authorization.AuthorizationProvider.getLocalStoreFactory ( )
inline

No cache sits in front of this

戻り値
122  {
123  if (storeFactoryDelegate != null) return storeFactoryDelegate;
124  storeFactoryDelegate = keycloakSession.getProvider(StoreFactory.class);
125  return storeFactoryDelegate;
126  }
final KeycloakSession keycloakSession
Definition: AuthorizationProvider.java:82
StoreFactory storeFactoryDelegate
Definition: AuthorizationProvider.java:80
< T extends Provider > T getProvider(Class< T > clazz)

◆ getPolicyEvaluator()

PolicyEvaluator org.keycloak.authorization.AuthorizationProvider.getPolicyEvaluator ( )
inline
173  {
174  return policyEvaluator;
175  }
final PolicyEvaluator policyEvaluator
Definition: AuthorizationProvider.java:78

◆ getProvider()

public<P extends PolicyProvider> P org.keycloak.authorization.AuthorizationProvider.getProvider ( String  type)
inlinepackage

Returns a PolicyProviderFactory given a type.

引数
typethe type of the policy provider
<P>the expected type of the provider
戻り値
a PolicyProvider with the given type
155  {
156  PolicyProviderFactory policyProviderFactory = policyProviderFactories.get(type);
157 
158  if (policyProviderFactory == null) {
159  return null;
160  }
161 
162  return (P) policyProviderFactory.create(this);
163  }
final Map< String, PolicyProviderFactory > policyProviderFactories
Definition: AuthorizationProvider.java:81

◆ getProviderFactories()

Collection<PolicyProviderFactory> org.keycloak.authorization.AuthorizationProvider.getProviderFactories ( )
inline

Returns the registered PolicyProviderFactory.

戻り値
a List containing all registered PolicyProviderFactory
133  {
134  return this.policyProviderFactories.values();
135  }
final Map< String, PolicyProviderFactory > policyProviderFactories
Definition: AuthorizationProvider.java:81

◆ getProviderFactory()

public<F extends PolicyProviderFactory> F org.keycloak.authorization.AuthorizationProvider.getProviderFactory ( String  type)
inlinepackage

Returns a PolicyProviderFactory given a type.

引数
typethe type of the policy provider
<F>the expected type of the provider
戻り値
a PolicyProviderFactory with the given type
144  {
145  return (F) policyProviderFactories.get(type);
146  }
final Map< String, PolicyProviderFactory > policyProviderFactories
Definition: AuthorizationProvider.java:81

◆ getRealm()

RealmModel org.keycloak.authorization.AuthorizationProvider.getRealm ( )
inline
169  {
170  return realm;
171  }
final RealmModel realm
Definition: AuthorizationProvider.java:83

◆ getStoreFactory()

StoreFactory org.keycloak.authorization.AuthorizationProvider.getStoreFactory ( )
inline

Cache sits in front of this

Returns a StoreFactory.

戻り値
the StoreFactory
109  {
110  if (storeFactory != null) return storeFactory;
111  storeFactory = keycloakSession.getProvider(CachedStoreFactoryProvider.class);
114  return storeFactory;
115  }
StoreFactory storeFactory
Definition: AuthorizationProvider.java:79
StoreFactory getLocalStoreFactory()
Definition: AuthorizationProvider.java:122
final KeycloakSession keycloakSession
Definition: AuthorizationProvider.java:82
StoreFactory createStoreFactory(StoreFactory storeFactory)
Definition: AuthorizationProvider.java:182
< T extends Provider > T getProvider(Class< T > clazz)

メンバ詳解

◆ keycloakSession

final KeycloakSession org.keycloak.authorization.AuthorizationProvider.keycloakSession
private

◆ policyEvaluator

final PolicyEvaluator org.keycloak.authorization.AuthorizationProvider.policyEvaluator
private

◆ policyProviderFactories

final Map<String, PolicyProviderFactory> org.keycloak.authorization.AuthorizationProvider.policyProviderFactories
private

◆ realm

final RealmModel org.keycloak.authorization.AuthorizationProvider.realm
private

◆ storeFactory

StoreFactory org.keycloak.authorization.AuthorizationProvider.storeFactory
private

◆ storeFactoryDelegate

StoreFactory org.keycloak.authorization.AuthorizationProvider.storeFactoryDelegate
private

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