AuthBox
Need-to-know, from one box to the whole network

Access by mission. Data by marking.
Everywhere you run.

AuthBox is the identity and authorization server for organisations that hand out access by need-to-know. A certificate says who you are; a mission says why you are here; a marking says what may leave.

It plugs into the enterprise you already run — a corporate directory over LDAP, provisioning over SCIM, single sign-on over SAML and OIDC, a certificate authority of your own — or stands up a new organisation in a box. One box runs alone or airgapped; many chain into a federation where each keeps deciding for itself. Every decision is denied by default and signed.

AuthBox — secure by design, connected by nature.
Issuer
CN=demo-org rehearsal issuing,O=example,C=US
Subject
CN=Gallagher Jana B jbgalla1,OU=D11,O=example,C=US
Clearance
SECRET · compartment CONTINENTAL
Missions
field-operations, read-directory

Mutual TLSCMVP #5247fips140=onlyDeny by default

An identity is the (issuer, subject) pair on a certificate — nothing else. The example is fictional: O=example.

How it works

One question, asked the same way everywhere.

How AuthBox works, on one page: the entity, the mission, the marking, the door and the receipt, and the one rule that joins them.
Secure by design — the refusals

The safest features are the ones it doesn't have.

Most of what makes AuthBox trustworthy is what it declines to do, and each refusal below is pinned by a test.

passwords.

Mutual TLS is the only login. A client without a certificate this deployment issued or trusts never completes the handshake.

phone-home.

Nothing reaches out to us — not for updates, not for revocation, not for a typeface. The only addresses it dials are ones you configured.

silent allow.

An operation that declares no requirement denies everybody. A mission that does not exist is refused exactly like one the caller may not know exists.

trusted peer by default.

A partner's certificate can complete a handshake and still be refused at authorization. Handshake is not entitlement.

Isolation ∕ chained

One box, or a federation of them. Same binary.

One box: the directory and its policy decision point, the certificate authority, the console and LDAPS, the signed audit chain — every capability in one sealed instance, no network required.

Alone.

Chained: HQ publishes a signed bundle, a region adopts and republishes it, an enclave adopts it; a partner's trust anchor is appended to the pool without its data being believed; origin survives every hop and freshness is budgeted.

Chained.

The shapes people deploy

Choose the shape first. It is the same binary in every one.

Ten deployments, each a topology this repository stands up and proves. One rule runs through all of them: a door per authority, never a door per process.

Who decides, and where the door goes →
One proxy

Protect a service with an authorizing proxy.

One authorizing proxy in front of three services: the caller's certificate ends at the proxy, which decides and forwards; the same proxy fronts one service, many services told apart by name, or a whole Kubernetes cluster, reading its routes from Service annotations

For a service that knows nothing about certificates and cannot be changed to learn. The caller's identity arrives verified, and every request carries a receipt: a signed record of the decision that let it through.

Read the scenario →
Edge fleet

A fleet of edge proxies around a central AuthBox.

A central AuthBox publishes signed bundles outward to three edge boxes — two proxies and a read-only replica — each of which decides there; thin dotted arrows carry receipts back to the centre

One AuthBox in the middle, proxies and read-only replicas at the edges. Each edge decides from the bundle it holds, so an outage at the centre is not one at the door.

Read the scenario →
Team CA

Your own certificate authority for a team.

One host: the first-boot wizard on the loopback address leads to a certificate authority, then to invitations, then to a console — every step on the same machine, and the root never leaves it

For a team that wants its own certificates and has no public key infrastructure. The first boot stands up the authority, and the root never leaves the host. It also asks for your own vocabulary, the companion processes you want beside it and the corporate services you connect to — with or without a browser.

Read the scenario →
Federation

A federation across organisations.

A chain of authorities: headquarters publishes a signed bundle to a region, which republishes to an enclave, and every bundle carries an origin mark; a side lab on the other diagonal keeps its own authority, with its root appended to the trust pool rather than its data adopted

Organisations that must work together and cannot merge their directories. Each keeps its own authority, and every record carries its origin.

Read the scenario →
Your organisation

Bring the organisation you already have.

Three sources on the left — a directory of people and groups, a PKI with its root and CRL, and a mail relay — send arrows into a central AuthBox marked adopts, never owns; from there, arrows carrying small envelope marks fan out to two edge proxies, each deciding locally, and one of the proxies stands in front of a service

An organisation that already has a directory, a PKI and a mail relay. AuthBox adopts what they say and owns none of it.

Read the scenario →
Labelled feed

Move labelled data only to the services cleared for it.

One producer holds a single long-lived connection to a front door, which reads the label on each record and never its body; two arrows leave the door, each carrying a signed batch receipt, to two ingest services — one cleared for SECRET, one cleared for CONFIDENTIAL — and a record labelled SECRET reaches the first and never the second, where the refusal is recorded

