keycloak-service
公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.keycloak.authorization.admin.PolicyService クラス
org.keycloak.authorization.admin.PolicyService の継承関係図
Inheritance graph
org.keycloak.authorization.admin.PolicyService 連携図
Collaboration graph

公開メンバ関数

 PolicyService (ResourceServer resourceServer, AuthorizationProvider authorization, AdminPermissionEvaluator auth, AdminEventBuilder adminEvent)
 
Object getResource (@PathParam("type") String type)
 
Response create (String payload)
 
Policy create (AbstractPolicyRepresentation representation)
 
Response findByName (@QueryParam("name") String name)
 
Response findAll (@QueryParam("policyId") String id, @QueryParam("name") String name, @QueryParam("type") String type, @QueryParam("resource") String resource, @QueryParam("scope") String scope, @QueryParam("permission") Boolean permission, @QueryParam("owner") String owner, @QueryParam("first") Integer firstResult, @QueryParam("max") Integer maxResult)
 
Response findPolicyProviders ()
 
PolicyEvaluationService getPolicyEvaluateResource ()
 

限定公開メンバ関数

PolicyTypeService doCreatePolicyTypeResource (String type)
 
Object doCreatePolicyResource (Policy policy)
 
AbstractPolicyRepresentation doCreateRepresentation (String payload)
 
AbstractPolicyRepresentation toRepresentation (Policy model, AuthorizationProvider authorization)
 
List< Object > doSearch (Integer firstResult, Integer maxResult, Map< String, String[]> filters)
 
PolicyProviderAdminService getPolicyProviderAdminResource (String policyType)
 
PolicyProviderFactory getPolicyProviderFactory (String policyType)
 

限定公開変数類

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

非公開メンバ関数

void findAssociatedPolicies (Policy policy, List< Policy > policies)
 
void audit (AbstractPolicyRepresentation resource, String id, OperationType operation)
 

非公開変数類

KeycloakSession session
 

詳解

著者
Pedro Igor

構築子と解体子

◆ PolicyService()

