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

公開メンバ関数

 GroupPolicyProvider (BiFunction< Policy, AuthorizationProvider, GroupPolicyRepresentation > representationFunction)
 
void evaluate (Evaluation evaluation)
 
void close ()
 

非公開変数類

final BiFunction< Policy, AuthorizationProvider, GroupPolicyRepresentationrepresentationFunction
 

詳解

著者
Pedro Igor

構築子と解体子

◆ GroupPolicyProvider()

org.keycloak.authorization.policy.provider.group.GroupPolicyProvider.GroupPolicyProvider ( BiFunction< Policy, AuthorizationProvider, GroupPolicyRepresentation representationFunction)
inline
41  {
43  }
final BiFunction< Policy, AuthorizationProvider, GroupPolicyRepresentation > representationFunction
Definition: GroupPolicyProvider.java:39

関数詳解

◆ close()

void org.keycloak.authorization.policy.provider.group.GroupPolicyProvider.close ( )
inline

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

81  {
82 
83  }

◆ evaluate()

void org.keycloak.authorization.policy.provider.group.GroupPolicyProvider.evaluate ( Evaluation  evaluation)
inline

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

46  {
47  AuthorizationProvider authorizationProvider = evaluation.getAuthorizationProvider();
48  GroupPolicyRepresentation policy = representationFunction.apply(evaluation.getPolicy(), authorizationProvider);
49  RealmModel realm = authorizationProvider.getRealm();
50  Attributes.Entry groupsClaim = evaluation.getContext().getIdentity().getAttributes().getValue(policy.getGroupsClaim());
51 
52  if (groupsClaim == null || groupsClaim.isEmpty()) {
53  List<String> userGroups = evaluation.getRealm().getUserGroups(evaluation.getContext().getIdentity().getId());
54  groupsClaim = new Entry(policy.getGroupsClaim(), userGroups);
55  }
56 
57  for (GroupPolicyRepresentation.GroupDefinition definition : policy.getGroups()) {
58  GroupModel allowedGroup = realm.getGroupById(definition.getId());
59 
60  for (int i = 0; i < groupsClaim.size(); i++) {
61  String group = groupsClaim.asString(i);
62 
63  if (group.indexOf('/') != -1) {
64  String allowedGroupPath = buildGroupPath(allowedGroup);
65  if (group.equals(allowedGroupPath) || (definition.isExtendChildren() && group.startsWith(allowedGroupPath))) {
66  evaluation.grant();
67  return;
68  }
69  }
70 
71  // in case the group from the claim does not represent a path, we just check an exact name match
72  if (group.equals(allowedGroup.getName())) {
73  evaluation.grant();
74  return;
75  }
76  }
77  }
78  }
final BiFunction< Policy, AuthorizationProvider, GroupPolicyRepresentation > representationFunction
Definition: GroupPolicyProvider.java:39

メンバ詳解

◆ representationFunction

final BiFunction<Policy, AuthorizationProvider, GroupPolicyRepresentation> org.keycloak.authorization.policy.provider.group.GroupPolicyProvider.representationFunction
private

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