Fine-Grained Authorization
Permissions that follow your objects
Share a document, inherit from a folder, block one user. Model relationships once, then ask one API who can do what to which object, and see why.
- A model language you can read
- Types, relations, and rules like viewer from parent, saved as versions.
- Answers with proof
- A check returns the path that granted access, not only yes or no.
- Assertions before production
- Save the checks that must keep passing and run them beside the model.
- Scoped clients, seven-day logs
- Each service gets only the access it needs, and every call is searchable.
model
schema 1.1
type user
type group
relations
define member: [user]
type folder
relations
define owner: [user]
define viewer: [user, group#member] or owner
type doc
relations
define parent: [folder]
define blocked: [user]
define viewer: [user, user:*] or viewer from parent
define can_read: viewer but not blockedcurl https://api.authdog.com/fga/v1/check \
-H "Authorization: Bearer $AUTHDOG_ENV_API_SECRET" \
-d '{
"object": "doc:roadmap",
"relation": "can_read",
"subject": "user:angela",
"trace": true
}'
{ "allowed": true,
"trace": {
"label": "doc:roadmap#can_read",
"children": [ "folder:eng#viewer",
"group:eng#member",
"Direct Users",
"user:angela" ] } }Model
Describe who can do what, once
Write the model in an OpenFGA-style language. Authdog stores each save as a version with its own ID, and draws the model as a graph while you type.
Decide
Answer the question your app actually asks
One REST API for per-object checks, batches, and the lists a page needs. Authenticated with an environment API secret.
Build and test
A workspace, not a text file
The console module walks you from an empty store to a tested model, with the model, the data and the tests side by side.
Operate
Run it in production with the controls you expect
Know who called what, give each service only the access it needs, and keep environments apart.
Free trial
Request a free trial
Tell us what you're building and we'll get you set up with a trial, plus someone who can answer questions as you evaluate.
- Full access to the platform while you evaluate it
- Help wiring it into your stack from someone who knows it
- Answers on SSO, SCIM, residency, and compliance requirements
Model
Describe your object types and relations, and save the first version.
Write
Add relationship tuples as users, groups and resources change.
Check
Ask the API before every protected action, and assert the cases that matter.
Model access the way your product shares things
Start with the console module, then call the API from your backend.