Big ACL pour les devs
Big ACL vous aide à garder la logique d'autorisation explicite, testable et découplée du code applicatif. Au lieu de disperser des vérifications de rôles et des conditions dans les contrôleurs et services, vous vous appuyez sur un modèle de politiques évalué par un Point de Décision des Politiques (PDP) dédié.
Du point de vue du développeur :
ALLOW ou
DENY.
OpenID AuthZEN vise à standardiser la manière dont les clients expriment les requêtes d'autorisation et obtiennent des décisions ou des tokens de décision. Pour les développeurs, cela signifie :
Big ACL se concentre sur le modèle de politiques (PAP) et peut alimenter des PDP conformes à des standards comme AuthZEN. Votre code applicatif n'a qu'à s'intégrer avec le PDP / SDK choisi.
Les contrôleurs restent déclaratifs via @PreAuthorize, tandis qu'une couche PEP légère
appelle le PDP externe.
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);
}
}