org.keycloak.authorization.admin.PolicyService.PolicyService ( ResourceServer  resourceServer,
AuthorizationProvider  authorization,
AdminPermissionEvaluator  auth,
AdminEventBuilder  adminEvent 
)
inline
82  {
85  this.auth = auth;
86  this.adminEvent = adminEvent.resource(ResourceType.AUTHORIZATION_POLICY);
87  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78
final AdminPermissionEvaluator auth
Definition: PolicyService.java:79
final ResourceServer resourceServer
Definition: PolicyService.java:77
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
final AdminEventBuilder adminEvent
Definition: PolicyService.java:80

関数詳解

◆ audit()

void org.keycloak.authorization.admin.PolicyService.audit ( AbstractPolicyRepresentation  resource,
String  id,
OperationType  operation 
)
inlineprivate
331  {
332  if (authorization.getRealm().isAdminEventsEnabled()) {
333  if (id != null) {
334  adminEvent.operation(operation).resourcePath(session.getContext().getUri(), id).representation(resource).success();
335  } else {
336  adminEvent.operation(operation).resourcePath(session.getContext().getUri()).representation(resource).success();
337  }
338  }
339  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
void success()
Definition: AdminEventBuilder.java:226
KeycloakSession session
Definition: PolicyService.java:76
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
final AdminEventBuilder adminEvent
Definition: PolicyService.java:80

◆ create() [1/2]

Response org.keycloak.authorization.admin.PolicyService.create ( String  payload)
inline
114  {
115  if (auth != null) {
117  }
118 
119  AbstractPolicyRepresentation representation = doCreateRepresentation(payload);
120  Policy policy = create(representation);
121 
122  representation.setId(policy.getId());
123 
124  audit(representation, representation.getId(), OperationType.CREATE);
125 
126  return Response.status(Status.CREATED).entity(representation).build();
127  }
final AdminPermissionEvaluator auth
Definition: PolicyService.java:79
Response create(String payload)
Definition: PolicyService.java:114
void audit(AbstractPolicyRepresentation resource, String id, OperationType operation)
Definition: PolicyService.java:331
AbstractPolicyRepresentation doCreateRepresentation(String payload)
Definition: PolicyService.java:129

◆ create() [2/2]

Policy org.keycloak.authorization.admin.PolicyService.create ( AbstractPolicyRepresentation  representation)
inline
141  {
142  PolicyStore policyStore = authorization.getStoreFactory().getPolicyStore();
143  Policy existing = policyStore.findByName(representation.getName(), resourceServer.getId());
144 
145  if (existing != null) {
146  throw new ErrorResponseException("Policy with name [" + representation.getName() + "] already exists", "Conflicting policy", Status.CONFLICT);
147  }
148 
149  return policyStore.create(representation, resourceServer);
150  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78
final ResourceServer resourceServer
Definition: PolicyService.java:77

◆ doCreatePolicyResource()

Object org.keycloak.authorization.admin.PolicyService.doCreatePolicyResource ( Policy  policy)
inlineprotected
106  {
107  return new PolicyResourceService(policy, resourceServer, authorization, auth, adminEvent);
108  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78
final AdminPermissionEvaluator auth
Definition: PolicyService.java:79
final ResourceServer resourceServer
Definition: PolicyService.java:77
final AdminEventBuilder adminEvent
Definition: PolicyService.java:80

◆ doCreatePolicyTypeResource()

PolicyTypeService org.keycloak.authorization.admin.PolicyService.doCreatePolicyTypeResource ( String  type)
inlineprotected
102  {
103  return new PolicyTypeService(type, resourceServer, authorization, auth, adminEvent);
104  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78
final AdminPermissionEvaluator auth
Definition: PolicyService.java:79
final ResourceServer resourceServer
Definition: PolicyService.java:77
final AdminEventBuilder adminEvent
Definition: PolicyService.java:80

◆ doCreateRepresentation()

AbstractPolicyRepresentation org.keycloak.authorization.admin.PolicyService.doCreateRepresentation ( String  payload)
inlineprotected
129  {
130  PolicyRepresentation representation;
131 
132  try {
133  representation = JsonSerialization.readValue(payload, PolicyRepresentation.class);
134  } catch (IOException cause) {
135  throw new RuntimeException("Failed to deserialize representation", cause);
136  }
137 
138  return representation;
139  }

◆ doSearch()

List<Object> org.keycloak.authorization.admin.PolicyService.doSearch ( Integer  firstResult,
Integer  maxResult,
Map< String, String[]>  filters 
)
inlineprotected
271  {
272  PolicyStore policyStore = authorization.getStoreFactory().getPolicyStore();
273  return policyStore.findByResourceServer(filters, resourceServer.getId(), firstResult != null ? firstResult : -1, maxResult != null ? maxResult : Constants.DEFAULT_MAX_RESULTS).stream()
274  .map(policy -> toRepresentation(policy, authorization))
275  .collect(Collectors.toList());
276  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78
final ResourceServer resourceServer
Definition: PolicyService.java:77
AbstractPolicyRepresentation toRepresentation(Policy model, AuthorizationProvider authorization)
Definition: PolicyService.java:267

◆ findAll()

Response org.keycloak.authorization.admin.PolicyService.findAll ( @QueryParam("policyId") String  id,
@QueryParam("name") String  name,
@QueryParam("type") String  type,
@QueryParam("resource") String  resource,
@QueryParam("scope") String  scope,
@QueryParam("permission") Boolean  permission,
@QueryParam("owner") String  owner,
@QueryParam("first") Integer  firstResult,
@QueryParam("max") Integer  maxResult 
)
inline
187  {
188  if (auth != null) {
190  }
191 
192  Map<String, String[]> search = new HashMap<>();
193 
194  if (id != null && !"".equals(id.trim())) {
195  search.put("id", new String[] {id});
196  }
197 
198  if (name != null && !"".equals(name.trim())) {
199  search.put("name", new String[] {name});
200  }
201 
202  if (type != null && !"".equals(type.trim())) {
203  search.put("type", new String[] {type});
204  }
205 
206  if (owner != null && !"".equals(owner.trim())) {
207  search.put("owner", new String[] {owner});
208  }
209 
210  StoreFactory storeFactory = authorization.getStoreFactory();
211 
212  if (resource != null && !"".equals(resource.trim())) {
213  ResourceStore resourceStore = storeFactory.getResourceStore();
214  Resource resourceModel = resourceStore.findById(resource, resourceServer.getId());
215 
216  if (resourceModel == null) {
217  Map<String, String[]> resourceFilters = new HashMap<>();
218 
219  resourceFilters.put("name", new String[]{resource});
220 
221  if (owner != null) {
222  resourceFilters.put("owner", new String[]{owner});
223  }
224 
225  Set<String> resources = resourceStore.findByResourceServer(resourceFilters, resourceServer.getId(), -1, 1).stream().map(Resource::getId).collect(Collectors.toSet());
226 
227  if (resources.isEmpty()) {
228  return Response.ok().build();
229  }
230 
231  search.put("resource", resources.toArray(new String[resources.size()]));
232  } else {
233  search.put("resource", new String[] {resourceModel.getId()});
234  }
235  }
236 
237  if (scope != null && !"".equals(scope.trim())) {
238  ScopeStore scopeStore = storeFactory.getScopeStore();
239  Scope scopeModel = scopeStore.findById(scope, resourceServer.getId());
240 
241  if (scopeModel == null) {
242  Map<String, String[]> scopeFilters = new HashMap<>();
243 
244  scopeFilters.put("name", new String[]{scope});
245 
246  Set<String> scopes = scopeStore.findByResourceServer(scopeFilters, resourceServer.getId(), -1, 1).stream().map(Scope::getId).collect(Collectors.toSet());
247 
248  if (scopes.isEmpty()) {
249  return Response.ok().build();
250  }
251 
252  search.put("scope", scopes.toArray(new String[scopes.size()]));
253  } else {
254  search.put("scope", new String[] {scopeModel.getId()});
255  }
256  }
257 
258  if (permission != null) {
259  search.put("permission", new String[] {permission.toString()});
260  }
261 
262  return Response.ok(
263  doSearch(firstResult, maxResult, search))
264  .build();
265  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78
final AdminPermissionEvaluator auth
Definition: PolicyService.java:79
final ResourceServer resourceServer
Definition: PolicyService.java:77
List< Object > doSearch(Integer firstResult, Integer maxResult, Map< String, String[]> filters)
Definition: PolicyService.java:271

◆ findAssociatedPolicies()

void org.keycloak.authorization.admin.PolicyService.findAssociatedPolicies ( Policy  policy,
List< Policy >  policies 
)
inlineprivate
324  {
325  policy.getAssociatedPolicies().forEach(associated -> {
326  policies.add(associated);
327  findAssociatedPolicies(associated, policies);
328  });
329  }
void findAssociatedPolicies(Policy policy, List< Policy > policies)
Definition: PolicyService.java:324

◆ findByName()

Response org.keycloak.authorization.admin.PolicyService.findByName ( @QueryParam("name") String  name)
inline
156  {
157  if (auth != null) {
159  }
160 
161  StoreFactory storeFactory = authorization.getStoreFactory();
162 
163  if (name == null) {
164  return Response.status(Status.BAD_REQUEST).build();
165  }
166 
167  Policy model = storeFactory.getPolicyStore().findByName(name, this.resourceServer.getId());
168 
169  if (model == null) {
170  return Response.status(Status.OK).build();
171  }
172 
173  return Response.ok(toRepresentation(model, authorization)).build();
174  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78
final AdminPermissionEvaluator auth
Definition: PolicyService.java:79
final ResourceServer resourceServer
Definition: PolicyService.java:77
AbstractPolicyRepresentation toRepresentation(Policy model, AuthorizationProvider authorization)
Definition: PolicyService.java:267

◆ findPolicyProviders()

Response org.keycloak.authorization.admin.PolicyService.findPolicyProviders ( )
inline
282  {
283  if (auth != null) {
285  }
286 
287  return Response.ok(
288  authorization.getProviderFactories().stream()
289  .filter(factory -> !factory.isInternal())
290  .map(factory -> {
291  PolicyProviderRepresentation representation = new PolicyProviderRepresentation();
292 
293  representation.setName(factory.getName());
294  representation.setGroup(factory.getGroup());
295  representation.setType(factory.getId());
296 
297  return representation;
298  })
299  .collect(Collectors.toList()))
300  .build();
301  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78
final AdminPermissionEvaluator auth
Definition: PolicyService.java:79

◆ getPolicyEvaluateResource()

PolicyEvaluationService org.keycloak.authorization.admin.PolicyService.getPolicyEvaluateResource ( )
inline
304  {
305  if (auth != null) {
307  }
308 
309  PolicyEvaluationService resource = new PolicyEvaluationService(this.resourceServer, this.authorization, this.auth);
310 
311  ResteasyProviderFactory.getInstance().injectProperties(resource);
312 
313  return resource;
314  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78
final AdminPermissionEvaluator auth
Definition: PolicyService.java:79
final ResourceServer resourceServer
Definition: PolicyService.java:77

◆ getPolicyProviderAdminResource()

PolicyProviderAdminService org.keycloak.authorization.admin.PolicyService.getPolicyProviderAdminResource ( String  policyType)
inlineprotected
316  {
317  return getPolicyProviderFactory(policyType).getAdminResource(resourceServer, authorization);
318  }
PolicyProviderFactory getPolicyProviderFactory(String policyType)
Definition: PolicyService.java:320
final AuthorizationProvider authorization
Definition: PolicyService.java:78
final ResourceServer resourceServer
Definition: PolicyService.java:77

◆ getPolicyProviderFactory()

PolicyProviderFactory org.keycloak.authorization.admin.PolicyService.getPolicyProviderFactory ( String  policyType)
inlineprotected
320  {
321  return authorization.getProviderFactory(policyType);
322  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78

◆ getResource()

Object org.keycloak.authorization.admin.PolicyService.getResource ( @PathParam("type") String  type)
inline
90  {
91  PolicyProviderFactory providerFactory = getPolicyProviderFactory(type);
92 
93  if (providerFactory != null) {
94  return doCreatePolicyTypeResource(type);
95  }
96 
97  Policy policy = authorization.getStoreFactory().getPolicyStore().findById(type, resourceServer.getId());
98 
99  return doCreatePolicyResource(policy);
100  }
PolicyProviderFactory getPolicyProviderFactory(String policyType)
Definition: PolicyService.java:320
final AuthorizationProvider authorization
Definition: PolicyService.java:78
Object doCreatePolicyResource(Policy policy)
Definition: PolicyService.java:106
final ResourceServer resourceServer
Definition: PolicyService.java:77
PolicyTypeService doCreatePolicyTypeResource(String type)
Definition: PolicyService.java:102

◆ toRepresentation()

AbstractPolicyRepresentation org.keycloak.authorization.admin.PolicyService.toRepresentation ( Policy  model,
AuthorizationProvider  authorization 
)
inlineprotected
267  {
268  return ModelToRepresentation.toRepresentation(model, authorization, true, false);
269  }
final AuthorizationProvider authorization
Definition: PolicyService.java:78

メンバ詳解

◆ adminEvent

final AdminEventBuilder org.keycloak.authorization.admin.PolicyService.adminEvent
protected

◆ auth

final AdminPermissionEvaluator org.keycloak.authorization.admin.PolicyService.auth
protected

◆ authorization

final AuthorizationProvider org.keycloak.authorization.admin.PolicyService.authorization
protected

◆ resourceServer

final ResourceServer org.keycloak.authorization.admin.PolicyService.resourceServer
protected

◆ session

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

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