For a feed with two destinations cleared to different levels. The door decides on each record's label alone, and never opens one.

Read the scenario →
Classified records

Hand out classified records only to the cleared.

Two people ask the same front door for the same six records; the application behind the door answers each request with a label naming that record's classification and never decides anything itself; the door compares the label against what each person is cleared for, so the person cleared for everything receives all six records with a receipt naming what was compared, and the person cleared only to the lowest level receives two of them and a plain refusal for the rest, with the reason only in the log

For an application whose records are not all for one audience. It labels every answer, and the door refuses whole what the caller is not cleared for.

Read the scenario →
Sealed records

A file that stays classified after it is copied.

One classified file is sealed once and then copied everywhere — a laptop, a backup, a partner's share — and every copy is unreadable on its own; two people ask a key door for the key that opens it, and the door asks the same directory that decides everything else here: the cleared person receives the key and reads the file, the person who is not cleared is refused and holds only ciphertext, and the door itself never sees the file and keeps no copy of any key

For records that must stay classified after they leave you. Anybody can copy one and nobody can read it: a door holds the key.

Read the scenario →
Logging in

SSH access to your hosts and your cluster's nodes.

One person holding a single key asks AuthBox, which reads the same groups and missions as everything else and works out which accounts they may use; the certificate it returns expires in hours and is renewed while they work; it opens the deploy account on two servers and the node-admin account on a cluster node, each of which needed only two lines added to the configuration it already had, and the root account is refused

Who may log in to which machine, and as which account, is this deployment's own policy. No key is copied anywhere.

Read the scenario →
Service identity

Give a service a certificate.

A project admin creates a service identity from the workspace; AuthBox derives the name, bounds it to the hostnames the project published and mints one enrolment token, issuing no key of its own; the key is then born in one of three places — an ACME client on the server itself, the door that fronts the site, or the courier, which hands it over once and forgets it — and a download of a key AuthBox generated is not offered at all

For a web server, a test site or a mission’s API. The project owns the identity; the key is born where it is used and never handed over.

Read the scenario →
Where it runs

A laptop with the cable out, or a cluster.

The same binary on a laptop with the cable out, on one host, in compose, or across a cluster.

Read the scenario →
Capabilities — shipped and tested

What's in the box.

Every capability below is in the binary today, each proven by a named test. Nothing here is a roadmap.

Directory

Entities, projects, missions

People, services and projects. A mission is a named job someone holds, and authorization is membership intersected with a mission intersected with attributes. A mission or a record you are not cleared for is absent rather than forbidden.

PKI

Certificate authority

Issues, renews, rotates and revokes. A partner's root is appended to the trust pool, its data never adopted.

Federation

Signed authority bundles

Snapshots published on a cadence, each with a freshness budget, and origin that survives every hop.

Console

Server-rendered, scripting optional

Every page works with JavaScript off. WCAG 2.1 AA and Section 508, checked rather than asserted.

Portal

The person's own door

For the people the console is not for: their own missions, requests and agreements.

Questions

Ask before a door does

Would this person pass, and why not. Can they? →

Access

Just-in-time grants

Brokered through approvers, granted for a window, live only once the requester accepts with their own key.

Policy

Obligations over a population

Standing conditions — training currency, a signed MOU — reported across a group as a fleet.

Audit

A provable decision record

Every permit and every deny in a hash-chained, countersigned log, with the clause that decided it.

Integrations — what it works with

It fits what you already run.

Each is in the binary, switched on by a setting, and proven by a named test. What your systems send is verified before it is read; what AuthBox decides never leaves as a claim.

Sign-in for your applications

OpenID Connect and SAML

Your web applications log people in with the certificate they already hold. An OpenID Connect provider with PKCE and certificate-bound tokens; a SAML 2.0 identity provider for the applications that speak nothing newer. SAML, explained →

Provisioning

SCIM, LDAP and Active Directory

Joiners and leavers arrive from the system that already knows them: a SCIM 2.0 adapter pulling from a directory or taking a push from Okta or Entra, an LDAP connector for Active Directory. Each runs outside and produces one signed bundle, all AuthBox takes in.

Certificates and hardware

ACME, EST, OCSP, CRLs, HSMs

Enrol servers over ACME with device attestation, or devices over EST. Revocation over OCSP and CRLs. Keys in a PKCS#11 hardware module, and post-quantum ML-DSA certificates beside the classical set.

Policy and signals

AuthZEN, Rego, Cedar, CAEP

