ランキングに戻る

openfga/openfga

Goopenfga.dev

A high performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar

authorizationpermissionssecurityzanzibaropenfgaentitlementsgogolangfine-grained-authorizationfine-grained-access-controlfgaabac
スター成長
スター
5.5k
フォーク
442
週間成長
Issue
140
2k4k
2023年1月2024年3月2025年5月2026年7月
成果物Go Modulesgo get github.com/openfga/openfga
README

OpenFGA Logo

OpenFGA

Join our community DeepWiki Go Reference GitHub release (latest SemVer) Docker Pulls Codecov Go Report CII Best Practices FOSSA Status Artifact HUB OpenSSF Scorecard SLSA 3


OpenFGA is a high-performance, flexible authorization/permission engine inspired by Google Zanzibar. It helps developers easily model and enforce fine-grained access control in their applications.

Highlights


Table of Contents


Quickstart

[!IMPORTANT]
The following steps are meant for quick local setup and evaluation.
When using the default in-memory storage engine, data is ephemeral and will be discarded once the service stops.

For details on configuring storage backends, tuning performance, and deploying OpenFGA securely in production-ready environments, refer to the documentation: Running in Production.

Run OpenFGA with in-memory storage (⚠️ not for production):

docker run -p 8080:8080 -p 3000:3000 openfga/openfga run

Once running, create a store:

curl -X POST 'localhost:8080/stores' \
  --header 'Content-Type: application/json' \
  --data-raw '{"name": "openfga-demo"}'

Installation

Docker

OpenFGA is available on Docker Hub, so you can quickly start it using the in-memory datastore by running the following commands:

docker pull openfga/openfga
docker run -p 8080:8080 -p 3000:3000 openfga/openfga run

[!NOTE] When the HTTP server is enabled, it will attempt to establish an internal client connection to the gRPC server via unix domain socket. When it is not possible to establish a UDS, the client connection automatically falls back to using a TCP socket.

If running the Docker image using the --read-only option, the --tmpfs option must also be set in order to enabled use of the unix domain socket. For example --tmpfs /tmp

Docker Compose

docker-compose.yaml provides an example of how to launch OpenFGA with Postgres using docker compose.

curl -LO https://openfga.dev/docker-compose.yaml
docker compose up

Homebrew

If you are a Homebrew user, you can install OpenFGA with the following command:

brew install openfga

Precompiled Binaries

Download your platform's latest release and extract it. Then run the binary with the command:

./openfga run

Build from Source

[!NOTE]
Make sure you have the latest version of Go installed. See the Go downloads page.

go install

export PATH=$PATH:$(go env GOBIN) # make sure $GOBIN is on your $PATH
go install github.com/openfga/openfga/cmd/openfga
openfga run

go build

git clone https://github.com/openfga/openfga.git && cd openfga
go build -o ./openfga ./cmd/openfga
./openfga run

Verify Installation

Now that you have installed OpenFGA, you can test your installation by creating an OpenFGA Store.

curl -X POST 'localhost:8080/stores' \
  --header 'Content-Type: application/json' \
  --data-raw '{"name": "openfga-demo"}'

If everything is running correctly, you should get a response with information about the newly created store, for example:

{
  "id": "01G3EMTKQRKJ93PFVDA1SJHWD2",
  "name": "openfga-demo",
  "created_at": "2022-05-19T17:11:12.888680Z",
  "updated_at": "2022-05-19T17:11:12.888680Z"
}

Playground

The Playground lets you model, visualize, and test authorization setups. By default, it’s available at: http://localhost:3000/playground

[!NOTE]
The Playground is intended for local development only.
It can currently only be configured to connect to an OpenFGA server running on localhost.

Disable it with:

./openfga run --playground-enabled=false

Change port:

./openfga run --playground-enabled --playground-port 3001

[!TIP] The OPENFGA_HTTP_ADDR environment variable can be used to configure the address at which the Playground expects the OpenFGA server to be.

For example:

docker run -e OPENFGA_PLAYGROUND_ENABLED=true \
-e OPENFGA_HTTP_ADDR=0.0.0.0:4000 \
-p 4000:4000 -p 3000:3000 openfga/openfga run

This starts OpenFGA on port 4000 and configures the Playground accordingly.

Next Steps

Take a look at examples of how to:

📚 Explore the Documentation and API Reference.

Limitations

MySQL Storage engine

The MySQL storage engine has stricter length limits on tuple properties than other backends. See docs.

💡 OpenFGA’s MySQL adapter was contributed by @twintag — thank you!

Production Readiness

  • ✅ Used in production by Auth0 FGA since December 2021
  • ⚠️ Memory storage adapter is for development only
  • 🗄 Supported storage: PostgreSQL 14+, MySQL 8, SQLite (beta)
  • 📘 See Running in Production

The OpenFGA team treats production-impacting issues with highest priority.

See organizations using OpenFGA in production: ADOPTERS.md. If your organization is using OpenFGA, please consider adding it to the list.

Contributing & Community

We welcome contributions and community participation.

関連リポジトリ
goauthentik/authentik

The authentication glue you need.

PythonPyPIOthersamlsaml-idp
goauthentik.io
22.4k1.7k
apache/casbin

Apache Casbin: an authorization library that supports access control models like ACL, RBAC, ABAC.

GoGo ModulesApache License 2.0casbinaccess-control
casbin.apache.org
20.3k1.8k
dromara/Sa-Token

✨ 开源、免费、一站式 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式 Session 会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证、jwt 集成、API Key 秘钥授权、API 参数签名

JavaMavenApache License 2.0javatoken
sa-token.cc
19k2.9k
casbin/casbin

An authorization library that supports access control models like ACL, RBAC, ABAC in Golang: https://discord.gg/S5UjpzGZjN

GoGo ModulesApache License 2.0casbinaccess-control
casbin.org
18.3k1.7k
ory/hydra

Internet-scale OpenID Certified™ OpenID Connect and OAuth2.1 provider that integrates with your user management through headless APIs. Solve OIDC/OAuth2 user cases over night. Consume as a service on Ory Network or self-host. Trusted by OpenAI and many others for scale and security. Written in Go.

GoGo ModulesApache License 2.0hydraoauth2
ory.com
17.4k1.6k
zitadel/zitadel

ZITADEL - Identity infrastructure, simplified for you.

GoGo ModulesGNU Affero General Public License v3.0samlauthentication
zitadel.com
14.5k1.2k
logto-io/logto

🧑‍🚀 Authentication and authorization infrastructure for SaaS and AI apps, built on OIDC and OAuth 2.1 with multi-tenancy, SSO, and RBAC.

TypeScriptnpmMozilla Public License 2.0authenticationauthorization
logto.io
14.2k1k
open-policy-agent/opa

Open Policy Agent (OPA) is an open source, general-purpose policy engine.

GoGo ModulesApache License 2.0opapolicy
openpolicyagent.org
12k1.6k
tadata-org/fastapi_mcp

Expose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!

PythonPyPIMIT Licenseaiclaude
fastapi-mcp.tadata.com
12k950
apereo/cas

Apereo CAS - Identity & Single Sign On for all earthlings and beyond.

JavaMavenApache License 2.0sso-authenticationauthentication
apereo.github.io/cas/
11.4k4k
stalniy/casl

CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access

TypeScriptnpmMIT Licenseauthorizationpermissions
casl.js.org
7k304
authzed/spicedb

Open Source, Google Zanzibar-inspired database for scalably storing and querying fine-grained authorization data

GoGo ModulesApache License 2.0zanzibarpermissions
authzed.com/docs
6.9k406