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

公開メンバ関数

 JPAPolicyStore (EntityManager entityManager, AuthorizationProvider provider)
 
Policy create (AbstractPolicyRepresentation representation, ResourceServer resourceServer)
 
void delete (String id)
 
Policy findById (String id, String resourceServerId)
 
Policy findByName (String name, String resourceServerId)
 
List< PolicyfindByResourceServer (final String resourceServerId)
 
List< PolicyfindByResourceServer (Map< String, String[]> attributes, String resourceServerId, int firstResult, int maxResult)
 
List< PolicyfindByResource (final String resourceId, String resourceServerId)
 
void findByResource (String resourceId, String resourceServerId, Consumer< Policy > consumer)
 
List< PolicyfindByResourceType (final String resourceType, String resourceServerId)
 
void findByResourceType (String resourceType, String resourceServerId, Consumer< Policy > consumer)
 
List< PolicyfindByScopeIds (List< String > scopeIds, String resourceServerId)
 
List< PolicyfindByScopeIds (List< String > scopeIds, String resourceId, String resourceServerId)
 
void findByScopeIds (List< String > scopeIds, String resourceId, String resourceServerId, Consumer< Policy > consumer)
 
List< PolicyfindByType (String type, String resourceServerId)
 
List< PolicyfindDependentPolicies (String policyId, String resourceServerId)
 

非公開変数類

final EntityManager entityManager
 
final AuthorizationProvider provider
 

詳解

著者
Pedro Igor

構築子と解体子

◆ JPAPolicyStore()

org.keycloak.authorization.jpa.store.JPAPolicyStore.JPAPolicyStore ( EntityManager  entityManager,
AuthorizationProvider  provider 
)
inline
53  {
55  this.provider = provider;
56  }
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52

関数詳解

◆ create()

