keycloak
公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector クラスabstract
org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector の継承関係図
Inheritance graph
org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector 連携図
Collaboration graph

公開メンバ関数

void onDecision (DefaultEvaluation evaluation)
 
void onComplete ()
 
void onComplete (ResourcePermission permission)
 
void onDecision (D evaluation)
 
default void onError (Throwable cause)
 

限定公開メンバ関数

void onComplete (Result result)
 
void onComplete (Collection< Result > permissions)
 
boolean isGranted (Result.PolicyResult policyResult)
 

限定公開変数類

final Map< ResourcePermission, Resultresults = new LinkedHashMap<>()
 

詳解

著者
Pedro Igor

関数詳解

◆ isGranted()

boolean org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector.isGranted ( Result.PolicyResult  policyResult)
inlineprotected
98  {
99  Policy policy = policyResult.getPolicy();
100  DecisionStrategy decisionStrategy = policy.getDecisionStrategy();
101 
102  switch (decisionStrategy) {
103  case AFFIRMATIVE:
104  for (Result.PolicyResult decision : policyResult.getAssociatedPolicies()) {
105  if (Effect.PERMIT.equals(decision.getEffect())) {
106  return true;
107  }
108  }
109  return false;
110  case CONSENSUS:
111  int grantCount = 0;
112  int denyCount = policy.getAssociatedPolicies().size();
113 
114  for (Result.PolicyResult decision : policyResult.getAssociatedPolicies()) {
115  if (decision.getEffect().equals(Effect.PERMIT)) {
116  grantCount++;
117  denyCount--;
118  }
119  }
120 
121  return grantCount > denyCount;
122  default:
123  // defaults to UNANIMOUS
124  for (Result.PolicyResult decision : policyResult.getAssociatedPolicies()) {
125  if (Effect.DENY.equals(decision.getEffect())) {
126  return false;
127  }
128  }
129  return true;
130  }
131  }

◆ onComplete() [1/4]

void org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector.onComplete ( )
inline

org.keycloak.authorization.Decision< D extends Evaluation >を実装しています。

77  {
78  onComplete(results.values());
79  }
final Map< ResourcePermission, Result > results
Definition: AbstractDecisionCollector.java:35
void onComplete()
Definition: AbstractDecisionCollector.java:77

◆ onComplete() [2/4]

void org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector.onComplete ( ResourcePermission  permission)
inline

org.keycloak.authorization.Decision< D extends Evaluation >を実装しています。

82  {
83  Result result = results.get(permission);
84 
85  if (result != null) {
86  onComplete(result);
87  }
88  }
final Map< ResourcePermission, Result > results
Definition: AbstractDecisionCollector.java:35
void onComplete()
Definition: AbstractDecisionCollector.java:77

◆ onComplete() [3/4]

void org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector.onComplete ( Result  result)
inlineprotected
90  {
91 
92  }

◆ onComplete() [4/4]

void org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector.onComplete ( Collection< Result permissions)
inlineprotected
94  {
95 
96  }

◆ onDecision() [1/2]

void org.keycloak.authorization.Decision< D extends Evaluation >.onDecision ( evaluation)
inherited

◆ onDecision() [2/2]

void org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector.onDecision ( DefaultEvaluation  evaluation)
inline
38  {
39  Policy parentPolicy = evaluation.getParentPolicy();
40  ResourcePermission permission = evaluation.getPermission();
41 
42  if (parentPolicy != null) {
43  if (parentPolicy.equals(evaluation.getPolicy())) {
44  results.computeIfAbsent(permission, permission1 -> {
45  for (Result result : results.values()) {
46  Result.PolicyResult policyResult = result.getPolicy(parentPolicy);
47 
48  if (policyResult != null) {
49  Result newResult = new Result(permission1, evaluation);
50  Result.PolicyResult newPolicyResult = newResult.policy(parentPolicy);
51 
52  for (Result.PolicyResult associatePolicy : policyResult.getAssociatedPolicies()) {
53  newPolicyResult.policy(associatePolicy.getPolicy(), associatePolicy.getEffect());
54  }
55 
56  Map<String, Set<String>> claims = result.getPermission().getClaims();
57 
58  if (!claims.isEmpty()) {
59  permission1.addClaims(claims);
60  }
61 
62  return newResult;
63  }
64  }
65 
66  return null;
67  }).policy(parentPolicy);
68  } else {
69  results.computeIfAbsent(permission, p -> new Result(p, evaluation)).policy(parentPolicy).policy(evaluation.getPolicy(), evaluation.getEffect());
70  }
71  } else {
72  results.computeIfAbsent(permission, p -> new Result(p, evaluation)).setStatus(evaluation.getEffect());
73  }
74  }
final Map< ResourcePermission, Result > results
Definition: AbstractDecisionCollector.java:35

◆ onError()

default void org.keycloak.authorization.Decision< D extends Evaluation >.onError ( Throwable  cause)
inlineinherited

org.keycloak.authorization.policy.evaluation.DecisionPermissionCollectorで実装されています。

36  {
37  throw new RuntimeException("Not implemented.", cause);
38  }

メンバ詳解

◆ results

final Map<ResourcePermission, Result> org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector.results = new LinkedHashMap<>()
protected

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