Big ACL for Devs
Big ACL helps you keep authorization logic explicit, testable, and decoupled from application code. Instead of scattering role checks and conditionals across controllers and services, you rely on a policy model evaluated by a dedicated Policy Decision Point (PDP).
From a developer point of view:
ALLOW or
DENY.
OpenID AuthZEN aims to standardize how clients express authorization requests and obtain decisions or decision tokens. For developers, this means:
Big ACL focuses on the policy model (PAP) and can feed PDPs that follow standards such as AuthZEN. Your application code only needs to integrate with the chosen PDP / SDK.
Controllers stay declarative using @PreAuthorize, while a small PEP layer
calls the external PDP.
ProjectController.java
@RestController
@RequestMapping("/projects")
public class ProjectController {
private final AuthorizationService authz;
private final ProjectService service;
public ProjectController(AuthorizationService authz, ProjectService service) {
this.authz = authz;
this.service = service;
}
@GetMapping("/{projectId}")
@PreAuthorize("@authz.check(authentication, 'READ', 'PROJECT', #projectId)")
public ProjectDto getProject(@PathVariable String projectId) {
return service.get(projectId);
}
@DeleteMapping("/{projectId}")
@PreAuthorize("@authz.check(authentication, 'DELETE', 'PROJECT', #projectId)")
public void delete(@PathVariable String projectId) {
service.delete(projectId);
}
}
AuthorizationService.java
@Service
public class AuthorizationService {
private final PolicyDecisionClient pdp;
public AuthorizationService(PolicyDecisionClient pdp) {
this.pdp = pdp;
}
public boolean check(Authentication auth, String action, String resource, String id) {
return pdp.isAllowed(auth, action, resource, id);
}
}