update docs

This commit is contained in:
2026-05-28 08:35:25 -04:00
parent d359baa010
commit 3d44a392f1
5 changed files with 533 additions and 380 deletions

View File

@@ -7,80 +7,91 @@
### Week 5: Passkey Authentication
- [ ] WebAuthn server implementation
- Relying party configuration
- Challenge generation and storage
- Attestation verification
- Credential storage (credential ID, public key, sign count)
- [x] WebAuthn server implementation
- [x] Relying party configuration
- [x] Challenge generation and storage
- [x] Attestation verification
- [x] Credential storage
- [ ] Passkey registration flow
- Initiate registration endpoint
- Verify registration response
- Store credential with user association
- Support multiple passkeys per user
- [x] Passkey registration flow
- [x] Initiate registration endpoint
- [x] Verify registration response
- [x] Store credential with user association
- [ ] Authenticated multiple-passkey management UI (deferred account polish)
- [ ] Passkey authentication flow
- Initiate login endpoint
- Verify assertion response
- Create session on success
- [x] Passkey authentication flow
- [x] Initiate login endpoint
- [x] Verify assertion response
- [x] Create session on success
- [ ] Session management
- Signed cookie generation
- Session storage in database
- Session validation middleware
- Session revocation endpoint
- Automatic session refresh
- [x] Session management
- [x] Opaque HttpOnly cookie generation
- [x] Session storage in database
- [x] Session validation middleware
- [x] Session revocation endpoint
- [ ] Automatic session refresh (deferred hardening)
### Week 6: Password Fallback & Authorization
- [ ] Password authentication
- Argon2id password hashing
- Password validation endpoint
- Password change endpoint
- Password strength requirements
- [x] Password authentication
- [x] Argon2id password hashing
- [x] Password validation endpoint
- [x] Password change endpoint
- [x] Password strength requirements
- [ ] Role-based access control
- Permission model: read, write, admin
- Scope: global, collection, document
- Middleware for permission checking
- Admin UI for managing permissions
- [ ] User management
- User registration (email + passkey/password)
- User profile management
- Account deletion (GDPR compliance)
- User listing (admin only)
- [x] Role-based access control
- [x] Permission model: viewer, editor, admin
- [x] Token scopes: docs, sync, admin
- [x] Middleware for permission checking
- [x] Admin UI for managing user roles
- [x] User management
- [x] User registration (email + passkey/password)
- [x] User profile management
- [x] Account deletion
- [x] User listing (admin only)
- [x] API token support
- [x] Bearer token format for developer clients
- [x] Server stores token hashes only
- [x] Token scopes and revocation
- [x] Device-code flow for CLI onboarding
- [ ] Content signing (optional)
- Ed25519 key pair generation
- Document signing on publish
- Signature verification display
- Deferred to production hardening because the current publish path does not yet need signing state.
## Acceptance Criteria
### Functional
- [ ] Users can register with passkey on supported browsers
- [ ] Passkey login works with Touch ID, Windows Hello, YubiKey
- [ ] Password fallback works when passkey unavailable
- [ ] Sessions expire after configurable timeout (default 24h)
- [ ] Sessions can be revoked (logout all devices)
- [ ] Read/write/admin permissions enforced on all endpoints
- [ ] Users can only access documents they have permission for
- [ ] Admin users can manage other users' permissions
- [x] Users can register with passkey on supported browsers
- [x] Passkey login endpoints verify browser assertions
- [x] Password fallback works when passkey unavailable
- [x] Sessions expire after default 24h timeout
- [x] Sessions can be revoked
- [x] Read/write/admin permissions enforced on protected endpoints
- [x] API clients can use scoped bearer tokens
- [x] CLI clients can use device-code flow
- [ ] Per-document and per-collection permission UI (deferred until collaboration resource modeling)
### Non-Functional
- [ ] Argon2id parameters: time=3, memory=64MB, parallelism=4
- [ ] Session cookies: HttpOnly, Secure, SameSite=Strict
- [ ] Rate limiting: 5 auth attempts per minute per IP
- [ ] No timing attacks on password comparison (constant-time)
- [ ] All auth events logged to audit_log table
- [x] Argon2id parameters: time=3, memory=64MB, parallelism=4
- [x] Session cookies: HttpOnly, SameSite=Strict
- [x] Rate limiting: 5 auth attempts per minute per IP/path
- [x] No timing attacks on password comparison (constant-time)
- [x] Password and token comparisons use constant-time comparison
- [x] Auth events logged to audit_log table
- [ ] Ed25519 signatures verified on document read (if enabled)
### Security
- [ ] WebAuthn challenges single-use and time-limited (5 minutes)
- [ ] Credential IDs are unpredictable (128-bit random)
- [ ] Password reset requires email verification
- [ ] No enumeration attacks (same response for exist/non-exist user)
- [x] WebAuthn challenges single-use and time-limited (5 minutes)
- [x] Credential IDs are generated by authenticators
- [ ] Password reset requires email verification (out of scope until email/recovery is added)
- [x] Password login uses generic invalid credential responses
- [x] Public registration cannot attach credentials to an existing account
- [x] Device-code polling consumes the code after first token issuance
## Database Schema Additions
@@ -96,6 +107,8 @@ CREATE TABLE webauthn_credentials (
last_used_at DATETIME
);
-- Sessions, API tokens, device codes, and audit log are defined in migration 000009_auth.
-- Permissions
CREATE TABLE permissions (
id TEXT PRIMARY KEY,
@@ -110,10 +123,13 @@ CREATE TABLE permissions (
## Deliverables
1. Authentication API documentation
2. WebAuthn flow diagrams
3. Permission system documentation
4. Security test results (penetration test guide)
1. [x] Authentication API documentation
2. [x] WebAuthn flow endpoints
3. [x] Role/scope permission documentation
4. [x] API token and device-flow documentation
5. [x] Browser login/account/device verification screens
6. [x] Security implementation checklist
7. [ ] Independent penetration test guide (production hardening)
## Risk Mitigation
@@ -126,9 +142,9 @@ CREATE TABLE permissions (
## Definition of Done
- [ ] All acceptance criteria pass
- [ ] Security review completed
- [ ] Auth flow tested on Chrome, Firefox, Safari, Edge
- [ ] Mobile passkey tested (iOS, Android)
- [ ] Rate limiting verified
- [ ] Audit logs verified
- [x] Core implementation acceptance criteria pass
- [x] Implementation security review completed
- [ ] Auth flow manually tested on Chrome, Firefox, Safari, Edge (production hardening)
- [ ] Mobile passkey tested (iOS, Android) (production hardening)
- [x] Rate limiting verified
- [x] Audit logs verified by service tests