AuthZ Resolver SDK
SDK crate for the AuthZ Resolver module, providing the authorization evaluation API, constraint model, and PEP (Policy Enforcement Point) helpers for CyberFabric.
Overview
This crate defines the transport-agnostic interface for the AuthZ Resolver module:
AuthZResolverClient— Async trait for evaluating authorization requestsAuthZResolverPluginClient— Async trait for PDP plugin implementationsPolicyEnforcer— High-level PEP helper (build request → evaluate → compile toAccessScope)EvaluationRequest/EvaluationResponse— AuthZEN 1.0-based request/response models- Constraint types —
Constraint,Predicate,EqPredicate,InPredicate - PEP compiler —
compile_to_access_scope()converts PDP constraints to SecureORMAccessScope
Usage
PolicyEnforcer (Recommended)
The PolicyEnforcer encapsulates the full PEP flow — most services should use this:
use ;
use pep_properties;
// Define resource type with supported constraint properties
const USER: ResourceType = ResourceType ;
// Create enforcer once during service init
let authz = hub.?;
let enforcer = new;
// All CRUD operations return AccessScope for SecureORM
let scope = enforcer.access_scope.await?;
let scope = enforcer.access_scope.await?;
let scope = enforcer.access_scope.await?;
Advanced: AccessRequest Overrides
For non-default scenarios (cross-tenant, barrier bypass, ABAC properties):
use AccessRequest;
use TenantMode;
let scope = enforcer.access_scope_with.await?;
Low-Level: Direct Evaluation
For cases where PolicyEnforcer is not suitable:
use ;
let authz = hub.?;
let response = authz.evaluate.await?;
if response.decision else
Models
EvaluationRequest (AuthZEN 1.0)
EvaluationResponse
Constraints
PDP returns row-level constraints when decision=true:
// Multiple constraints are ORed
PEP Compilation Matrix
require_constraints |
constraints | Result |
|---|---|---|
false |
empty | AccessScope::allow_all() |
false |
present | Compile to AccessScope |
true |
empty | Error (fail-closed) |
true |
present | Compile to AccessScope |
Unknown properties fail that constraint (fail-closed). If ALL constraints fail, access is denied.
Error Handling
use EnforcerError;
match enforcer.access_scope.await
Implementing a Plugin
Implement AuthZResolverPluginClient and register with a GTS instance ID:
use async_trait;
use ;
License
Apache-2.0