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

公開メンバ関数

void evaluate (Evaluation evaluation)
 
void close ()
 

詳解

著者
Pedro Igor

関数詳解

◆ close()

void org.keycloak.authorization.policy.provider.aggregated.AggregatePolicyProvider.close ( )
inline

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

79  {
80 
81  }

◆ evaluate()

void org.keycloak.authorization.policy.provider.aggregated.AggregatePolicyProvider.evaluate ( Evaluation  evaluation)
inline

org.keycloak.authorization.policy.provider.PolicyProviderを実装しています。

41  {
42  DecisionResultCollector decision = new DecisionResultCollector() {
43  @Override
44  protected void onComplete(Result result) {
45  if (isGranted(result.getResults().iterator().next())) {
46  evaluation.grant();
47  } else {
48  evaluation.deny();
49  }
50  }
51  };
52  AuthorizationProvider authorization = evaluation.getAuthorizationProvider();
53  Policy policy = evaluation.getPolicy();
54  DefaultEvaluation defaultEvaluation = DefaultEvaluation.class.cast(evaluation);
55  Map<Policy, Map<Object, Decision.Effect>> decisionCache = defaultEvaluation.getDecisionCache();
56  ResourcePermission permission = evaluation.getPermission();
57 
58  for (Policy associatedPolicy : policy.getAssociatedPolicies()) {
59  Map<Object, Decision.Effect> decisions = decisionCache.computeIfAbsent(associatedPolicy, p -> new HashMap<>());
60  Decision.Effect effect = decisions.get(permission);
61  DefaultEvaluation eval = new DefaultEvaluation(evaluation.getPermission(), evaluation.getContext(), policy, associatedPolicy, decision, authorization, decisionCache);
62 
63  if (effect == null) {
64  PolicyProvider policyProvider = authorization.getProvider(associatedPolicy.getType());
65 
66  policyProvider.evaluate(eval);
67 
68  eval.denyIfNoEffect();
69  decisions.put(permission, eval.getEffect());
70  } else {
71  eval.setEffect(effect);
72  }
73  }
74 
75  decision.onComplete(permission);
76  }

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