keycloak-service
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.keycloak.authorization.admin.ResourceSetService クラス
org.keycloak.authorization.admin.ResourceSetService 連携図
Collaboration graph

公開メンバ関数

 ResourceSetService (KeycloakSession session, ResourceServer resourceServer, AuthorizationProvider authorization, AdminPermissionEvaluator auth, AdminEventBuilder adminEvent)
 
Response createPost (ResourceRepresentation resource)
 
ResourceRepresentation create (ResourceRepresentation resource)
 
Response update (@PathParam("id") String id, ResourceRepresentation resource)
 
Response delete (@PathParam("id") String id)
 
Response findById (@PathParam("id") String id)
 
Response findById (String id, Function< Resource, ? extends ResourceRepresentation > toRepresentation)
 
Response getScopes (@PathParam("id") String id)
 
Response getPermissions (@PathParam("id") String id)
 
Response getAttributes (@PathParam("id") String id)
 
Response find (@QueryParam("name") String name)
 
Response find (@QueryParam("_id") String id, @QueryParam("name") String name, @QueryParam("uri") String uri, @QueryParam("owner") String owner, @QueryParam("type") String type, @QueryParam("scope") String scope, @QueryParam("matchingUri") Boolean matchingUri, @QueryParam("deep") Boolean deep, @QueryParam("first") Integer firstResult, @QueryParam("max") Integer maxResult)
 
Response find (@QueryParam("_id") String id, @QueryParam("name") String name, @QueryParam("uri") String uri, @QueryParam("owner") String owner, @QueryParam("type") String type, @QueryParam("scope") String scope, @QueryParam("matchingUri") Boolean matchingUri, @QueryParam("deep") Boolean deep, @QueryParam("first") Integer firstResult, @QueryParam("max") Integer maxResult, BiFunction< Resource, Boolean, ?> toRepresentation)
 
void audit (ResourceRepresentation resource, String id, OperationType operation)
 

非公開メンバ関数

void requireView ()
 
void requireManage ()
 
void audit (ResourceRepresentation resource, OperationType operation)
 

非公開変数類

final AuthorizationProvider authorization
 
final AdminPermissionEvaluator auth
 
final AdminEventBuilder adminEvent
 
KeycloakSession session
 
ResourceServer resourceServer
 

詳解

著者
Pedro Igor

構築子と解体子

◆ ResourceSetService()

