OAuth Providers
ProjectAchilles uses Clerk for authentication, supporting multiple OAuth providers out of the box.
Supported Providers
| Provider | Development | Production |
|---|---|---|
| Shared credentials (automatic) | Custom OAuth app required | |
| GitHub | Shared credentials (automatic) | Custom OAuth app required |
| Microsoft | Shared credentials (automatic) | Custom OAuth app required |
Development Mode
In Clerk development mode (pk_test_ keys), social login works immediately with Clerk's shared OAuth credentials. No configuration needed.
Production Mode
Custom Credentials Required
Clerk production instances (pk_live_ keys) require your own OAuth app credentials for each provider. Without them, social login buttons redirect with an empty client_id, resulting in a 404 error.
Google OAuth Setup
- Go to Google Cloud Console → APIs & Services → Credentials
- Create an OAuth 2.0 Client ID (Web application type)
- Add authorized redirect URI:
https://clerk.<your-domain>/v1/oauth_callback - Enter Client ID and Client Secret in Clerk Dashboard → SSO Connections → Google
GitHub OAuth Setup
- Go to GitHub Developer Settings → OAuth Apps → New OAuth App
- Set Authorization callback URL to
https://clerk.<your-domain>/v1/oauth_callback - Generate a Client Secret
- Enter Client ID and Client Secret in Clerk Dashboard → SSO Connections → GitHub
Microsoft OAuth Setup
- Go to Azure Portal → App Registrations → New Registration
- Add redirect URI:
https://clerk.<your-domain>/v1/oauth_callback - Create a client secret under Certificates & Secrets
- Enter Application (client) ID and secret in Clerk Dashboard → SSO Connections → Microsoft
Clerk Dashboard Configuration
After configuring OAuth providers:
- Go to Domains → add your frontend URL as an allowed origin
- Go to Redirect URLs → add
https://<your-domain>/* - Ensure the correct environment (Development vs Production) is selected
Troubleshooting
Social login returns 404
You're using production keys without custom OAuth credentials. See the production setup steps above.
"Clerk: auth() was called without middleware"
The backend middleware isn't configured. Ensure @clerk/express middleware is applied to the Express app.