ANTLR Grammar for the OpenFGA DSL and parser from and to the OpenFGA JSON Syntax
OpenFGA is an open source Fine-Grained Authorization solution inspired by Google's Zanzibar paper. It was created by the FGA team at Auth0 based on Auth0 Fine-Grained Authorization (FGA), available under a permissive license (Apache-2) and welcomes community contributions.
OpenFGA is designed to make it easy for application builders to model their permission layer, and to add and integrate fine-grained authorization into their applications. OpenFGA’s design is optimized for reliability and low latency at a high scale.
- OpenFGA Documentation
- OpenFGA API Documentation
- OpenFGA Community
- Zanzibar Academy
- Google's Zanzibar Paper (2019)
Packages | Package Manager | Docs |
---|---|---|
JS | README | |
Go | README | |
Java | README |
This repo contains everything needed to interact with the OpenFGA Authorization Models schema versions 1.1+, in multiple languages (currently, Go and JS are supported).
Feature | Implemented in ANTLR |
---|---|
Basic DSL | ✅ |
Nesting | ✅ (partial, see #113) |
Conditions | ✅ |
Feature | Go | JS | Java |
---|---|---|---|
Transformer from the DSL to JSON and from JSON to DSL | ✅ | ✅ | ✅ |
Syntactic Model Validations | ✅ | ✅ | ✅ |
Schema 1.0 | ❌ | ❌ (supported in v0.1.6 and below) | ❌ |
Schema 1.1 | ✅ | ✅ (supported in v0.2.0 and above) | ✅ |
Schema 1.2 (Modular Models) | ✅ | ✅ | ✅ |
Semantic Model Validations | ❌ (planned, see #99) | ✅ | ✅ |
Graphing & Utility Methods | ❌ (planned) | ❌ (planned) | ❌ (planned) |
Use the FGA CLI
Repo | License | Maintainers | Language | Schema v1.0 | Schema v1.1 | Package Managers | Other Links |
---|---|---|---|---|---|---|---|
openfga language (syntax-transformer) | Apache-2.0 | @openfga | ANTLR (Go and Typescript implementations) | <0.1.5 | Yes (v0.0.8+) | - | |
openfga-dsl-parser | Apache-2.0 | @maxmindlin - @dblclik | Rust | Yes | No | WASM - Python | |
openfga-rs | Apache-2.0 | @iammathew | Rust | Yes | No | ||
openfga-dsl-parser | Apache-2.0 | @craigpastro | ANTLR & Go | Yes | Partial (requires self). Supports nesting |
Repo | License | Maintainers | Language | Schema v1.0 | Schema v1.1 | Package Managers | Other Links |
---|---|---|---|---|---|---|---|
fga cli | Apache-2.0 | @openfga | Go | No | Yes | ||
fga-transformer-cli | MIT | @ozee-io | Javascript | Yes | Yes |
See CONTRIBUTING.
This project is licensed under the Apache-2.0 license. See the LICENSE file for more info.