AuthBox

Documentation embedded in this build.

Sign in with the card you already carry

In short

For people who already carry a PIV or CAC card issued by an authority this box never ran. The door admits the card's sign-in certificate, refuses the same card's signature certificate, checks the issuer's own revocation list, and records a person it has never seen for an administrator to place in a group.

What it is for

Some people already hold a smart card — a PIV card, a CAC — from an authority that is not this box: a federal agency's PKI, a large company's badge system. They should sign in with it, and this box should issue them nothing to do so. AuthBox trusts the card's authority as a named issuer set beside its own, and every door of the deployment admits the same set.

The card at the door: a person presents the card's certificate; the door admits it only with the authentication policy, refuses the same card's signature certificate, checks it against the issuer's own list — fetched ahead of time from the address the certificate names — and the decision leaves a record an administrator can place in a group.A CARD FROM ANOTHER AUTHORITYAND WHAT THE DOOR LEAVESTHEIR ID CAa PKI this box never ranTHEIR LISTwhere the card pointsfetched ahead, never in the handshakethe cardPIV auth policyDOORits signature certificate: refusedAUTHBOXissued nothingRECORDfirst seenan admin adds a group

A card carries several certificates chained to one authority. The door admits only the one whose policy says it is for signing in, and refuses the card's signature certificate at the handshake. It checks the issuer's own revocation list, fetched ahead of time from the address each certificate names, never during the handshake. A person nobody has seen is recorded on first sign-in with no group at all, and an administrator places the record where it belongs.

Under that recording rule a card holder is an entity of this deployment, so every grant made to "everyone" reaches them the moment they first sign in. A deployment that does not want that refuses unknown cards, or grants to named groups.

This is not an authority. AuthBox reads the card; it never mints one.

The topology

One authority you already have, one box, and the doors in front of it.

   THEIR ID CA  --publishes its list at the address on each card-->  fetched ahead
        |                                                                 |
        | issued                                                          v
   the card ---- sign-in certificate ---->  DOOR  ---->  AUTHBOX  ---->  RECORD
                 (policy: PIV auth)          |           issues           first seen,
                                             |           nothing          no groups
   the card ---- signature certificate --X   refused at the handshake

The command line, SSH and the companions take an AuthBox certificate the card enrolls for: a card holder presents the card once at the enrollment listener and leaves with a certificate for the places a card cannot reach. Signing documents with a card is not built (plan 155 records why).

Stand it up

A card from another authority: the certificate a person already carries, issued by a PKI this box never ran, admitted at the door by the policy it asserts.cardDOORAUTHBOXissues none
$ docker run --rm authboxus/authbox-eval -evaluate -scenario card -print docker | sh
$ docker logs writer

A card from another authority. The evaluation image mints a stand-in authority — a root and one ID CA, named "Stand-in" — and a card holder whose certificate carries the PIV authentication policy and a user principal name. Import eval-card-holder.p12 from the credentials page on port 8080, open the console on port 8443 at /ui, and you are recorded; the door on port 8444 publishes the card's own name, card. under the door's domain.

The evaluation's card is a stand-in PKCS#12 file; a real card is the browser's own, and the recipe is the same with the issuer set pointed at the real authority's anchors. The stand-in's lists are signed once, so the evaluation's answers let every door hold a list for thirty days rather than one (crl_max_age: 720h); after that every door refuses the card as stale, and a fresh volume is a fresh stand-in. The evaluation runbook says what each container is and how it ends.

What the smoke proves

The scenario tier stands up the box, a door and a static server publishing the stand-in's lists at the addresses its certificates name. In order: the card holder signs in at the box and is recorded; an administrator places the record in a group; the door's route that requires the card's sign-in policy admits it; the same person's signature certificate is refused at the handshake; a revoked card is refused once the fetcher's round brings its list, and the refusal is in the audit chain; and the card holder enrolls with the card and is answered with the certificate it issued.

The evaluation's own proof runs the printed recipe: the card holder is answered as a person with the card's attributes and a first-seen record on the audit chain, the signature certificate is refused, and the door's card route admits the card and refuses a certificate this box issued.

Every proof here is against the stand-in until a real card is tried.

Read on