Policy org.keycloak.authorization.jpa.store.JPAPolicyStore.create ( AbstractPolicyRepresentation  representation,
ResourceServer  resourceServer 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

59  {
60  PolicyEntity entity = new PolicyEntity();
61 
62  if (representation.getId() == null) {
63  entity.setId(KeycloakModelUtils.generateId());
64  } else {
65  entity.setId(representation.getId());
66  }
67 
68  entity.setType(representation.getType());
69  entity.setName(representation.getName());
70  entity.setResourceServer(ResourceServerAdapter.toEntity(entityManager, resourceServer));
71 
72  this.entityManager.persist(entity);
73  this.entityManager.flush();
74  Policy model = new PolicyAdapter(entity, entityManager, provider.getStoreFactory());
75  return model;
76  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52

◆ delete()

void org.keycloak.authorization.jpa.store.JPAPolicyStore.delete ( String  id)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

79  {
80  PolicyEntity policy = entityManager.find(PolicyEntity.class, id);
81  if (policy != null) {
82  this.entityManager.remove(policy);
83  }
84  }
final EntityManager entityManager
Definition: JPAPolicyStore.java:51

◆ findById()

Policy org.keycloak.authorization.jpa.store.JPAPolicyStore.findById ( String  id,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

88  {
89  if (id == null) {
90  return null;
91  }
92 
93  PolicyEntity entity = entityManager.find(PolicyEntity.class, id);
94  if (entity == null) return null;
95 
96  return new PolicyAdapter(entity, entityManager, provider.getStoreFactory());
97  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52

◆ findByName()

Policy org.keycloak.authorization.jpa.store.JPAPolicyStore.findByName ( String  name,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

100  {
101  TypedQuery<String> query = entityManager.createNamedQuery("findPolicyIdByName", String.class);
102 
103  query.setFlushMode(FlushModeType.COMMIT);
104  query.setParameter("serverId", resourceServerId);
105  query.setParameter("name", name);
106 
107  try {
108  String id = query.getSingleResult();
109  return provider.getStoreFactory().getPolicyStore().findById(id, resourceServerId);
110  } catch (NoResultException ex) {
111  return null;
112  }
113  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52
Policy findById(String id, String resourceServerId)

◆ findByResource() [1/2]

List<Policy> org.keycloak.authorization.jpa.store.JPAPolicyStore.findByResource ( final String  resourceId,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

196  {
197  List<Policy> result = new LinkedList<>();
198 
199  findByResource(resourceId, resourceServerId, result::add);
200 
201  return result;
202  }
List< Policy > findByResource(final String resourceId, String resourceServerId)
Definition: JPAPolicyStore.java:196

◆ findByResource() [2/2]

void org.keycloak.authorization.jpa.store.JPAPolicyStore.findByResource ( String  resourceId,
String  resourceServerId,
Consumer< Policy consumer 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

205  {
206  TypedQuery<String> query = entityManager.createNamedQuery("findPolicyIdByResource", String.class);
207 
208  query.setFlushMode(FlushModeType.COMMIT);
209  query.setParameter("resourceId", resourceId);
210  query.setParameter("serverId", resourceServerId);
211 
212  PolicyStore policyStore = provider.getStoreFactory().getPolicyStore();
213 
214  query.getResultList().stream()
215  .map(id -> policyStore.findById(id, resourceServerId))
216  .filter(Objects::nonNull)
217  .forEach(consumer::accept);
218  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52

◆ findByResourceServer() [1/2]

List<Policy> org.keycloak.authorization.jpa.store.JPAPolicyStore.findByResourceServer ( final String  resourceServerId)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

116  {
117  TypedQuery<String> query = entityManager.createNamedQuery("findPolicyIdByServerId", String.class);
118 
119  query.setParameter("serverId", resourceServerId);
120 
121  List<String> result = query.getResultList();
122  List<Policy> list = new LinkedList<>();
123  for (String id : result) {
124  Policy policy = provider.getStoreFactory().getPolicyStore().findById(id, resourceServerId);
125  if (Objects.nonNull(policy)) {
126  list.add(policy);
127  }
128  }
129  return list;
130  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52
Policy findById(String id, String resourceServerId)

◆ findByResourceServer() [2/2]

List<Policy> org.keycloak.authorization.jpa.store.JPAPolicyStore.findByResourceServer ( Map< String, String[]>  attributes,
String  resourceServerId,
int  firstResult,
int  maxResult 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

133  {
134  CriteriaBuilder builder = entityManager.getCriteriaBuilder();
135  CriteriaQuery<PolicyEntity> querybuilder = builder.createQuery(PolicyEntity.class);
136  Root<PolicyEntity> root = querybuilder.from(PolicyEntity.class);
137  List<Predicate> predicates = new ArrayList();
138  querybuilder.select(root.get("id"));
139 
140  if (resourceServerId != null) {
141  predicates.add(builder.equal(root.get("resourceServer").get("id"), resourceServerId));
142  }
143 
144  attributes.forEach((name, value) -> {
145  if ("permission".equals(name)) {
146  if (Boolean.valueOf(value[0])) {
147  predicates.add(root.get("type").in("resource", "scope", "uma"));
148  } else {
149  predicates.add(builder.not(root.get("type").in("resource", "scope", "uma")));
150  }
151  } else if ("id".equals(name)) {
152  predicates.add(root.get(name).in(value));
153  } else if ("owner".equals(name)) {
154  predicates.add(root.get(name).in(value));
155  } else if ("owner_is_not_null".equals(name)) {
156  predicates.add(builder.isNotNull(root.get("owner")));
157  } else if ("resource".equals(name)) {
158  predicates.add(root.join("resources").get("id").in(value));
159  } else if ("scope".equals(name)) {
160  predicates.add(root.join("scopes").get("id").in(value));
161  } else if (name.startsWith("config:")) {
162  predicates.add(root.joinMap("config").key().in(name.substring("config:".length())));
163  predicates.add(builder.like(root.joinMap("config").value().as(String.class), "%" + value[0] + "%"));
164  } else {
165  predicates.add(builder.like(builder.lower(root.get(name)), "%" + value[0].toLowerCase() + "%"));
166  }
167  });
168 
169  if (!attributes.containsKey("owner") && !attributes.containsKey("owner_is_not_null")) {
170  predicates.add(builder.isNull(root.get("owner")));
171  }
172 
173  querybuilder.where(predicates.toArray(new Predicate[predicates.size()])).orderBy(builder.asc(root.get("name")));
174 
175  Query query = entityManager.createQuery(querybuilder);
176 
177  if (firstResult != -1) {
178  query.setFirstResult(firstResult);
179  }
180  if (maxResult != -1) {
181  query.setMaxResults(maxResult);
182  }
183 
184  List<String> result = query.getResultList();
185  List<Policy> list = new LinkedList<>();
186  for (String id : result) {
187  Policy policy = provider.getStoreFactory().getPolicyStore().findById(id, resourceServerId);
188  if (Objects.nonNull(policy)) {
189  list.add(policy);
190  }
191  }
192  return list;
193  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52
Policy findById(String id, String resourceServerId)

◆ findByResourceType() [1/2]

List<Policy> org.keycloak.authorization.jpa.store.JPAPolicyStore.findByResourceType ( final String  resourceType,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

221  {
222  List<Policy> result = new LinkedList<>();
223 
224  findByResourceType(resourceType, resourceServerId, result::add);
225 
226  return result;
227  }
List< Policy > findByResourceType(final String resourceType, String resourceServerId)
Definition: JPAPolicyStore.java:221

◆ findByResourceType() [2/2]

void org.keycloak.authorization.jpa.store.JPAPolicyStore.findByResourceType ( String  resourceType,
String  resourceServerId,
Consumer< Policy consumer 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

230  {
231  TypedQuery<String> query = entityManager.createNamedQuery("findPolicyIdByResourceType", String.class);
232 
233  query.setFlushMode(FlushModeType.COMMIT);
234  query.setParameter("type", resourceType);
235  query.setParameter("serverId", resourceServerId);
236 
237  PolicyStore policyStore = provider.getStoreFactory().getPolicyStore();
238 
239  query.getResultList().stream()
240  .map(id -> policyStore.findById(id, resourceServerId))
241  .filter(Objects::nonNull)
242  .forEach(consumer::accept);
243  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52

◆ findByScopeIds() [1/3]

List<Policy> org.keycloak.authorization.jpa.store.JPAPolicyStore.findByScopeIds ( List< String >  scopeIds,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

246  {
247  if (scopeIds==null || scopeIds.isEmpty()) {
248  return Collections.emptyList();
249  }
250 
251  // Use separate subquery to handle DB2 and MSSSQL
252  TypedQuery<String> query = entityManager.createNamedQuery("findPolicyIdByScope", String.class);
253 
254  query.setFlushMode(FlushModeType.COMMIT);
255  query.setParameter("scopeIds", scopeIds);
256  query.setParameter("serverId", resourceServerId);
257 
258  List<String> result = query.getResultList();
259  List<Policy> list = new LinkedList<>();
260  for (String id : result) {
261  Policy policy = provider.getStoreFactory().getPolicyStore().findById(id, resourceServerId);
262  if (Objects.nonNull(policy)) {
263  list.add(policy);
264  }
265  }
266  return list;
267  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52
Policy findById(String id, String resourceServerId)

◆ findByScopeIds() [2/3]

List<Policy> org.keycloak.authorization.jpa.store.JPAPolicyStore.findByScopeIds ( List< String >  scopeIds,
String  resourceId,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

270  {
271  List<Policy> result = new LinkedList<>();
272 
273  findByScopeIds(scopeIds, resourceId, resourceServerId, result::add);
274 
275  return result;
276  }
List< Policy > findByScopeIds(List< String > scopeIds, String resourceServerId)
Definition: JPAPolicyStore.java:246

◆ findByScopeIds() [3/3]

void org.keycloak.authorization.jpa.store.JPAPolicyStore.findByScopeIds ( List< String >  scopeIds,
String  resourceId,
String  resourceServerId,
Consumer< Policy consumer 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

279  {
280  // Use separate subquery to handle DB2 and MSSSQL
281  TypedQuery<String> query;
282 
283  if (resourceId == null) {
284  query = entityManager.createNamedQuery("findPolicyIdByNullResourceScope", String.class);
285  } else {
286  query = entityManager.createNamedQuery("findPolicyIdByResourceScope", String.class);
287  query.setParameter("resourceId", resourceId);
288  }
289 
290  query.setFlushMode(FlushModeType.COMMIT);
291  query.setParameter("scopeIds", scopeIds);
292  query.setParameter("serverId", resourceServerId);
293 
294  PolicyStore policyStore = provider.getStoreFactory().getPolicyStore();
295 
296  query.getResultList().stream()
297  .map(id -> policyStore.findById(id, resourceServerId))
298  .filter(Objects::nonNull)
299  .forEach(consumer::accept);
300  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52

◆ findByType()

List<Policy> org.keycloak.authorization.jpa.store.JPAPolicyStore.findByType ( String  type,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

303  {
304  TypedQuery<String> query = entityManager.createNamedQuery("findPolicyIdByType", String.class);
305 
306  query.setFlushMode(FlushModeType.COMMIT);
307  query.setParameter("serverId", resourceServerId);
308  query.setParameter("type", type);
309 
310  List<String> result = query.getResultList();
311  List<Policy> list = new LinkedList<>();
312  for (String id : result) {
313  Policy policy = provider.getStoreFactory().getPolicyStore().findById(id, resourceServerId);
314  if (Objects.nonNull(policy)) {
315  list.add(policy);
316  }
317  }
318  return list;
319  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52
Policy findById(String id, String resourceServerId)

◆ findDependentPolicies()

List<Policy> org.keycloak.authorization.jpa.store.JPAPolicyStore.findDependentPolicies ( String  policyId,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PolicyStoreを実装しています。

322  {
323 
324  TypedQuery<String> query = entityManager.createNamedQuery("findPolicyIdByDependentPolices", String.class);
325 
326  query.setFlushMode(FlushModeType.COMMIT);
327  query.setParameter("serverId", resourceServerId);
328  query.setParameter("policyId", policyId);
329 
330  List<String> result = query.getResultList();
331  List<Policy> list = new LinkedList<>();
332  for (String id : result) {
333  Policy policy = provider.getStoreFactory().getPolicyStore().findById(id, resourceServerId);
334  if (Objects.nonNull(policy)) {
335  list.add(policy);
336  }
337  }
338  return list;
339  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52
Policy findById(String id, String resourceServerId)

メンバ詳解

◆ entityManager

final EntityManager org.keycloak.authorization.jpa.store.JPAPolicyStore.entityManager
private

◆ provider

final AuthorizationProvider org.keycloak.authorization.jpa.store.JPAPolicyStore.provider
private

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