keycloak
公開メンバ関数 | 非公開メンバ関数 | 全メンバ一覧
org.keycloak.authorization.policy.evaluation.DefaultPolicyEvaluator クラス
org.keycloak.authorization.policy.evaluation.DefaultPolicyEvaluator の継承関係図
Inheritance graph
org.keycloak.authorization.policy.evaluation.DefaultPolicyEvaluator 連携図
Collaboration graph

公開メンバ関数

void evaluate (ResourcePermission permission, AuthorizationProvider authorizationProvider, EvaluationContext executionContext, Decision decision, Map< Policy, Map< Object, Decision.Effect >> decisionCache)
 

非公開メンバ関数

Consumer< PolicycreatePolicyEvaluator (ResourcePermission permission, AuthorizationProvider authorizationProvider, EvaluationContext executionContext, Decision decision, AtomicBoolean verified, Map< Policy, Map< Object, Decision.Effect >> decisionCache)
 

詳解

著者
Pedro Igor

関数詳解

◆ createPolicyEvaluator()

Consumer<Policy> org.keycloak.authorization.policy.evaluation.DefaultPolicyEvaluator.createPolicyEvaluator ( ResourcePermission  permission,
AuthorizationProvider  authorizationProvider,
EvaluationContext  executionContext,
Decision  decision,
AtomicBoolean  verified,
Map< Policy, Map< Object, Decision.Effect >>  decisionCache 
)
inlineprivate
99  {
100  return parentPolicy -> {
101  PolicyProvider policyProvider = authorizationProvider.getProvider(parentPolicy.getType());
102 
103  if (policyProvider == null) {
104  throw new RuntimeException("Unknown parentPolicy provider for type [" + parentPolicy.getType() + "].");
105  }
106 
107  policyProvider.evaluate(new DefaultEvaluation(permission, executionContext, parentPolicy, decision, authorizationProvider, decisionCache));
108 
109  verified.compareAndSet(false, true);
110  };
111  }

◆ evaluate()

void org.keycloak.authorization.policy.evaluation.DefaultPolicyEvaluator.evaluate ( ResourcePermission  permission,
AuthorizationProvider  authorizationProvider,
EvaluationContext  executionContext,
Decision  decision,
Map< Policy, Map< Object, Decision.Effect >>  decisionCache 
)
inline

org.keycloak.authorization.policy.evaluation.PolicyEvaluatorを実装しています。

46  {
47  StoreFactory storeFactory = authorizationProvider.getStoreFactory();
48  PolicyStore policyStore = storeFactory.getPolicyStore();
49  ResourceStore resourceStore = storeFactory.getResourceStore();
50 
51  ResourceServer resourceServer = permission.getResourceServer();
52  PolicyEnforcementMode enforcementMode = resourceServer.getPolicyEnforcementMode();
53 
54  if (PolicyEnforcementMode.DISABLED.equals(enforcementMode)) {
55  DefaultEvaluation evaluation = new DefaultEvaluation(permission, executionContext, decision, authorizationProvider);
56 
57  evaluation.grant();
58 
59  decision.onComplete(permission);
60  return;
61  }
62 
63  AtomicBoolean verified = new AtomicBoolean();
64  Consumer<Policy> policyConsumer = createPolicyEvaluator(permission, authorizationProvider, executionContext, decision, verified, decisionCache);
65  Resource resource = permission.getResource();
66 
67  if (resource != null) {
68  policyStore.findByResource(resource.getId(), resourceServer.getId(), policyConsumer);
69 
70  if (resource.getType() != null) {
71  policyStore.findByResourceType(resource.getType(), resourceServer.getId(), policyConsumer);
72 
73  if (!resource.getOwner().equals(resourceServer.getId())) {
74  for (Resource typedResource : resourceStore.findByType(resource.getType(), resourceServer.getId())) {
75  policyStore.findByResource(typedResource.getId(), resourceServer.getId(), policyConsumer);
76  }
77  }
78  }
79  }
80 
81  List<Scope> scopes = permission.getScopes();
82 
83  if (!scopes.isEmpty()) {
84  policyStore.findByScopeIds(scopes.stream().map(Scope::getId).collect(Collectors.toList()), null, resourceServer.getId(), policyConsumer);
85  }
86 
87  if (verified.get()) {
88  decision.onComplete(permission);
89  return;
90  }
91 
92  if (PolicyEnforcementMode.PERMISSIVE.equals(enforcementMode)) {
93  DefaultEvaluation evaluation = new DefaultEvaluation(permission, executionContext, decision, authorizationProvider);
94  evaluation.grant();
95  decision.onComplete(permission);
96  }
97  }
Consumer< Policy > createPolicyEvaluator(ResourcePermission permission, AuthorizationProvider authorizationProvider, EvaluationContext executionContext, Decision decision, AtomicBoolean verified, Map< Policy, Map< Object, Decision.Effect >> decisionCache)
Definition: DefaultPolicyEvaluator.java:99

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