This guide explains how to set up OAuth2 authentication with GitHub and Google providers.
- Go to GitHub Settings → Developer settings → OAuth Apps
- Click "New OAuth App"
- Fill in details:
- Application name: Spring Boot Security Demo
- Homepage URL: http://localhost:8081
- Authorization callback URL: http://localhost:8081/login/oauth2/code/github
- Click "Register application"
- Copy Client ID and Client Secret
spring.security.oauth2.client.registration.github.client-id=your-github-client-id
spring.security.oauth2.client.registration.github.client-secret=your-github-client-secret- Go to Google Cloud Console
- Create new project or select existing one
- Enable Google+ API
- Go to Credentials → Create Credentials → OAuth 2.0 Client IDs
- Configure OAuth consent screen
- Create OAuth 2.0 Client ID:
- Application type: Web application
- Authorized redirect URIs: http://localhost:8081/login/oauth2/code/google
- Copy Client ID and Client Secret
spring.security.oauth2.client.registration.google.client-id=your-google-client-id
spring.security.oauth2.client.registration.google.client-secret=your-google-client-secretmvn spring-boot:run- Navigate to: http://localhost:8081/login
- Click "GitHub" or "Google" button
- Complete OAuth2 flow
- Redirected to dashboard with OAuth2 user info
# After OAuth2 login (with session cookies)
curl -b cookies.txt http://localhost:8081/api/oauth2/user
curl -b cookies.txt http://localhost:8081/api/oauth2/profile{
"id": 12345,
"login": "username",
"name": "Full Name",
"email": "user@example.com",
"avatar_url": "https://avatars.githubusercontent.com/u/12345"
}{
"sub": "google-user-id",
"name": "Full Name",
"email": "user@gmail.com",
"picture": "https://lh3.googleusercontent.com/..."
}- Use environment variables for client secrets
- Enable HTTPS
- Configure proper redirect URIs
- Set up proper OAuth consent screens
- Implement proper error handling
export GITHUB_CLIENT_ID=your-github-client-id
export GITHUB_CLIENT_SECRET=your-github-client-secret
export GOOGLE_CLIENT_ID=your-google-client-id
export GOOGLE_CLIENT_SECRET=your-google-client-secretspring.security.oauth2.client.registration.github.client-id=${GITHUB_CLIENT_ID}
spring.security.oauth2.client.registration.github.client-secret=${GITHUB_CLIENT_SECRET}
spring.security.oauth2.client.registration.google.client-id=${GOOGLE_CLIENT_ID}
spring.security.oauth2.client.registration.google.client-secret=${GOOGLE_CLIENT_SECRET}- Invalid redirect URI: Ensure callback URL matches exactly
- Client secret mismatch: Verify client ID and secret
- Scope issues: Check required scopes for user information
- CORS errors: Ensure proper domain configuration
logging.level.org.springframework.security.oauth2=DEBUG
logging.level.org.springframework.web.client.RestTemplate=DEBUGThis setup enables social login with GitHub and Google while maintaining all existing authentication methods.