Authdog
Log In

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
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 blocked
Check, with the proof
curl 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" ] } }

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

We'll only use this to contact you about Authdog.

01

Model

Describe your object types and relations, and save the first version.

02

Write

Add relationship tuples as users, groups and resources change.

03

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.

Start Building