For an ABAC permissions library, the first results are stalniy/casl, casbin/casbin (Candidate provides a genuine ABAC library with a complete policy engine, expression-language rules, multi-source attribute support, framework integrations, and a policy management API, making it a flagship match for the target search) and hsluoyz/casbin (Casbin is a full-featured authorization library with native support for the ABAC model, a configurable policy evaluation engine, an expression language for rule definitions, and support for multiple attribute sources, making it a comprehensive match for your search). openfga/openfga and open-policy-agent/opa round out the shortlist. Compare the match explanations and check the project documentation against your requirements.
Open-source libraries for implementing fine-grained, policy-driven authorization logic within your software applications.
CASL is a JavaScript authorization library for defining and enforcing declarative access control rules across both frontend and backend environments. It provides an attribute-based access control system that manages permissions based on user roles and specific object properties. The library is designed for isomorphic access control, allowing a consistent set of permission rules to be shared between a server API and a client interface. It enables the serialization of permission sets as plain data objects to maintain synchronization across these different layers. Its capabilities include trans
CASL is a JavaScript ABAC library that lets you define declarative access rules based on user roles and object properties, with a policy evaluation engine, custom matching functions, and integrations for frameworks like MongoDB and React — covering every core feature you listed for fine-grained authorization.
Casbin is an authorization library that provides a model-based engine for enforcing access control across diverse application environments. It decouples authorization logic from application code by using a configuration-driven approach, allowing developers to define access rules and evaluation logic independently. The system supports a wide range of access control models, including role-based, attribute-based, and relationship-based patterns, which are evaluated at runtime to determine if a subject is permitted to perform an action on a resource. The project distinguishes itself through a hig
Candidate provides a genuine ABAC library with a complete policy engine, expression-language rules, multi-source attribute support, framework integrations, and a policy management API, making it a flagship match for the target search.
Casbin is an authorization library designed to manage application access control and permissions through a configurable model-based engine. It serves as a centralized system for verifying whether a user has permission to perform specific actions on a resource. The engine supports multiple access control models, including Role-Based Access Control, Attribute-Based Access Control, and Access Control Lists. It allows for the definition of role hierarchies and the evaluation of user, resource, and environment attributes to make access decisions. The library decouples authorization logic from dat
Casbin is a full-featured authorization library with native support for the ABAC model, a configurable policy evaluation engine, an expression language for rule definitions, and support for multiple attribute sources, making it a comprehensive match for your search.
OpenFGA is a fine-grained authorization server and policy decision point that implements relationship-based access control. It serves as a centralized authorization service for evaluating access requests and managing relationship tuples across distributed microservices and multi-tenant environments. The engine combines relationship graphs with attribute-based access control, using the Common Expression Language to evaluate dynamic runtime attributes and conditional access rules. It handles complex hierarchies and nested permissions by traversing chains of associations and parent-child links t
OpenFGA is a fine-grained authorization server that incorporates ABAC attributes into its relationship-based policy model, using Common Expression Language for dynamic attribute evaluation, making it a viable policy engine for ABAC scenarios despite its primary focus on relationship-based access control.
This project is a unified, cloud-native policy engine designed to decouple authorization and security logic from application codebases. It functions as a centralized authorization service that evaluates structured input data against declarative rules, enabling consistent policy enforcement across microservices, infrastructure, and continuous integration pipelines. The engine utilizes a specialized logic programming language to express complex constraints, which are compiled into an optimized intermediate representation for high-performance evaluation. By supporting both sidecar-based deployme
Open Policy Agent (OPA) is a cloud-native policy engine that uses its declarative rule language (Rego) to evaluate attributes and enforce fine-grained authorization, making it a direct and comprehensive match for an ABAC library with policy evaluation, expression language, multi-source input, and integration APIs.
Cerbos is an open-source authorization service that provides a centralized, language-agnostic engine for managing access control. It functions as a policy-as-code platform, allowing teams to define, test, and distribute authorization rules using declarative YAML or JSON configurations. By decoupling access logic from application code, it enables consistent permission enforcement across diverse service stacks. The project distinguishes itself through its ability to translate high-level authorization policies into native database query filters. This capability allows applications to enforce sec
Cerbos is a purpose-built authorization engine that uses attribute-based policies to define and enforce fine-grained access control, providing a policy evaluation engine, expressive rule language, and integration APIs, directly matching the requirements for an ABAC library/policy engine.
Warrant is an open-source authorization library supporting attribute-based access control (ABAC) as part of its fine-grained permission system, fitting your need for an ABAC library and policy engine.
NestJS Access Control is a role-based and attribute-based authorization framework designed for the NestJS ecosystem. It provides a declarative system for securing application routes and resources, allowing developers to enforce granular access policies through metadata-driven decorators. The framework distinguishes itself by supporting hierarchical role inheritance, which enables the resolution of complex permission sets by traversing parent and child role relationships. It also facilitates dynamic authorization management, allowing security rules to be loaded asynchronously from external dat
nest-access-control is an ABAC library tightly integrated with the NestJS framework, providing both role and attribute-based policies for fine-grained authorization within that ecosystem — it fits your intent if you use NestJS, but it may not be the general-purpose, framework-agnostic policy engine you might otherwise be seeking.
This project is a reverse proxy server that secures internal web services by enforcing authentication against external identity providers. It acts as a gatekeeper for incoming HTTP traffic, validating user identity before forwarding requests to protected backend applications. By integrating with OAuth2 and OIDC providers, the proxy ensures that only authorized users can access internal resources. The proxy distinguishes itself through its flexible session management and granular access control. It maintains authenticated user state across requests using either encrypted client-side cookies or
This is an authentication proxy that enforces OAuth2/OIDC authentication, not an ABAC policy engine — it does not evaluate attribute-based policies or provide a policy model for fine-grained authorization.
The Common Expression Language specification is a formal standard for a non-Turing-complete expression language designed for safe, portable, and fast logic evaluation. It serves as a cross-language logic standard and a declarative policy language, providing a consistent semantic framework for executing boolean expressions and data transformations across different programming environments. This specification acts as an embedded expression engine that allows applications to integrate portable logic for evaluating user-defined configurations. It is specifically designed to enable safe user-defin
CEL provides a portable expression language that is a common building block for rule evaluation in ABAC systems, but this repository is the language specification itself, not a full ABAC library with policy management, attribute sources, or framework integration.
laravel-cors is a middleware package for Laravel applications that manages Cross-Origin Resource Sharing. It functions as an HTTP security layer that validates request origins and injects the necessary headers into application responses to control how external domains access a backend API. The project provides a configuration-driven policy engine to match incoming request origins and methods against allowed values. This includes support for wildcard origin matching to authorize multiple trusted domains through a single rule and the automatic handling of pre-flight OPTIONS requests. The syste
This Laravel middleware manages Cross-Origin Resource Sharing policies, not attribute-based access control for fine-grained authorization—it controls which external domains can access your API, not who inside your app can do what with individual resources.
Ory Keto is an open-source authorization server that implements Google Zanzibar’s relationship-based access control model. It stores every access relationship as a tuple in a SQL database and exposes a declarative TypeScript-like namespace language for defining object types, relations, and permissions. The service provides bidirectional permission resolution, configurable consistency levels for checks, and dual gRPC and REST APIs for broad integration. Keto extends the Zanzibar model with edge enforcement of access policies, structured compliance auditing of permission decisions, and infrastr
Ory Keto is an authorization server based on Google Zanzibar's relationship-based access control (ReBAC) model, not attribute-based access control; it uses relation tuples rather than attribute-based rules, so it does not match the ABAC policy model requested.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| stalniy/casl | 7K | TypeScript | MIT | |
| casbin/casbin | 19.8K | Go | apache-2.0 | |
| hsluoyz/casbin | 20.2K | Go | Apache-2.0 | |
| openfga/openfga | 4.8K | Go | apache-2.0 | |
| open-policy-agent/opa | 11.9K | Go | Apache-2.0 | |
| cerbos/cerbos | 4.5K | Go | Apache-2.0 | |
| warrant-dev/warrant | 1.3K | Go | apache-2.0 | |
| nestjsx/nest-access-control | 1.2K | TypeScript | MIT | |
| oauth2-proxy/oauth2-proxy | 14.6K | Go | MIT | |
| google/cel-spec | 3.7K | Starlark | apache-2.0 |