Ask the decision as an API (OpenID AuthZEN), export the policy as Rego or Cedar for the engine you run, and let your other systems learn of revocations and lapses as shared signals (CAEP). Or take those answers in your own API's shape, from your OpenAPI document and a mapping proved at load.

Data and labels

OpenTDF, STANAG 4774

Classified responses labelled per request and sealed to a key access service that releases a data key only to a caller cleared for it; NATO confidentiality labels translated at the seam rather than re-modelled.

Object storage

S3, sealed, per mission

A separate add-on that holds the files so AuthBox never does. A bucket is a mission ↓

Shell and infrastructure

SSH, Kubernetes, DNS

An SSH certificate authority for your hosts and cluster nodes, SSH through the door by name, an ingress mode that follows your Kubernetes Services, and authoritative DNS with DNSSEC for a federation's names. SSH, explained →

Operations

Prometheus, your SIEM, PostgreSQL

Metrics in Prometheus form, structured logs, a signed audit export your SIEM can prove it received, a transparency log, and a store on files, PostgreSQL or MySQL.

Every setting behind these, and the test that proves each one, is in the support matrix.

Object storage — a separate add-on

A bucket is a mission.

An S3-compatible store that holds the files, so AuthBox never does. Its own binary and image, deployed beside the box.

The file store, a level deeper: the key access door, the object store, and a shelf sealed per mission.
ONE ADDRESS AND WHAT DECIDES EACH PART OF IT /s/us.authbox.store/general-s/plan.txt LEVEL PROJECT MISSION KEY dictionary group DN the portal you nothing here was configured twice · nothing here is a policy beside the object
Address

The address is the marking

A level, a project, a mission — read off the address, not out of a policy written beside it.

Shelves

A bucket is a mission

Author one in the portal and its storage exists, held by exactly its holders. The general shelves are seeded missions, held by everyone this authority holds.

At rest

Sealed per mission

An object at a sealed level is ciphertext, opened by the key access door only for a holder of that mission. A copied volume opens for nobody.

Mutual TLS only, no presigned links, one bound per object — and the store never writes a mission.

Filing a file → How a sealed file travels →
The posters

Every picture, one product.

How AuthBox works — the model on one page One box — every capability in one place Chained — a federation of boxes, same binary The front door — marked routes and streams Missions, projects, brokerage and agreements Login with AuthBox — OIDC, SAML, SCIM, LDAPS PKI — certificates, custody and the SSH authority The file store — sealed per mission Federation — bundles, regions, enclaves and names Evidence — the audit chain, receipts and the register
Next to what you already run

Four things it is mistaken for.

THE SAME REQUEST MEETS AND AFTERWARDS IT CAN PROVE SERVICE MESH workload to workload WHICH WORKLOAD CALLED not who was behind it IDENTITY PROVIDER at sign-in WHO SIGNED IN, ONCE at the start, then it stops INGRESS CONTROLLER terminates and routes NOTHING ABOUT WHO it forwards, by design AUTHBOX per request THIS REQUEST, DECIDED a receipt anyone can check

Each is the better tool for the job it was built for, and this replaces none of them. The difference is the axis above: what can be proved afterwards, by somebody who was not there.

How it compares, one by one →
Evidence — not assertion

Every claim is a numbered ruling with a test behind it.

AuthBox is built for the people who sign the authorization to operate. Every normative decision is a numbered ruling in a register with the test that enforces it, so a rule refactored away fails the build.

Evidence, a level deeper: the audit chain, the receipts a caller keeps, and the proved register behind every claim.
Cryptography
FIPS 140-3

In the FIPS build: Go's native FIPS module, CMVP certificate #5247, under fips140=only. Non-approved algorithms cannot be selected.

Rulings
701+

Numbered requirements, each enforced by a named test; 805 declared mutations, applied by the gate to prove they bite.

Posture
Deny

By default, everywhere. An undeclared operation denies everybody, so nothing is permitted by omission.

Package
OSCAL

The control catalogue as a component for a FedRAMP-shaped system security plan.

The evidence register, capability by capability →

See a day of it →

Everything a deployment changes is data →

The FIPS build is the default: its mode is compiled in, and the process refuses to start under any other. The open build is the same product without that claim; the operator guide's two postures page says which to take.

A release says how it was built, and the media verifies itself. A signed in-toto statement carrying SLSA Provenance v1 rides with the artifacts, sealed by one offline key, and the verifier on the media checks it offline.

Nothing is fetched while it builds, and every piece of somebody else's code carries its licence and a reason in a register the gate checks.

Get it running

Up in one command. Offline by design.

One command brings up the reference deployment and walks it with a live smoke, on a laptop with no network. Start at apps.<your domain>: the front door's directory.

Production ships as a static binary, or as systemd, compose and Kubernetes manifests. An airgapped install copies it in by hand — which is the point.