A batteries-included framework for building authorization in your application with a declarative policy language.
Oso is a batteries-included framework for building authorization in applications. It solves the problem of managing complex permission logic by providing a unified interface to model access control patterns, filter data based on user permissions, and test authorization rules. It supports multiple programming languages through dedicated libraries.
Developers and engineering teams building applications that require robust, scalable authorization systems, especially those working across multiple services or languages.
Developers choose Oso for its comprehensive approach to authorization, offering built-in primitives for common patterns, a declarative policy language for extensibility, and consistent libraries across popular programming languages, reducing the complexity of permission management.
Deprecated: See README
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Oso offers libraries for Node.js, Python, Go, Rust, Ruby, and Java, as evidenced by the language-specific badges in the README, enabling consistent authorization across diverse tech stacks.
With built-in primitives for RBAC and relationships, plus the extensible Polar language, developers can model complex permissions without reinventing the wheel, highlighted in the 'Model' feature.
Oso supports authorization over collections, allowing queries to return only accessible records—detailed in the 'Filter' feature for fine-grained data control beyond yes/no decisions.
The framework includes a debugger and REPL for unit testing authorization logic, making it easier to diagnose issues, as mentioned in the 'Test' section.
The README explicitly marks the open source library as deprecated, with future development focused on a new release, creating uncertainty and limiting long-term viability for new adopters.
Developers must learn Oso's declarative Polar policy language, which adds complexity and a learning curve compared to writing authorization logic natively in application code.
Adding Oso requires integrating its libraries and policy engine, which can introduce latency and increase architectural complexity, especially in high-performance or resource-constrained environments.