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

公開メンバ関数

 JPAPermissionTicketStore (EntityManager entityManager, AuthorizationProvider provider)
 
PermissionTicket create (String resourceId, String scopeId, String requester, ResourceServer resourceServer)
 
void delete (String id)
 
PermissionTicket findById (String id, String resourceServerId)
 
List< PermissionTicketfindByResourceServer (final String resourceServerId)
 
List< PermissionTicketfindByResource (final String resourceId, String resourceServerId)
 
List< PermissionTicketfindByScope (String scopeId, String resourceServerId)
 
List< PermissionTicketfind (Map< String, String > attributes, String resourceServerId, int firstResult, int maxResult)
 
List< PermissionTicketfindGranted (String userId, String resourceServerId)
 
List< PermissionTicketfindByOwner (String owner, String resourceServerId)
 

非公開変数類

final EntityManager entityManager
 
final AuthorizationProvider provider
 

詳解

著者
Pedro Igor

構築子と解体子

◆ JPAPermissionTicketStore()

org.keycloak.authorization.jpa.store.JPAPermissionTicketStore.JPAPermissionTicketStore ( EntityManager  entityManager,
AuthorizationProvider  provider 
)
inline
51  {
53  this.provider = provider;
54  }
final EntityManager entityManager
Definition: JPAPermissionTicketStore.java:48
final AuthorizationProvider provider
Definition: JPAPermissionTicketStore.java:49

関数詳解

◆ create()

PermissionTicket org.keycloak.authorization.jpa.store.JPAPermissionTicketStore.create ( String  resourceId,
String  scopeId,
String  requester,
ResourceServer  resourceServer 
)
inline

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