org.keycloak.authorization.admin.ResourceSetService.ResourceSetService ( KeycloakSession  session,
ResourceServer  resourceServer,
AuthorizationProvider  authorization,
AdminPermissionEvaluator  auth,
AdminEventBuilder  adminEvent 
)
inline
86  {
87  this.session = session;
90  this.auth = auth;
91  this.adminEvent = adminEvent.resource(ResourceType.AUTHORIZATION_RESOURCE);
92  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
KeycloakSession session
Definition: ResourceSetService.java:83
ResourceServer resourceServer
Definition: ResourceSetService.java:84
final AdminPermissionEvaluator auth
Definition: ResourceSetService.java:81
final AdminEventBuilder adminEvent
Definition: ResourceSetService.java:82

関数詳解

◆ audit() [1/2]

void org.keycloak.authorization.admin.ResourceSetService.audit ( ResourceRepresentation  resource,
OperationType  operation 
)
inlineprivate
471  {
472  audit(resource, null, operation);
473  }
void audit(ResourceRepresentation resource, OperationType operation)
Definition: ResourceSetService.java:471

◆ audit() [2/2]

void org.keycloak.authorization.admin.ResourceSetService.audit ( ResourceRepresentation  resource,
String  id,
OperationType  operation 
)
inline
475  {
476  if (authorization.getRealm().isAdminEventsEnabled()) {
477  if (id != null) {
478  adminEvent.operation(operation).resourcePath(session.getContext().getUri(), id).representation(resource).success();
479  } else {
480  adminEvent.operation(operation).resourcePath(session.getContext().getUri()).representation(resource).success();
481  }
482  }
483  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
void success()
Definition: AdminEventBuilder.java:226
KeycloakSession session
Definition: ResourceSetService.java:83
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
final AdminEventBuilder adminEvent
Definition: ResourceSetService.java:82

◆ create()

ResourceRepresentation org.keycloak.authorization.admin.ResourceSetService.create ( ResourceRepresentation  resource)
inline
110  {
111  requireManage();
112  StoreFactory storeFactory = this.authorization.getStoreFactory();
113  ResourceOwnerRepresentation owner = resource.getOwner();
114 
115  if (owner == null) {
116  owner = new ResourceOwnerRepresentation();
117  owner.setId(resourceServer.getId());
118  resource.setOwner(owner);
119  }
120 
121  String ownerId = owner.getId();
122 
123  if (ownerId == null) {
124  throw new ErrorResponseException(OAuthErrorException.INVALID_REQUEST, "You must specify the resource owner.", Status.BAD_REQUEST);
125  }
126 
127  Resource existingResource = storeFactory.getResourceStore().findByName(resource.getName(), ownerId, this.resourceServer.getId());
128 
129  if (existingResource != null) {
130  throw new ErrorResponseException(OAuthErrorException.INVALID_REQUEST, "Resource with name [" + resource.getName() + "] already exists.", Status.CONFLICT);
131  }
132 
133  return toRepresentation(toModel(resource, this.resourceServer, authorization), resourceServer, authorization);
134  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
void requireManage()
Definition: ResourceSetService.java:465
ResourceServer resourceServer
Definition: ResourceSetService.java:84

◆ createPost()

Response org.keycloak.authorization.admin.ResourceSetService.createPost ( ResourceRepresentation  resource)
inline
98  {
99  if (resource == null) {
100  return Response.status(Status.BAD_REQUEST).build();
101  }
102 
103  ResourceRepresentation newResource = create(resource);
104 
105  audit(resource, resource.getId(), OperationType.CREATE);
106 
107  return Response.status(Status.CREATED).entity(newResource).build();
108  }
void audit(ResourceRepresentation resource, OperationType operation)
Definition: ResourceSetService.java:471
ResourceRepresentation create(ResourceRepresentation resource)
Definition: ResourceSetService.java:110

◆ delete()

Response org.keycloak.authorization.admin.ResourceSetService.delete ( @PathParam("id") String  id)
inline
160  {
161  requireManage();
162  StoreFactory storeFactory = authorization.getStoreFactory();
163  Resource resource = storeFactory.getResourceStore().findById(id, resourceServer.getId());
164 
165  if (resource == null) {
166  return Response.status(Status.NOT_FOUND).build();
167  }
168 
169  storeFactory.getResourceStore().delete(id);
170 
171  if (authorization.getRealm().isAdminEventsEnabled()) {
172  audit(toRepresentation(resource, resourceServer, authorization), OperationType.DELETE);
173  }
174 
175  return Response.noContent().build();
176  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
void requireManage()
Definition: ResourceSetService.java:465
ResourceServer resourceServer
Definition: ResourceSetService.java:84
void audit(ResourceRepresentation resource, OperationType operation)
Definition: ResourceSetService.java:471

◆ find() [1/3]

Response org.keycloak.authorization.admin.ResourceSetService.find ( @QueryParam("name") String  name)
inline
315  {
317  StoreFactory storeFactory = authorization.getStoreFactory();
318 
319  if (name == null) {
320  return Response.status(Status.BAD_REQUEST).build();
321  }
322 
323  Resource model = storeFactory.getResourceStore().findByName(name, this.resourceServer.getId());
324 
325  if (model == null) {
326  return Response.status(Status.OK).build();
327  }
328 
329  return Response.ok(toRepresentation(model, this.resourceServer, authorization)).build();
330  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
ResourceServer resourceServer
Definition: ResourceSetService.java:84
final AdminPermissionEvaluator auth
Definition: ResourceSetService.java:81

◆ find() [2/3]

Response org.keycloak.authorization.admin.ResourceSetService.find ( @QueryParam("_id") String  id,
@QueryParam("name") String  name,
@QueryParam("uri") String  uri,
@QueryParam("owner") String  owner,
@QueryParam("type") String  type,
@QueryParam("scope") String  scope,
@QueryParam("matchingUri") Boolean  matchingUri,
@QueryParam("deep") Boolean  deep,
@QueryParam("first") Integer  firstResult,
@QueryParam("max") Integer  maxResult 
)
inline
344  {
345  return find(id, name, uri, owner, type, scope, matchingUri, deep, firstResult, maxResult, (BiFunction<Resource, Boolean, ResourceRepresentation>) (resource, deep1) -> toRepresentation(resource, resourceServer, authorization, deep1));
346  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
Response find(@QueryParam("name") String name)
Definition: ResourceSetService.java:315
ResourceServer resourceServer
Definition: ResourceSetService.java:84

◆ find() [3/3]

Response org.keycloak.authorization.admin.ResourceSetService.find ( @QueryParam("_id") String  id,
@QueryParam("name") String  name,
@QueryParam("uri") String  uri,
@QueryParam("owner") String  owner,
@QueryParam("type") String  type,
@QueryParam("scope") String  scope,
@QueryParam("matchingUri") Boolean  matchingUri,
@QueryParam("deep") Boolean  deep,
@QueryParam("first") Integer  firstResult,
@QueryParam("max") Integer  maxResult,
BiFunction< Resource, Boolean, ?>  toRepresentation 
)
inline
358  {
359  requireView();
360 
361  StoreFactory storeFactory = authorization.getStoreFactory();
362 
363  if (deep == null) {
364  deep = true;
365  }
366 
367  Map<String, String[]> search = new HashMap<>();
368 
369  if (id != null && !"".equals(id.trim())) {
370  search.put("id", new String[] {id});
371  }
372 
373  if (name != null && !"".equals(name.trim())) {
374  search.put("name", new String[] {name});
375  }
376 
377  if (uri != null && !"".equals(uri.trim())) {
378  search.put("uri", new String[] {uri});
379  }
380 
381  if (owner != null && !"".equals(owner.trim())) {
382  RealmModel realm = authorization.getKeycloakSession().getContext().getRealm();
383  ClientModel clientModel = realm.getClientByClientId(owner);
384 
385  if (clientModel != null) {
386  owner = clientModel.getId();
387  } else {
388  UserModel user = authorization.getKeycloakSession().users().getUserByUsername(owner, realm);
389 
390  if (user != null) {
391  owner = user.getId();
392  }
393  }
394 
395  search.put("owner", new String[] {owner});
396  }
397 
398  if (type != null && !"".equals(type.trim())) {
399  search.put("type", new String[] {type});
400  }
401 
402  if (scope != null && !"".equals(scope.trim())) {
403  HashMap<String, String[]> scopeFilter = new HashMap<>();
404 
405  scopeFilter.put("name", new String[] {scope});
406 
407  List<Scope> scopes = authorization.getStoreFactory().getScopeStore().findByResourceServer(scopeFilter, resourceServer.getId(), -1, -1);
408 
409  if (scopes.isEmpty()) {
410  return Response.ok(Collections.emptyList()).build();
411  }
412 
413  search.put("scope", scopes.stream().map(Scope::getId).toArray(String[]::new));
414  }
415 
416  List<Resource> resources = storeFactory.getResourceStore().findByResourceServer(search, this.resourceServer.getId(), firstResult != null ? firstResult : -1, maxResult != null ? maxResult : Constants.DEFAULT_MAX_RESULTS);
417 
418  if (matchingUri != null && matchingUri && resources.isEmpty()) {
419  HashMap<String, String[]> attributes = new HashMap<>();
420 
421  attributes.put("uri_not_null", new String[] {"true"});
422  attributes.put("owner", new String[] {resourceServer.getId()});
423 
424  List<Resource> serverResources = storeFactory.getResourceStore().findByResourceServer(attributes, this.resourceServer.getId(), firstResult != null ? firstResult : -1, maxResult != null ? maxResult : Constants.DEFAULT_MAX_RESULTS);
425 
426  PathMatcher<Map.Entry<String, Resource>> pathMatcher = new PathMatcher<Map.Entry<String, Resource>>() {
427  @Override
428  protected String getPath(Map.Entry<String, Resource> entry) {
429  return entry.getKey();
430  }
431 
432  @Override
433  protected Collection<Map.Entry<String, Resource>> getPaths() {
434  Map<String, Resource> result = new HashMap<>();
435  serverResources.forEach(resource -> resource.getUris().forEach(uri -> {
436  result.put(uri, resource);
437  }));
438 
439  return result.entrySet();
440  }
441  };
442 
443  Map.Entry<String, Resource> matches = pathMatcher.matches(uri);
444 
445  if (matches != null) {
446  resources = Collections.singletonList(matches.getValue());
447  }
448  }
449 
450  Boolean finalDeep = deep;
451 
452  return Response.ok(
453  resources.stream()
454  .map(resource -> toRepresentation.apply(resource, finalDeep))
455  .collect(Collectors.toList()))
456  .build();
457  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
void requireView()
Definition: ResourceSetService.java:459
ResourceServer resourceServer
Definition: ResourceSetService.java:84

◆ findById() [1/2]

Response org.keycloak.authorization.admin.ResourceSetService.findById ( @PathParam("id") String  id)
inline
182  {
183  return findById(id, resource -> toRepresentation(resource, resourceServer, authorization, true));
184  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
Response findById(@PathParam("id") String id)
Definition: ResourceSetService.java:182
ResourceServer resourceServer
Definition: ResourceSetService.java:84

◆ findById() [2/2]

Response org.keycloak.authorization.admin.ResourceSetService.findById ( String  id,
Function< Resource, ? extends ResourceRepresentation >  toRepresentation 
)
inline
186  {
187  requireView();
188  StoreFactory storeFactory = authorization.getStoreFactory();
189  Resource model = storeFactory.getResourceStore().findById(id, resourceServer.getId());
190 
191  if (model == null) {
192  return Response.status(Status.NOT_FOUND).build();
193  }
194 
195  return Response.ok(toRepresentation.apply(model)).build();
196  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
void requireView()
Definition: ResourceSetService.java:459
ResourceServer resourceServer
Definition: ResourceSetService.java:84

◆ getAttributes()

Response org.keycloak.authorization.admin.ResourceSetService.getAttributes ( @PathParam("id") String  id)
inline
299  {
300  requireView();
301  StoreFactory storeFactory = authorization.getStoreFactory();
302  Resource model = storeFactory.getResourceStore().findById(id, resourceServer.getId());
303 
304  if (model == null) {
305  return Response.status(Status.NOT_FOUND).build();
306  }
307 
308  return Response.ok(model.getAttributes()).build();
309  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
void requireView()
Definition: ResourceSetService.java:459
ResourceServer resourceServer
Definition: ResourceSetService.java:84

◆ getPermissions()

Response org.keycloak.authorization.admin.ResourceSetService.getPermissions ( @PathParam("id") String  id)
inline
245  {
246  requireView();
247  StoreFactory storeFactory = authorization.getStoreFactory();
248  ResourceStore resourceStore = storeFactory.getResourceStore();
249  Resource model = resourceStore.findById(id, resourceServer.getId());
250 
251  if (model == null) {
252  return Response.status(Status.NOT_FOUND).build();
253  }
254 
255  PolicyStore policyStore = authorization.getStoreFactory().getPolicyStore();
256  Set<Policy> policies = new HashSet<>();
257 
258  policies.addAll(policyStore.findByResource(model.getId(), resourceServer.getId()));
259 
260  if (model.getType() != null) {
261  policies.addAll(policyStore.findByResourceType(model.getType(), resourceServer.getId()));
262 
263  HashMap<String, String[]> resourceFilter = new HashMap<>();
264 
265  resourceFilter.put("owner", new String[]{resourceServer.getId()});
266  resourceFilter.put("type", new String[]{model.getType()});
267 
268  for (Resource resourceType : resourceStore.findByResourceServer(resourceFilter, resourceServer.getId(), -1, -1)) {
269  policies.addAll(policyStore.findByResource(resourceType.getId(), resourceServer.getId()));
270  }
271  }
272 
273  policies.addAll(policyStore.findByScopeIds(model.getScopes().stream().map(scope -> scope.getId()).collect(Collectors.toList()), id, resourceServer.getId()));
274  policies.addAll(policyStore.findByScopeIds(model.getScopes().stream().map(scope -> scope.getId()).collect(Collectors.toList()), null, resourceServer.getId()));
275 
276  List<PolicyRepresentation> representation = new ArrayList<>();
277 
278  for (Policy policyModel : policies) {
279  if (!"uma".equalsIgnoreCase(policyModel.getType())) {
280  PolicyRepresentation policy = new PolicyRepresentation();
281 
282  policy.setId(policyModel.getId());
283  policy.setName(policyModel.getName());
284  policy.setType(policyModel.getType());
285 
286  if (!representation.contains(policy)) {
287  representation.add(policy);
288  }
289  }
290  }
291 
292  return Response.ok(representation).build();
293  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
void requireView()
Definition: ResourceSetService.java:459
ResourceServer resourceServer
Definition: ResourceSetService.java:84

◆ getScopes()

Response org.keycloak.authorization.admin.ResourceSetService.getScopes ( @PathParam("id") String  id)
inline
202  {
203  requireView();
204  StoreFactory storeFactory = authorization.getStoreFactory();
205  Resource model = storeFactory.getResourceStore().findById(id, resourceServer.getId());
206 
207  if (model == null) {
208  return Response.status(Status.NOT_FOUND).build();
209  }
210 
211  List<ScopeRepresentation> scopes = model.getScopes().stream().map(scope -> {
212  ScopeRepresentation representation = new ScopeRepresentation();
213 
214  representation.setId(scope.getId());
215  representation.setName(scope.getName());
216 
217  return representation;
218  }).collect(Collectors.toList());
219 
220  if (model.getType() != null && !model.getOwner().equals(resourceServer.getId())) {
221  ResourceStore resourceStore = authorization.getStoreFactory().getResourceStore();
222  for (Resource typed : resourceStore.findByType(model.getType(), resourceServer.getId())) {
223  if (typed.getOwner().equals(resourceServer.getId()) && !typed.getId().equals(model.getId())) {
224  scopes.addAll(typed.getScopes().stream().map(model1 -> {
225  ScopeRepresentation scope = new ScopeRepresentation();
226  scope.setId(model1.getId());
227  scope.setName(model1.getName());
228  String iconUri = model1.getIconUri();
229  if (iconUri != null) {
230  scope.setIconUri(iconUri);
231  }
232  return scope;
233  }).filter(scopeRepresentation -> !scopes.contains(scopeRepresentation)).collect(Collectors.toList()));
234  }
235  }
236  }
237 
238  return Response.ok(scopes).build();
239  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
void requireView()
Definition: ResourceSetService.java:459
ResourceServer resourceServer
Definition: ResourceSetService.java:84

◆ requireManage()

void org.keycloak.authorization.admin.ResourceSetService.requireManage ( )
inlineprivate
465  {
466  if (this.auth != null) {
468  }
469  }
final AdminPermissionEvaluator auth
Definition: ResourceSetService.java:81

◆ requireView()

void org.keycloak.authorization.admin.ResourceSetService.requireView ( )
inlineprivate
459  {
460  if (this.auth != null) {
462  }
463  }
final AdminPermissionEvaluator auth
Definition: ResourceSetService.java:81

◆ update()

Response org.keycloak.authorization.admin.ResourceSetService.update ( @PathParam("id") String  id,
ResourceRepresentation  resource 
)
inline
140  {
141  requireManage();
142  resource.setId(id);
143  StoreFactory storeFactory = this.authorization.getStoreFactory();
144  ResourceStore resourceStore = storeFactory.getResourceStore();
145  Resource model = resourceStore.findById(resource.getId(), resourceServer.getId());
146 
147  if (model == null) {
148  return Response.status(Status.NOT_FOUND).build();
149  }
150 
151  toModel(resource, resourceServer, authorization);
152 
153  audit(resource, OperationType.UPDATE);
154 
155  return Response.noContent().build();
156  }
final AuthorizationProvider authorization
Definition: ResourceSetService.java:80
void requireManage()
Definition: ResourceSetService.java:465
ResourceServer resourceServer
Definition: ResourceSetService.java:84
void audit(ResourceRepresentation resource, OperationType operation)
Definition: ResourceSetService.java:471

メンバ詳解

◆ adminEvent

final AdminEventBuilder org.keycloak.authorization.admin.ResourceSetService.adminEvent
private

◆ auth

final AdminPermissionEvaluator org.keycloak.authorization.admin.ResourceSetService.auth
private

◆ authorization

final AuthorizationProvider org.keycloak.authorization.admin.ResourceSetService.authorization
private

◆ resourceServer

ResourceServer org.keycloak.authorization.admin.ResourceSetService.resourceServer
private

◆ session

KeycloakSession org.keycloak.authorization.admin.ResourceSetService.session
private

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