317 lines
15 KiB
Markdown
317 lines
15 KiB
Markdown
# Auth-Yes — Practical Playbook & High-ROI Use Cases
|
|
|
|
**Classification:** System Operations & Integration Guide\
|
|
**Purpose:** Realistic, practical assessment of day-to-day effort across common
|
|
deployment, integration, and administrative scenarios.\
|
|
**Maintained By:** Auth-Yes IAM Architecture Team\
|
|
**Date:** August 2026
|
|
|
|
---
|
|
|
|
## Executive Overview
|
|
|
|
Auth-Yes is engineered to eliminate the operational friction of legacy IAM
|
|
systems (e.g. Keycloak, Okta, Auth0) while delivering mathematical zero-trust
|
|
guarantees. Below is a comprehensive assessment of the **11 core high-ROI
|
|
operational and integration scenarios**.
|
|
|
|
```
|
|
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
│ EFFORT & COMPLEXITY MATRIX │
|
|
├────┬─────────────────────────────────────────────────┬──────────────────┬────────────────────────┤
|
|
│ # │ Scenario / Use Case │ Difficulty Level │ Time / Code Required │
|
|
├────┼─────────────────────────────────────────────────┼──────────────────┼────────────────────────┤
|
|
│ 1 │ Appliance Setup & Cold Boot │ Low (Zero-Touch) │ 1 Command / < 2 min │
|
|
│ 2 │ Tier 1 Ingress Auth (Grafana, Portainer, etc.) │ Minimal │ 3 Traefik Docker labels│
|
|
│ 3 │ Tier 2 Custom Web/SSR Apps (ed-droid, Next.js) │ Minimal │ 2 Lines of Code │
|
|
│ 4 │ Headless Edge Daemons & IoT (RFC 9421 Sigs) │ Low │ HTTP Signature Headers │
|
|
│ 5 │ Internal Workload Mesh (mTLS & SPIFFE FFI) │ Minimal │ Auto-injected SVIDs │
|
|
│ 6 │ Live Telemetry & WebSockets (Ghost Cockpit) │ Minimal │ 1 Middleware Guard │
|
|
│ 7 │ Lost Device Recovery (2-of-3 SSS / BIP-39) │ Zero Admin Toil │ Self-Service UI │
|
|
│ 8 │ Incident Response & Fleet-Wide Revocation │ Low │ 1-Click / < 30µs Mesh │
|
|
│ 9 │ Multi-App RBAC & Scope Provisioning │ Low │ Simple Web UI Form │
|
|
│ 10 │ Cryptographic Compliance & Audit Verification │ Zero │ Automated Merkle Logs │
|
|
│ 11 │ Ephemeral Guest Sandboxes & Open Trial Access │ Minimal │ 1-Click / Zero Passkey │
|
|
│ 12 │ Hybrid Cloud Edge & Remote Tunnel Ingress │ Low │ Zero-Touch Tunnel / DoH│
|
|
└────┴─────────────────────────────────────────────────┴──────────────────┴────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
### Use Case 1: Setting Up the Auth System from Scratch
|
|
|
|
- **Difficulty Level:** **Low (Near Zero-Touch / < 2 Minutes)**
|
|
- **What you actually have to do:**
|
|
1. Run `deno task setup` (generates `infra/stack.env` with cryptographically
|
|
secure random secrets).
|
|
2. Run `docker compose -f infra/compose.yml up -d`.
|
|
3. Navigate to `https://auth.atyg.org/register` in your browser and register
|
|
your first WebAuthn passkey (touch your YubiKey / Touch ID).
|
|
- **Why it's painless:**
|
|
- The database schema (`users`, `apps`, `grants`, `passkeys`, `audit_ledger`)
|
|
auto-migrates idempotently on first boot.
|
|
- The first registered user automatically becomes the **Global Admin**
|
|
(`isGlobalAdmin`). You never have to manually run SQL scripts to bootstrap
|
|
admin access.
|
|
|
|
---
|
|
|
|
### Use Case 2: Adding Auth to Tier 1 Off-the-Shelf Apps (Grafana, Portainer, PGAdmin, etc.)
|
|
|
|
- **Difficulty Level:** **Minimal (Zero Code / 3 Docker Labels)**
|
|
- **What you actually have to do:**
|
|
- Add the Traefik ForwardAuth middleware label to your container's
|
|
`compose.yml`:
|
|
```yaml
|
|
services:
|
|
grafana:
|
|
image: grafana/grafana:latest
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.grafana.rule=Host(`grafana.atyg.org`)"
|
|
- "traefik.http.routers.grafana.middlewares=authyes-forwardauth@docker"
|
|
```
|
|
- **Why it's painless:**
|
|
- **Dual-Response Protocol:** If a human opens a protected app in a browser
|
|
(`Accept: text/html`), Auth-Yes immediately issues a `302 Redirect` to
|
|
`https://auth.atyg.org/login?redirect=...`. Upon touching their passkey, the
|
|
user is automatically bounced back to the exact URL/tab they originally
|
|
requested.
|
|
- **Headless & API Transparency:** Background scripts, daemons, and cURL calls
|
|
receive clean `401 Unauthorized` responses without getting stuck in HTML
|
|
redirect loops.
|
|
- **Open Redirect Protection (CWE-601):** The return URL is strictly validated
|
|
against approved domains (`*.atyg.org` and localhost) to eliminate phishing
|
|
attack vectors.
|
|
- Auth-Yes validates the wildcard session cookie and injects
|
|
`X-Forwarded-User: alice` downstream so Grafana or Portainer automatically
|
|
logs the user into their profile.
|
|
|
|
---
|
|
|
|
### Use Case 3: Adding Auth to Tier 2 Custom Web/SSR Apps (ed-droid, Hono, Next.js, Remix)
|
|
|
|
- **Difficulty Level:** **Minimal (2 Lines of Code)**
|
|
- **What you actually have to do:**
|
|
- **Option A (Instant Ingress Hydration on first SSR byte):**
|
|
```typescript
|
|
// Read the injected grant vector directly from the initial request:
|
|
const userId = req.headers["x-forwarded-user-id"];
|
|
const scopes = req.headers["x-forwarded-scopes"]?.split(",") || [];
|
|
```
|
|
- **Option B (In-App SDK Route Guard with sub-30µs memory cache):**
|
|
```typescript
|
|
import { authMiddleware, requireScope } from "@auth-yes/sdk/hono";
|
|
|
|
app.use("/admin/*", authMiddleware(authSdk), requireScope("admin"));
|
|
```
|
|
- **Why it's painless:**
|
|
- ForwardAuth injects pre-evaluated user identity and RBAC grants at the edge
|
|
for instant SSR UI hydration.
|
|
- In-app SDK verification leverages Valkey 8 RESP3 client tracking, validating
|
|
tokens in local RAM in $<30\mu s$ without database round-trips.
|
|
|
|
---
|
|
|
|
### Use Case 4: Headless Edge Daemons & IoT Device Authentication
|
|
|
|
- **Difficulty Level:** **Low (RFC 9421 HTTP Message Signatures)**
|
|
- **What you actually have to do:**
|
|
- Register the edge node's Ed25519 public key once via the admin API:
|
|
```bash
|
|
curl -X POST https://auth.atyg.org/api/admin/hwk \
|
|
-H "Cookie: session_id=..." \
|
|
-d '{"jwk":{"kty":"OKP","crv":"Ed25519","x":"..."}, "name":"telemetry-drone-01"}'
|
|
```
|
|
- Edge devices send signed HTTP requests with `Signature-Input` and
|
|
`Signature` headers.
|
|
- **Why it's painless:**
|
|
- Eliminates fragile static API tokens and shared secrets.
|
|
- Signatures survive proxy TLS termination and are validated in $<5\mu s$ via
|
|
Valkey $O(1)$ fingerprint set checks (`SISMEMBER auth:hwk:fingerprints`).
|
|
|
|
---
|
|
|
|
### Use Case 5: Zero-Touch Internal Microservice mTLS & SPIFFE Mesh
|
|
|
|
- **Difficulty Level:** **Minimal (Zero Manual Certificate Management)**
|
|
- **What you actually have to do:**
|
|
- Internal backend daemons query the local SPIRE agent over a UNIX domain
|
|
socket via `spire_ffi`.
|
|
- The SDK automatically validates the client's SPIFFE ID (e.g.
|
|
`spiffe://atyg.org/ed-droid`) against the authorized application registry.
|
|
- **Why it's painless:**
|
|
- Native Rust FFI crate (`spire_ffi`) handles short-lived X.509 SVID rotation
|
|
in the background every 60 minutes.
|
|
- No manual PKI root management, zero CA expiration panics, and zero hardcoded
|
|
mTLS secrets.
|
|
|
|
---
|
|
|
|
### Use Case 6: Live Telemetry & WebSockets (The Ghost Cockpit Protocol)
|
|
|
|
- **Difficulty Level:** **Minimal (1 Middleware Guard in Hono)**
|
|
- **What you actually have to do:**
|
|
- Wrap your WebSocket endpoint with the session guard in `sdk/hono.ts`:
|
|
```typescript
|
|
app.get(
|
|
"/ws/telemetry",
|
|
upgradeWebSocket((c) => {
|
|
const token = getCookie(c, "session_id");
|
|
const guard = createWebSocketGuard(authSdk, token);
|
|
return {
|
|
...guard.handlers,
|
|
onMessage(event, ws) {
|
|
// Process telemetry data stream
|
|
},
|
|
};
|
|
}),
|
|
);
|
|
```
|
|
- **Why it's painless:**
|
|
- When a session expires or is revoked, the SDK sends
|
|
`{ "type": "AUTH_REVOKED", "reason": "SESSION_EXPIRED" }` and cleanly closes
|
|
the socket.
|
|
- The frontend freezes UI state in memory, triggers an ambient WebAuthn
|
|
prompt, and seamlessly resumes telemetry without refreshing the page or
|
|
losing user input.
|
|
|
|
---
|
|
|
|
### Use Case 7: User Device Loss & Zero-Downgrade Self-Recovery
|
|
|
|
- **Difficulty Level:** **Zero Admin Workload (Cryptographic Self-Service)**
|
|
- **What you actually have to do:**
|
|
- **User Action:** The user visits `https://auth.atyg.org/recover`, types
|
|
their 12-word BIP-39 recovery voucher, enters their recovery PIN, and
|
|
touches their new replacement YubiKey or phone.
|
|
- **Admin Action:** None.
|
|
- **Why it's painless:**
|
|
- Uses the **2-of-3 Shamir's Secret Sharing (SSS) Matrix**:
|
|
- _Share 1 (Device Share):_ Stored in browser IndexedDB, encrypted by
|
|
WebAuthn PRF.
|
|
- _Share 2 (Hot Share):_ Stored in server PostgreSQL, encrypted with
|
|
Argon2id ($t=12, m=64\,\text{MiB}$).
|
|
- _Share 3 (Cold Voucher):_ Printed 12-word phrase given to user during
|
|
onboarding.
|
|
- Combining any 2 shares reconstructs the master secret in client memory to
|
|
enroll a new passkey.
|
|
- Eliminates insecure SMS/email reset backdoors and relieves admins of manual
|
|
account unlock tickets.
|
|
|
|
---
|
|
|
|
### Use Case 8: Incident Response & Fleet-Wide Session Revocation
|
|
|
|
- **Difficulty Level:** **Low (1-Click / Sub-30µs Mesh Invalidation)**
|
|
- **What you actually have to do:**
|
|
- Click **"Revoke All Sessions"** for a compromised user or token in the
|
|
Auth-Yes management dashboard.
|
|
- **Why it's painless:**
|
|
- Valkey 8 RESP3 `BCAST` push tracking broadcasts invalidations across all
|
|
backend nodes and edge proxies in $<30\mu s$.
|
|
- Downstream microservices immediately drop L1 cache entries and sever active
|
|
WebSocket feeds without polling loops or database queries.
|
|
|
|
---
|
|
|
|
### Use Case 9: Multi-App RBAC & Scope Provisioning
|
|
|
|
- **Difficulty Level:** **Low (Web UI Management or Invite Codes)**
|
|
- **What you actually have to do:**
|
|
- **Option A (Admin Console):** Select User $\rightarrow$ Select Application
|
|
$\rightarrow$ Assign Role (`admin`, `operator`, `viewer`).
|
|
- **Option B (Automated Onboarding Invite):** Generate a pre-scoped invite
|
|
link:
|
|
```bash
|
|
curl -X POST https://auth.atyg.org/api/admin/invites/create \
|
|
-H "Cookie: session_id=..." \
|
|
-d '{"appId":"...", "role":"operator", "maxUses":1, "autoActivate":true}'
|
|
```
|
|
- **Why it's painless:**
|
|
- New users redeeming the invite link automatically enroll their passkey and
|
|
are provisioned with the exact role and scopes for that application.
|
|
|
|
---
|
|
|
|
### Use Case 10: Cryptographic Compliance & Tamper-Evident Audit Logging
|
|
|
|
- **Difficulty Level:** **Zero Operational Overhead (Append-Only RFC 6962
|
|
Ledgers)**
|
|
- **What you actually have to do:**
|
|
- Auditors query the cryptographically sealed audit ledger:
|
|
```bash
|
|
curl https://auth.atyg.org/api/admin/audit/verify \
|
|
-H "Cookie: session_id=..."
|
|
```
|
|
- **Why it's painless:**
|
|
- Every login, invite redemption, scope grant, and session revocation is
|
|
hashed into an append-only RFC 6962 Merkle Tree.
|
|
- Produces Signed Tree Heads (STHs) and mathematical inclusion proofs. Even an
|
|
adversary with direct `root` access to the PostgreSQL database cannot alter
|
|
past audit logs without cryptographic detection.
|
|
|
|
---
|
|
|
|
### Use Case 11: Ephemeral Guest Sandboxes & Open Trial Access (Zero-Friction Demo to In-Flight Passkey Upgrade)
|
|
|
|
- **Difficulty Level:** **Minimal (1-Click Guest Issuance / Zero Passkey
|
|
Required Upfront)**
|
|
- **What you actually have to do:**
|
|
- **Option A (1-Click Guest Sandbox Access):** When a visitor clicks "Try
|
|
Demo", issue a scoped ephemeral session:
|
|
```typescript
|
|
// In ed-droid or host app:
|
|
const res = await fetch("https://auth.atyg.org/api/guest/session", {
|
|
method: "POST",
|
|
body: JSON.stringify({ appId: "ed-droid", ttlSeconds: 7200 }),
|
|
});
|
|
// Sets wildcard session cookie on .atyg.org with scopes: ["guest", "trial"]
|
|
```
|
|
- **Option B (Route Handler Trial Scoping):** Check the injected grant header:
|
|
```typescript
|
|
app.get("/workspace", (c) => {
|
|
const scopes = c.req.header("x-forwarded-scopes")?.split(",") || [];
|
|
const isGuest = scopes.includes("guest") || scopes.includes("trial");
|
|
|
|
return c.html(<Workspace isGuest={isGuest} />);
|
|
});
|
|
```
|
|
- **Option C (In-Flight Upgrade to Permanent Passkey):** When the guest clicks
|
|
"Save Workspace", trigger ambient WebAuthn passkey registration on the spot
|
|
without reloading the page or losing active session state.
|
|
- **Why it's painless:**
|
|
- Eliminates the drop-off barrier of forcing passkey enrollment before users
|
|
experience your product.
|
|
- ForwardAuth transparently sets `X-Forwarded-Scopes: guest,trial` downstream.
|
|
- Upgrades convert the ephemeral guest ID to a permanent passkey account
|
|
seamlessly in memory.
|
|
|
|
---
|
|
|
|
### Use Case 12: Hybrid Cloud Edge & Remote Tunnel Ingress (Cloudflare Tunnel, Split-Horizon DNS & WAN Resiliency)
|
|
|
|
- **Difficulty Level:** **Low (Zero-Touch Tunnel Ingress / Transparent
|
|
Split-Horizon)**
|
|
- **What you actually have to do:**
|
|
1. Map public hostnames in Cloudflare Zero Trust Tunnels (`cloudflared`)
|
|
pointing `auth.atyg.org` and downstream subdomains (e.g.
|
|
`ed-droid.atyg.org`) to internal Traefik (`http://192.168.1.10:80` or
|
|
`https://192.168.1.10:443` with "No TLS Verify").
|
|
2. Local LAN devices resolve directly to `192.168.1.10` via local router/DNS,
|
|
while remote mobile clients resolve via Cloudflare Anycast edge proxies.
|
|
3. Auth-Yes handles ForwardAuth 302 redirects and session cookie scoping
|
|
transparently across both local LAN and remote WAN ingress vectors.
|
|
- **Audit & Architectural Resilience Verification Requirements:**
|
|
- **Cookie Scope Parity:** Ensure `Set-Cookie` with wildcard domain
|
|
`.atyg.org` is preserved across reverse proxy tunnels without origin
|
|
truncation.
|
|
- **Open-Redirect & Deep-Link Preservation:** Verify
|
|
`https://auth.atyg.org/login?redirect=...` deep-links survive multi-hop
|
|
proxies and DoH mobile resolvers.
|
|
- **Negative DNS Caching & Mobile DoH Isolation:** Validate system behavior
|
|
when client mobile OS resolvers transition between Wi-Fi split-horizon DNS
|
|
and cellular DNS over HTTPS (DoH).
|
|
- **Latency SLA:** Verify ForwardAuth edge lookup latency remains $<50\mu s$
|
|
on internal LAN and $<10$ms over Cloudflare Tunnel edge.
|