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

公開メンバ関数

void onDecision (DefaultEvaluation evaluation)
 
void onDecision (D evaluation)
 
void onComplete ()
 
void onComplete (ResourcePermission permission)
 
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)
inlineprotectedinherited
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 ( )
inlineinherited

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)
inlineinherited

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)
inlineprotectedinherited
90  {
91 
92  }

◆ onComplete() [4/4]

void org.keycloak.authorization.policy.evaluation.AbstractDecisionCollector.onComplete ( Collection< Result permissions)
inlineprotectedinherited
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)
inlineinherited
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<>()
protectedinherited

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