57  {
58  PermissionTicketEntity entity = new PermissionTicketEntity();
59 
60  entity.setId(KeycloakModelUtils.generateId());
61  entity.setResource(ResourceAdapter.toEntity(entityManager, provider.getStoreFactory().getResourceStore().findById(resourceId, resourceServer.getId())));
62  entity.setRequester(requester);
63  entity.setCreatedTimestamp(System.currentTimeMillis());
64 
65  if (scopeId != null) {
66  entity.setScope(ScopeAdapter.toEntity(entityManager, provider.getStoreFactory().getScopeStore().findById(scopeId, resourceServer.getId())));
67  }
68 
69  entity.setOwner(entity.getResource().getOwner());
70  entity.setResourceServer(ResourceServerAdapter.toEntity(entityManager, resourceServer));
71 
72  this.entityManager.persist(entity);
73  this.entityManager.flush();
74  PermissionTicket model = new PermissionTicketAdapter(entity, entityManager, provider.getStoreFactory());
75  return model;
76  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPermissionTicketStore.java:48
Resource findById(String id, String resourceServerId)
Scope findById(String id, String resourceServerId)
final AuthorizationProvider provider
Definition: JPAPermissionTicketStore.java:49

◆ delete()

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

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

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

◆ find()

List<PermissionTicket> org.keycloak.authorization.jpa.store.JPAPermissionTicketStore.find ( Map< String, String >  attributes,
String  resourceServerId,
int  firstResult,
int  maxResult 
)
inline

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

169  {
170  CriteriaBuilder builder = entityManager.getCriteriaBuilder();
171  CriteriaQuery<PermissionTicketEntity> querybuilder = builder.createQuery(PermissionTicketEntity.class);
172  Root<PermissionTicketEntity> root = querybuilder.from(PermissionTicketEntity.class);
173 
174  querybuilder.select(root.get("id"));
175 
176  List<Predicate> predicates = new ArrayList();
177 
178  if (resourceServerId != null) {
179  predicates.add(builder.equal(root.get("resourceServer").get("id"), resourceServerId));
180  }
181 
182  attributes.forEach((name, value) -> {
183  if (PermissionTicket.ID.equals(name)) {
184  predicates.add(root.get(name).in(value));
185  } else if (PermissionTicket.SCOPE.equals(name)) {
186  predicates.add(root.join("scope").get("id").in(value));
187  } else if (PermissionTicket.SCOPE_IS_NULL.equals(name)) {
188  if (Boolean.valueOf(value)) {
189  predicates.add(builder.isNull(root.get("scope")));
190  } else {
191  predicates.add(builder.isNotNull(root.get("scope")));
192  }
193  } else if (PermissionTicket.RESOURCE.equals(name)) {
194  predicates.add(root.join("resource").get("id").in(value));
195  } else if (PermissionTicket.OWNER.equals(name)) {
196  predicates.add(builder.equal(root.get("owner"), value));
197  } else if (PermissionTicket.REQUESTER.equals(name)) {
198  predicates.add(builder.equal(root.get("requester"), value));
199  } else if (PermissionTicket.GRANTED.equals(name)) {
200  if (Boolean.valueOf(value)) {
201  predicates.add(builder.isNotNull(root.get("grantedTimestamp")));
202  } else {
203  predicates.add(builder.isNull(root.get("grantedTimestamp")));
204  }
205  } else if (PermissionTicket.REQUESTER_IS_NULL.equals(name)) {
206  predicates.add(builder.isNull(root.get("requester")));
207  } else if (PermissionTicket.POLICY_IS_NOT_NULL.equals(name)) {
208  predicates.add(builder.isNotNull(root.get("policy")));
209  } else if (PermissionTicket.POLICY.equals(name)) {
210  predicates.add(root.join("policy").get("id").in(value));
211  } else {
212  throw new RuntimeException("Unsupported filter [" + name + "]");
213  }
214  });
215 
216  querybuilder.where(predicates.toArray(new Predicate[predicates.size()])).orderBy(builder.asc(root.get("resource").get("id")));
217 
218  Query query = entityManager.createQuery(querybuilder);
219 
220  if (firstResult != -1) {
221  query.setFirstResult(firstResult);
222  }
223 
224  if (maxResult != -1) {
225  query.setMaxResults(maxResult);
226  }
227 
228  List<String> result = query.getResultList();
229  List<PermissionTicket> list = new LinkedList<>();
230  PermissionTicketStore ticketStore = provider.getStoreFactory().getPermissionTicketStore();
231 
232  for (String id : result) {
233  PermissionTicket ticket = ticketStore.findById(id, resourceServerId);
234  if (Objects.nonNull(ticket)) {
235  list.add(ticket);
236  }
237  }
238 
239  return list;
240  }
PermissionTicketStore getPermissionTicketStore()
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPermissionTicketStore.java:48
PermissionTicket findById(String id, String resourceServerId)
final AuthorizationProvider provider
Definition: JPAPermissionTicketStore.java:49

◆ findById()

PermissionTicket org.keycloak.authorization.jpa.store.JPAPermissionTicketStore.findById ( String  id,
String  resourceServerId 
)
inline

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

88  {
89  if (id == null) {
90  return null;
91  }
92 
93  PermissionTicketEntity entity = entityManager.find(PermissionTicketEntity.class, id);
94  if (entity == null) return null;
95 
96  return new PermissionTicketAdapter(entity, entityManager, provider.getStoreFactory());
97  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPermissionTicketStore.java:48
final AuthorizationProvider provider
Definition: JPAPermissionTicketStore.java:49

◆ findByOwner()

List<PermissionTicket> org.keycloak.authorization.jpa.store.JPAPermissionTicketStore.findByOwner ( String  owner,
String  resourceServerId 
)
inline

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

253  {
254  TypedQuery<String> query = entityManager.createNamedQuery("findPolicyIdByType", String.class);
255 
256  query.setFlushMode(FlushModeType.COMMIT);
257  query.setParameter("serverId", resourceServerId);
258  query.setParameter("owner", owner);
259 
260  List<String> result = query.getResultList();
261  List<PermissionTicket> list = new LinkedList<>();
262  PermissionTicketStore ticketStore = provider.getStoreFactory().getPermissionTicketStore();
263 
264  for (String id : result) {
265  PermissionTicket ticket = ticketStore.findById(id, resourceServerId);
266  if (Objects.nonNull(ticket)) {
267  list.add(ticket);
268  }
269  }
270 
271  return list;
272  }
PermissionTicketStore getPermissionTicketStore()
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPermissionTicketStore.java:48
PermissionTicket findById(String id, String resourceServerId)
final AuthorizationProvider provider
Definition: JPAPermissionTicketStore.java:49

◆ findByResource()

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

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

120  {
121  TypedQuery<String> query = entityManager.createNamedQuery("findPermissionIdByResource", String.class);
122 
123  query.setFlushMode(FlushModeType.COMMIT);
124  query.setParameter("resourceId", resourceId);
125  query.setParameter("serverId", resourceServerId);
126 
127  List<String> result = query.getResultList();
128  List<PermissionTicket> list = new LinkedList<>();
129  PermissionTicketStore ticketStore = provider.getStoreFactory().getPermissionTicketStore();
130 
131  for (String id : result) {
132  PermissionTicket ticket = ticketStore.findById(id, resourceServerId);
133  if (Objects.nonNull(ticket)) {
134  list.add(ticket);
135  }
136  }
137 
138  return list;
139  }
PermissionTicketStore getPermissionTicketStore()
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPermissionTicketStore.java:48
PermissionTicket findById(String id, String resourceServerId)
final AuthorizationProvider provider
Definition: JPAPermissionTicketStore.java:49

◆ findByResourceServer()

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

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

100  {
101  TypedQuery<String> query = entityManager.createNamedQuery("findPolicyIdByServerId", String.class);
102 
103  query.setParameter("serverId", resourceServerId);
104 
105  List<String> result = query.getResultList();
106  List<PermissionTicket> list = new LinkedList<>();
107  PermissionTicketStore ticketStore = provider.getStoreFactory().getPermissionTicketStore();
108 
109  for (String id : result) {
110  PermissionTicket ticket = ticketStore.findById(id, resourceServerId);
111  if (Objects.nonNull(ticket)) {
112  list.add(ticket);
113  }
114  }
115 
116  return list;
117  }
PermissionTicketStore getPermissionTicketStore()
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPermissionTicketStore.java:48
PermissionTicket findById(String id, String resourceServerId)
final AuthorizationProvider provider
Definition: JPAPermissionTicketStore.java:49

◆ findByScope()

List<PermissionTicket> org.keycloak.authorization.jpa.store.JPAPermissionTicketStore.findByScope ( String  scopeId,
String  resourceServerId 
)
inline

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

142  {
143  if (scopeId==null) {
144  return Collections.emptyList();
145  }
146 
147  // Use separate subquery to handle DB2 and MSSSQL
148  TypedQuery<String> query = entityManager.createNamedQuery("findPermissionIdByScope", String.class);
149 
150  query.setFlushMode(FlushModeType.COMMIT);
151  query.setParameter("scopeId", scopeId);
152  query.setParameter("serverId", resourceServerId);
153 
154  List<String> result = query.getResultList();
155  List<PermissionTicket> list = new LinkedList<>();
156  PermissionTicketStore ticketStore = provider.getStoreFactory().getPermissionTicketStore();
157 
158  for (String id : result) {
159  PermissionTicket ticket = ticketStore.findById(id, resourceServerId);
160  if (Objects.nonNull(ticket)) {
161  list.add(ticket);
162  }
163  }
164 
165  return list;
166  }
PermissionTicketStore getPermissionTicketStore()
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPermissionTicketStore.java:48
PermissionTicket findById(String id, String resourceServerId)
final AuthorizationProvider provider
Definition: JPAPermissionTicketStore.java:49

◆ findGranted()

List<PermissionTicket> org.keycloak.authorization.jpa.store.JPAPermissionTicketStore.findGranted ( String  userId,
String  resourceServerId 
)
inline

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

243  {
244  HashMap<String, String> filters = new HashMap<>();
245 
246  filters.put(PermissionTicket.GRANTED, Boolean.TRUE.toString());
247  filters.put(PermissionTicket.REQUESTER, userId);
248 
249  return find(filters, resourceServerId, -1, -1);
250  }
List< PermissionTicket > find(Map< String, String > attributes, String resourceServerId, int firstResult, int maxResult)
Definition: JPAPermissionTicketStore.java:169

メンバ詳解

◆ entityManager

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

◆ provider

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

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