--- title: 'Authentication' description: 'OAuth 2.0 authentication endpoints and flow' --- ## Overview The Trading Analysis Dashboard uses Google OAuth 2.0 for secure authentication. All API endpoints require an authenticated session. ## Authentication Flow Unauthenticated users are redirected to the login page User initiates OAuth flow by clicking the Google sign-in button User is redirected to Google to authorize the application Google redirects back to the application with authorization code Application exchanges code for tokens and creates a secure session User is redirected to the dashboard with an authenticated session ## Endpoints ### Login Page ``` GET /auth/login ``` Displays the login page for unauthenticated users. ### Initiate OAuth ``` GET /login ``` Redirects user to Google OAuth authorization page. ### OAuth Callback ``` GET /auth/callback ``` Handles the OAuth callback from Google and creates user session. **Query Parameters:** - `code` (string): Authorization code from OAuth provider - `state` (string): State parameter for security ### Logout ``` GET /logout ``` Clears user session and logs out the user. ### User Profile ``` GET /auth/profile ``` Displays user profile information (requires authentication). ## Session Management - Sessions are stored server-side using Flask sessions - Session cookies are HTTP-only and secure (in production) - Sessions expire after a period of inactivity - Users must re-authenticate after session expiration ## User Authorization Access is controlled by the `AUTHORIZED_USERS` environment variable: ```env AUTHORIZED_USERS=user1@example.com,user2@example.com,user3@example.com ``` Only users with email addresses in this list can access the application after authenticating with Google. ## Error Responses ### 401 Unauthorized ```json { "success": false, "error": "Authentication required", "redirect_to_login": true } ``` ### 403 Forbidden ```json { "success": false, "error": "Access denied. User not authorized." } ``` ## Security Best Practices Always use HTTPS in production for OAuth callbacks Session cookies are HTTP-only and secure Only authorized email addresses can access the application OAuth tokens are never exposed to the client