Keycloak мелкозернистые разрешения с Spring Boot / Spring Security - PullRequest
0 голосов
/ 09 мая 2019

Я хотел бы использовать разрешения или области или аналогичные, чтобы разрешить детальный доступ к ресурсу REST.

В идеале я хотел бы сделать что-то вроде:

@PreAuthorize("hasPermission('Brands', 'brands:write')")
ResponseEntity<Brand> getBrand(@PathVariable("brandCode") String brandCode);

где 'Бренды'является ресурсом авторизации клиента keycloak с областями действия "бренды: пишите, бренды: читайте".

Единственная аннотация, которая работает, - это @Secured с ролью, я не хочу выполнять RBAC.

@Secured({"ROLE_STAFF"})

Я посмотрел на PolicyEnforcer, мне неясно, как именно он должен использоваться.

Я могу написать код вида:

KeycloakSecurityContext keycloakSecurityContext = (KeycloakSecurityContext) request.getAttribute(KeycloakSecurityContext.class.getName());
AuthorizationContext authzContext = keycloakSecurityContext.getAuthorizationContext();
if (authzContext.hasScopePermission("brands:write")) {

// This works....
}

Какможно связать AuthorizationContext из PolicyEnforcing со стандартными аннотациями безопасности Spring?

...