Overview
Dashboard authentication uses WebAuthn (passkeys) and JWT session cookies to authenticate namespace owners. This allows owners to manage services, approve authorization requests, and configure their namespace through the Sigilum dashboard.Dashboard auth is only needed for namespace owner management operations. Services authenticate using API keys (Bearer tokens), and agents use signed request headers.
Authentication Flow
The authentication flow follows the WebAuthn standard with passkeys:Signup
Get Signup Options
Request WebAuthn challenge and options for creating a new account.
Desired namespace (must be available)
Base64-encoded WebAuthn challenge
Relying party information (name and ID)
User information for credential creation
Supported credential algorithms (ES256, EdDSA)
Create Account
Complete account creation with signed WebAuthn credential.
Namespace to register
Optional name for the passkey (e.g., “MacBook Pro”)
WebAuthn credential response from
navigator.credentials.create()Set-Cookie header contains the JWT session token.
After signup, the namespace is reserved and a DID document is created at
did:sigilum:{namespace}.Login
Get Login Options
Request WebAuthn challenge for authentication.
Namespace to authenticate
Base64-encoded WebAuthn challenge
List of credential IDs allowed for this namespace
Authenticate
Complete authentication with signed WebAuthn assertion.
Namespace to authenticate
WebAuthn assertion response from
navigator.credentials.get()Session Management
Get Current User
Retrieve information about the currently authenticated user.
Authenticated namespace
User settings and preferences
Account creation timestamp
Logout
End the current session and clear the session cookie.
Set-Cookie header clearing the session.
Passkey Management
Get Passkey Options
Request WebAuthn options for adding a new passkey to the account.
Add Passkey
Add a new passkey to the authenticated account.
Name for the new passkey (e.g., “iPhone”, “YubiKey”)
WebAuthn credential response
List Passkeys
List all passkeys associated with the account.
Rename Passkey
Update the name of a passkey.
New passkey name
Delete Passkey
Remove a passkey from the account.
Account Settings
Update Settings
Update account settings and preferences.
Enable or disable email notifications
Receive notifications for webhook delivery failures
Delete Account
Permanently delete the namespace and all associated data.
Session Cookies
Session cookies are HTTP-only, secure, and have the following properties:- Name:
sigilum_session - Duration: 7 days (configurable via
GATEWAY_AUTH_SESSION_HOURS) - SameSite:
Lax - Secure:
true(HTTPS only)
Security Considerations
WebAuthn Security
WebAuthn Security
WebAuthn provides strong cryptographic authentication:
- Phishing resistant: Credentials are bound to the origin
- No shared secrets: Private keys never leave the authenticator
- Replay protection: Each authentication uses a unique challenge
- Attestation: Optional device attestation for high-security scenarios
Session Security
Session Security
Sessions are protected with:
- HTTP-only cookies: JavaScript cannot access tokens
- Secure flag: Transmitted only over HTTPS
- SameSite: CSRF protection
- JWT signing: HMAC-SHA256 with server secret
- Expiration: Automatic session timeout
Rate Limiting
Rate Limiting
Authentication endpoints have strict rate limits:
- Signup: 5 attempts per IP per hour
- Login: 10 attempts per namespace per hour
- Failed attempts trigger exponential backoff
Browser Integration Example
Complete signup flow using the WebAuthn browser API:Next Steps
Services Management
Create services and generate API keys
Authorizations
Approve agent authorization requests
Namespaces
View authorization requests for your namespace
Dashboard
Use the web dashboard instead of API calls