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

公開メンバ関数

void synchronize (UserRemovedEvent event, KeycloakSessionFactory factory)
 
void synchronize (E event, KeycloakSessionFactory factory)
 

非公開メンバ関数

void removeFromUserPolicies (UserRemovedEvent event, AuthorizationProvider authorizationProvider)
 
void removeUserResources (UserRemovedEvent event, AuthorizationProvider authorizationProvider)
 

詳解

著者
Pedro Igor

関数詳解

◆ removeFromUserPolicies()

void org.keycloak.authorization.store.syncronization.UserSynchronizer.removeFromUserPolicies ( UserRemovedEvent  event,
AuthorizationProvider  authorizationProvider 
)
inlineprivate
54  {
55  StoreFactory storeFactory = authorizationProvider.getStoreFactory();
56  PolicyStore policyStore = storeFactory.getPolicyStore();
57  UserModel userModel = event.getUser();
58  Map<String, String[]> attributes = new HashMap<>();
59 
60  attributes.put("type", new String[] {"user"});
61  attributes.put("config:users", new String[] {userModel.getId()});
62 
63  List<Policy> search = policyStore.findByResourceServer(attributes, null, -1, -1);
64 
65  for (Policy policy : search) {
66  PolicyProviderFactory policyFactory = authorizationProvider.getProviderFactory(policy.getType());
67  UserPolicyRepresentation representation = UserPolicyRepresentation.class.cast(policyFactory.toRepresentation(policy, authorizationProvider));
68  Set<String> users = representation.getUsers();
69 
70  users.remove(userModel.getId());
71 
72  if (users.isEmpty()) {
73  policyFactory.onRemove(policy, authorizationProvider);
74  policyStore.delete(policy.getId());
75  } else {
76  policyFactory.onUpdate(policy, representation, authorizationProvider);
77  }
78  }
79  }

◆ removeUserResources()

void org.keycloak.authorization.store.syncronization.UserSynchronizer.removeUserResources ( UserRemovedEvent  event,
AuthorizationProvider  authorizationProvider 
)
inlineprivate
81  {
82  StoreFactory storeFactory = authorizationProvider.getStoreFactory();
83  PolicyStore policyStore = storeFactory.getPolicyStore();
84  ResourceStore resourceStore = storeFactory.getResourceStore();
85  ResourceServerStore resourceServerStore = storeFactory.getResourceServerStore();
86  RealmModel realm = event.getRealm();
87  UserModel userModel = event.getUser();
88 
89  realm.getClients().forEach(clientModel -> {
90  ResourceServer resourceServer = resourceServerStore.findById(clientModel.getId());
91 
92  if (resourceServer != null) {
93  resourceStore.findByOwner(userModel.getId(), resourceServer.getId()).forEach(resource -> {
94  String resourceId = resource.getId();
95  policyStore.findByResource(resourceId, resourceServer.getId()).forEach(policy -> {
96  if (policy.getResources().size() == 1) {
97  policyStore.delete(policy.getId());
98  } else {
99  policy.removeResource(resource);
100  }
101  });
102  resourceStore.delete(resourceId);
103  });
104  }
105  });
106  }

◆ synchronize() [1/2]

void org.keycloak.authorization.store.syncronization.Synchronizer< E extends ProviderEvent >.synchronize ( event,
KeycloakSessionFactory  factory 
)
inherited

◆ synchronize() [2/2]

void org.keycloak.authorization.store.syncronization.UserSynchronizer.synchronize ( UserRemovedEvent  event,
KeycloakSessionFactory  factory 
)
inline
46  {
47  ProviderFactory<AuthorizationProvider> providerFactory = factory.getProviderFactory(AuthorizationProvider.class);
48  AuthorizationProvider authorizationProvider = providerFactory.create(event.getKeycloakSession());
49 
50  removeUserResources(event, authorizationProvider);
51  removeFromUserPolicies(event, authorizationProvider);
52  }
void removeUserResources(UserRemovedEvent event, AuthorizationProvider authorizationProvider)
Definition: UserSynchronizer.java:81
void removeFromUserPolicies(UserRemovedEvent event, AuthorizationProvider authorizationProvider)
Definition: UserSynchronizer.java:54

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