MoosicBox Authentication
Basic authentication utilities for client registration and token management in the MoosicBox ecosystem.
Overview
The MoosicBox Auth package provides:
- Client Registration: Register clients and manage access tokens
- Magic Token Support: Create and validate magic tokens for authentication flows
- Signature Token Fetching: Retrieve signature tokens for secure operations
- Request Authorization: Basic request authorization middleware
- Database Integration: Store and retrieve client credentials
Features
Core Authentication Functions
- Client ID Generation: Generate unique client identifiers
- Token Management: Store and retrieve client access tokens
- Magic Token Workflow: Create and validate temporary authentication tokens
- Signature Token Access: Fetch signature tokens for secure operations
Request Authorization
- Non-Tunnel Authorization: Validate that requests are not from tunnel services
- Header-Based Auth: Check user agent headers for authorization
Installation
Add this to your Cargo.toml:
[]
= "0.1.1"
Usage
Client Registration and Token Management
use ;
use ConfigDatabase;
async
Magic Token Authentication
use create_magic_token;
use ConfigDatabase;
async
Signature Token Retrieval
use fetch_signature_token;
async
Request Authorization Middleware
use NonTunnelRequestAuthorized;
use ;
// Handler that requires non-tunnel authorization
async
// The middleware automatically checks the User-Agent header
// and rejects requests from "MOOSICBOX_TUNNEL"
API Features
Database Operations
- Store and retrieve client access tokens
- Manage magic token lifecycle
- Handle credential persistence
HTTP Integration
- Actix Web request extractor for authorization
- User-Agent based request filtering
- Header validation and parsing
Error Handling
The package provides comprehensive error handling through the AuthError enum:
DatabaseFetch: Database operation errorsParse: JSON parsing errorsHttp: HTTP request errorsRegisterClient: Client registration failuresUnauthorized: Authorization failures
Environment Variables
TUNNEL_ACCESS_TOKEN: Required for client registration with tunnel services
Security Considerations
- Magic tokens are UUIDs for temporary authentication
- Client IDs are generated as UUIDs for uniqueness
- Access tokens are managed securely in the database
- Request filtering prevents tunnel service abuse