This guide covers how to manage authentication tokens, including storage, refresh, and expiration handling.
Purpose: Authenticate API requests
Lifetime: Typically 15 minutes
Format: JWT (JSON Web Token)
Usage: Include in Authorization header for authenticated requests
Purpose: Obtain new access tokens without re-authentication
Lifetime: Typically 7 days
Format: Opaque token string
Usage: Exchange for new access token when current one expires
The SDK does not store tokens internally. You must manage token storage in your application.
Browser Storage Options
localStorage (Persistent)
Pros: Persists across browser sessions
Cons: Accessible to JavaScript (XSS risk)
sessionStorage (Session-only)
Pros: Cleared when tab closes
Cons: Still accessible to JavaScript
HTTP-Only Cookies (Recommended for Server-Side)
For server-side applications, use HTTP-only cookies set by your backend:
Checking Token Expiration
Use JWT utilities to check token expiration:
Refreshing Tokens
When an access token expires, use the refresh token to get a new one:
Alternative: Refresh with API Key
You can also refresh using an API key:
Automatic Token Refresh
Implement automatic token refresh to improve user experience:
Token Refresh Interceptor
For applications using HTTP clients, implement a token refresh interceptor:
To logout, revoke tokens on the server and clear local storage:
Security Considerations
Never expose refresh tokens - Keep them server-side if possible
Use HTTPS - Always use HTTPS to protect tokens in transit
Implement CSRF protection - Use CSRF tokens for state-changing operations
Token rotation - Consider rotating refresh tokens on each refresh
Monitor token usage - Log and monitor token refresh patterns for anomalies
User Consent - Manage user consent records
API Reference - Learn about authenticated APIs