Я хотел бы использовать разрешения или области или аналогичные, чтобы разрешить детальный доступ к ресурсу 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?