--- title: 'SSO Authentication Setup' description: 'Configure Google OAuth 2.0 authentication for your Trading Analysis Dashboard' --- ## Overview This guide will help you configure Google OAuth 2.0 authentication for secure access to your Trading Analysis Dashboard. ## Step 1: Create Google OAuth Application Visit [Google Cloud Console](https://console.cloud.google.com/) and sign in with your Google account - Click "Select a project" → "New Project" - Name: "Trading Dashboard" - Click "Create" - Go to "APIs & Services" → "Library" - Search for "Google+ API" and enable it - Also enable "Google Identity" if available - Go to "APIs & Services" → "Credentials" - Click "Create Credentials" → "OAuth 2.0 Client IDs" - Choose "Web application" - Name: "Trading Dashboard Auth" Add the following URLs: **Authorized JavaScript origins:** - `https://performance.miningwood.com` - `http://localhost:8080` (for testing) **Authorized redirect URIs:** - `https://performance.miningwood.com/auth/callback` - `http://localhost:8080/auth/callback` (for testing) Copy the "Client ID" and "Client Secret" for the next step ## Step 2: Configure Environment Variables Update your `.env.docker` file with the OAuth credentials: ```bash .env.docker # OAuth Configuration GOOGLE_CLIENT_ID=your-actual-client-id.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=your-actual-client-secret # Authorized Users (your email addresses) AUTHORIZED_USERS=your-email@gmail.com,admin@company.com ``` Never commit your `.env` files to version control. Keep them secure and out of your repository. ## Step 3: Update and Deploy ### Rebuild the application ```bash docker compose build trading_app docker compose restart trading_app ``` ### Test the authentication Navigate to `https://performance.miningwood.com` You should be redirected to the login page. Click "Sign in with Google" Authorize the application when prompted by Google You should be redirected back and logged in successfully ## Security Features Industry standard authentication protocol Only specific email addresses can access Secure server-side sessions with expiration All authentication over encrypted connections ## User Management ### Add Users Add email addresses to `AUTHORIZED_USERS` in `.env.docker`, separated by commas: ```bash AUTHORIZED_USERS=user1@example.com,user2@example.com,user3@example.com ``` Then restart the application: ```bash docker compose restart trading_app ``` ### Remove Users Remove email addresses from `AUTHORIZED_USERS` and restart the application. Leave `AUTHORIZED_USERS` empty to allow all users (not recommended for production) ## Troubleshooting - Check that Client ID and Secret are correct in `.env.docker` - Verify redirect URLs match exactly in Google Cloud Console - Ensure Google+ API is enabled - Check application logs: `docker compose logs trading_app` - Verify your email is in `AUTHORIZED_USERS` - Ensure email case matches exactly - Check for extra spaces in the email list - Clear browser cookies for your domain - Verify Flask secret key is set in `.env.docker` - Check session configuration in application logs Ensure the redirect URIs in Google Cloud Console match your deployment: - Use `https://` for production - Include the exact domain and path - No trailing slashes ## Alternative OAuth Providers You can also configure other OAuth providers: ```bash .env.docker GITHUB_CLIENT_ID=your-github-client-id GITHUB_CLIENT_SECRET=your-github-client-secret ``` 1. Create OAuth App at https://github.com/settings/developers 2. Set Authorization callback URL to `https://your-domain.com/auth/callback` ```bash .env.docker MICROSOFT_CLIENT_ID=your-microsoft-client-id MICROSOFT_CLIENT_SECRET=your-microsoft-client-secret ``` 1. Register app at https://portal.azure.com 2. Add redirect URI in Authentication settings Contact your administrator if you need help configuring alternative providers. ## Testing OAuth Configuration To test your OAuth setup locally: ```bash # Start the application locally docker compose up -d # Check logs for any OAuth errors docker compose logs -f trading_app # Visit localhost open http://localhost:8080 ``` ## Security Checklist - [ ] OAuth credentials are stored in `.env` files, not in code - [ ] `.env` files are in `.gitignore` - [ ] `AUTHORIZED_USERS` list is properly configured - [ ] HTTPS is enabled in production - [ ] Strong `FLASK_SECRET_KEY` is set - [ ] Redirect URIs are exact matches in Google Cloud Console - [ ] Google+ API is enabled ## Next Steps Configure multi-user support with brokerage accounts Deploy your application to production