Session tokens
After successful authentication, Scalekit returns three types of tokens:ID token
Contains verified user identity information. Structure:- Display user profile information
- Create application user records
- Store user metadata
Access token
Short-lived token used to authorize API requests. Structure:- Default lifetime: 5 minutes (configurable)
- Contains user roles and permissions
- Should be validated on every request
- Stored in HttpOnly cookies or Authorization headers
- Authorize API requests
- Check user permissions
- Validate current session status
Refresh token
Long-lived token used to obtain new access tokens. Properties:- Lifetime: Configurable (default 30 days)
- Single-use with automatic rotation
- Should be stored securely server-side
- Invalidated on logout or security events
- Refresh expired access tokens
- Maintain long-lived sessions
- Implement “remember me” functionality
Token storage
Web applications
Store tokens in HttpOnly cookies with proper security attributes:Single-page applications (SPAs)
- Store access tokens in memory
- Send via Authorization header:
Bearer <token> - Refresh tokens should be stored in HttpOnly cookies
- Never store tokens in localStorage or sessionStorage
Mobile applications
- Use secure platform storage (iOS Keychain, Android KeyStore)
- Implement certificate pinning for API requests
- Use refresh token rotation
- Clear tokens on app logout or uninstall
Token validation
Validate access tokens on every protected request:Token refresh
Refresh tokens automatically in middleware to maintain seamless sessions:Session policies
Configure session behavior in Dashboard > Authentication > Session Policy:Absolute session timeout
Maximum session duration regardless of activity.- Default: 30 days
- Range: 5 minutes to 1 year
- Use case: Enforce periodic re-authentication for security
Idle session timeout
Inactivity period before session expires.- Default: Disabled
- Range: 5 minutes to 30 days
- Use case: Auto-logout for shared devices or kiosks
Access token lifetime
Duration before access token must be refreshed.- Default: 5 minutes
- Range: 1 minute to 1 hour
- Use case: Balance security with refresh frequency
Session revocation
Revoke sessions programmatically for security or administrative purposes:Security best practices
Token encryption
Encrypt tokens before storing in cookies:Token rotation
Rotate refresh tokens on each use to detect theft:- New refresh token issued with each refresh
- Old refresh token invalidated immediately
- Concurrent refresh attempts trigger security alert
Clock skew tolerance
Account for time differences between servers:- Subtract 60 seconds from token expiration
- Validate
expclaim with leeway - Sync server clocks with NTP
CSRF protection
- Use
SameSite=Strictcookies - Implement CSRF tokens for state-changing operations
- Validate Origin and Referer headers
Multi-device sessions
Manage sessions across multiple devices:Next steps
Authentication flows
Learn about different authentication methods
Token management
Best practices for handling tokens securely
Session policies
Configure session timeouts and security settings
API Reference
Complete session management API documentation