7.3 KiB
7.3 KiB
Identity Provider Architecture Audit Report
1. Implementation Status Matrix
| Component | Status | File Paths / Notes |
|---|---|---|
| API Gateway / Auth Hub (Deno/Hono service) | [In Progress] | auth-yes/server/main.ts (Endpoints exist as 501 Not Implemented stubs), core/api-server.ts (Partial implementations in main app) |
| Auth UI (administration, activation, recovery, and session review) | [Pending] | No Auth UI implementation or auth-ui Compose service exists, although the target architecture requires both. |
| Shared App SDK (Middleware and API-client wrappers) | [In Progress] | auth-yes/sdk/mod.ts (Basic class structure exists, missing Valkey Client-Side Caching with RESP3 Invalidation) |
| PostgreSQL Identity Schema | [In Progress] | core/db.ts implements Users, Passkeys, Edge_nodes, and Sessions, but lacks application metadata, RBAC and invitation records, audit records, account status, and display_name required by the specification. |
| Valkey Session Cache Integration | [Pending] | Mentioned in setup (infrastructure/setup.ts auth-valkey) but no actual integration logic in code yet. |
| Monorepo Workspace (deno.json) & Multi-stage Dockerfile | [Pending] | deno.json is completely missing. Dockerfiles (Dockerfile, auth-yes/Dockerfile) exist but are single-stage and need multi-stage refinement. |
| Setup CLI Utility (infrastructure/setup.ts & compose generators) | [In Progress] | infrastructure/setup.ts supports .env.auth and compose.auth.yml generation, but lacks some strict zero-trust configs. |
| WebAuthn Registration, Authentication & Related Origins | [In Progress] | core/api-server.ts implements basic ceremonies, but uses attestationType: "none" and does not provide the required /.well-known/webauthn Related Origins document. auth-yes/server/main.ts contains only stubbed endpoints. |
| Add-on Modules (Audit Logging, Invite Codes, Hardware Attestation, Rate Limiting) | [Pending] | No implementation yet for MDS3 attestation verification, rate limiting, audit logging, or invite codes. |
| Identity Lifecycle & Administration | [Pending] | No implementation exists for account activation, additional passkey enrollment/removal and recovery, profile updates, or session/activity review. |
2. Architectural Deviations & Technical Trade-offs
During the recent development sessions, several compromises and deviations were made from the target architecture:
- gRPC Postponed: The Auth API Gateway (
auth-yes/server/main.ts) and SDK (auth-yes/sdk/mod.ts) are currently relying on standard HTTP/REST endpoints rather than the gRPC transport required by the target architecture. No gRPC service or Protocol Buffer contract is currently present. - Centralized DB Schema Coupling: The PostgreSQL initialization in
core/db.tscurrently houses both central identity tables (Users, Passkeys) and domain-specific tables (Edge_nodes). According to the spec, subsidiary applications should maintain independent databases to prevent schema contamination. - Attestation Type: The WebAuthn registration in
core/api-server.tscurrently configuresattestationType: "none". This deviates from the strict hardware attestation and FIDO MDS3 verification required by the target architecture. - Valkey Bypass: Current session validation in
core/api-server.tsqueries PostgreSQL (sessionstable) directly instead of utilizing Valkey for high-throughput in-memory statefulness.
3. Unimplemented Features & Security Gaps
- Valkey RESP3 Client-Side Caching: The Valkey integration is missing, leaving the system vulnerable to network bottlenecks (the "chatty architecture" problem) and lacks microsecond-level session revocation.
- FIDO MDS3 Attestation Verification: The system does not currently verify hardware provenance against the FIDO Alliance Metadata Service (MDS3), allowing software-based passkeys which breaks the strict non-repudiation guarantees.
- RBAC & Multi-tenancy: The database schema is missing tables for
Apps,Grants, andInvites. This prevents proper authorization coupling, multi-tenant scoping, and invite-code based user provisioning. - Internal mTLS: Communication between the App SDK and the Auth API is not yet secured with mTLS (SPIFFE/SPIRE), exposing the internal network to sniffing and replay attacks.
- Network Rate Limiting: The Auth API lacks multi-layered rate limiting, making the (future) Valkey cache vulnerable to exhaustion (OOM) attacks.
- Monorepo Structure: The missing root
deno.jsonprevents proper monorepo workspace management across the decoupled modules.
4. Recommended Next Actions
- Initialize Monorepo Workspace & Schema Migration:
- Create a root
deno.jsonto define the workspace (managingcore,auth-yes, etc.). - Refactor
core/db.tsto fully align with the isolated identity schema (addingApps,Grants,Invites) and decouple subsidiary app schemas.
- Create a root
- Implement Valkey & Client-Side Caching:
- Integrate Valkey into the Auth API Gateway for session storage and revocation.
- Implement RESP3 Client-Side Caching in the Deno App SDK
(
auth-yes/sdk/mod.ts) to resolve the "chatty architecture" latency and enable instant invalidation.
- Harden WebAuthn & Internal Networking:
- Upgrade the WebAuthn ceremonies to enforce strict hardware attestation using FIDO MDS3 BLOB verification.
- Transition the Auth API and SDK communication from HTTP/REST to gRPC, and introduce internal mTLS to secure the zero-trust perimeter.