Skip to content
Back to skills

3030 Sso Google Tutorial Ec0b87b6

ASecurity

This tutorial walks you through setting up Google Single Sign-On (SSO) authentication for ContextForge, allowing users to log in with their Google accounts.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 1, 2026
securityjavascriptrustgojavabashtestinggitapisecuritydocumentation

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned June 1, 2026

npx -y skills add tools-only/X-Skills --skill 3030-sso-google-tutorial_ec0b87b6 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 3030 Sso Google Tutorial Ec0b87b6?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 3030 Sso Google Tutorial Ec0b87b6
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-3030-sso-google-tutorial-ec0b87b6/badge)](https://www.skillsdirectory.com/skills/tools-only-3030-sso-google-tutorial-ec0b87b6)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# Google OAuth/OIDC Setup Tutorial

This tutorial walks you through setting up Google Single Sign-On (SSO) authentication for ContextForge, allowing users to log in with their Google accounts.

## Prerequisites

- ContextForge installed and running
- Google account with access to Google Cloud Console
- Access to your gateway's environment configuration

## Step 1: Create Google OAuth Application

### 1.1 Access Google Cloud Console

1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Select or create a project for your ContextForge
3. In the left sidebar, navigate to **APIs & Services** → **Credentials**

### 1.2 Enable Required APIs

Before creating credentials, enable the necessary APIs:

1. Go to **APIs & Services** → **Library**
2. Search for and enable:

   - **Google Identity Service** (for user authentication)
   - **Google People API** (for user profile information)
   - **Google Identity and Access Management (IAM) API** (optional, for advanced features)

### 1.3 Configure OAuth Consent Screen

1. Go to **APIs & Services** → **OAuth consent screen**
2. Choose **External** (for general use) or **Internal** (for Google Workspace)
3. Fill out the required fields:

**App name**: `ContextForge - [Your Organization]`

**User support email**: Your support email

**Application home page**: Your gateway URL

- Example: `https://gateway.yourcompany.com`

**Authorized domains**: Add your domain

- Example: `yourcompany.com`

**Developer contact information**: Your email

4. Click **Save and Continue**
5. Add scopes (optional for basic auth):

   - `userinfo.email`
   - `userinfo.profile`
   - `openid`

### 1.4 Create OAuth Client ID

1. Go to **APIs & Services** → **Credentials**
2. Click **Create Credentials** → **OAuth client ID**
3. Choose **Web application**
4. Configure the client:

**Name**: `ContextForge OAuth Client`

**Authorized JavaScript origins**: Your gateway domain

- Production: `https://gateway.yourcompany.com`
- Development: `http://localhost:8000`

**Authorized redirect URIs**: **Critical - must be exact**

- Production: `https://gateway.yourcompany.com/auth/sso/callback/google`
- Development: `http://localhost:8000/auth/sso/callback/google`
5. Click **Create**
6. **Important**: Copy the Client ID and Client Secret immediately

## Step 2: Configure ContextForge Environment

### 2.1 Update Environment Variables

Add these variables to your `.env` file:

```bash
# Enable SSO System
SSO_ENABLED=true

# Google OAuth Configuration
SSO_GOOGLE_ENABLED=true
SSO_GOOGLE_CLIENT_ID=123456789012-abcdefghijklmnopqrstuvwxyz123456.apps.googleusercontent.com
SSO_GOOGLE_CLIENT_SECRET=GOCSPX-1234567890abcdefghijklmnop

# Optional: Auto-create users on first login
SSO_AUTO_CREATE_USERS=true

# Optional: Restrict to Google Workspace domain
SSO_TRUSTED_DOMAINS=["yourcompany.com"]

# Optional: Preserve local admin authentication
SSO_PRESERVE_ADMIN_AUTH=true
```

### 2.2 Example Production Configuration

```bash
# Production Google SSO Setup
SSO_ENABLED=true
SSO_GOOGLE_ENABLED=true
SSO_GOOGLE_CLIENT_ID=123456789012-realclientid.apps.googleusercontent.com
SSO_GOOGLE_CLIENT_SECRET=GOCSPX-realsecretfromgoogle

# Security settings for Google Workspace
SSO_AUTO_CREATE_USERS=true
SSO_TRUSTED_DOMAINS=["yourcompany.com"]  # Only company emails
SSO_PRESERVE_ADMIN_AUTH=true

# Optional: Custom OAuth scopes
SSO_GOOGLE_SCOPE="openid profile email"
```

### 2.3 Development Configuration

```bash
# Development Google SSO Setup
SSO_ENABLED=true
SSO_GOOGLE_ENABLED=true
SSO_GOOGLE_CLIENT_ID=123456789012-devtest.apps.googleusercontent.com
SSO_GOOGLE_CLIENT_SECRET=GOCSPX-devtestsecret

# More permissive for testing
SSO_AUTO_CREATE_USERS=true
SSO_PRESERVE_ADMIN_AUTH=true
# SSO_TRUSTED_DOMAINS=[]  # Allow any email for testing
```

### 2.4 Google Workspace Domain Restriction

For organizations using Google Workspace:

```bash
# Restrict to your organization's domain
SSO_TRUSTED_DOMAINS=["yourcompany.com"]

# Allow multiple domains
SSO_TRUSTED_DOMAINS=["yourcompany.com", "subsidiary.com", "contractor.org"]
```

## Step 3: Restart and Verify Gateway

### 3.1 Restart the Gateway

```bash
# Development
make dev

# Or directly with uvicorn
uvicorn mcpgateway.main:app --reload --host 0.0.0.0 --port 8000

# Production
make serve
```

### 3.2 Verify Google SSO is Enabled

Test that Google appears in SSO providers:

```bash
# For development server (port 8000)
curl -X GET http://localhost:8000/auth/sso/providers

# For production server (port 4444, make serve)
curl -X GET http://localhost:4444/auth/sso/providers

# Should return Google in the list:
[
  {
    "id": "google",
    "name": "google",
    "display_name": "Google",
    "authorization_url": null
  }
]
```

**Troubleshooting**:

- **404 error**: Check that `SSO_ENABLED=true` in your environment and restart gateway
- **Empty array `[]`**: SSO is enabled but Google provider not created - restart gateway to auto-bootstrap

## Step 4: Test Google SSO Login

### 4.1 Access Login Page

1. Navigate to your gateway's login page:

   - Development (port 8000): `http://localhost:8000/admin/login`
   - Development (make serve, port 4444): `http://localhost:4444/admin/login`
   - Production: `https://gateway.yourcompany.com/admin/login`

2. You should see a "Continue with Google" button

### 4.2 Test Authentication Flow

1. Click **Continue with Google**
2. You'll be redirected to Google's sign-in page
3. Enter your Google credentials
4. Grant permissions if prompted
5. You'll be redirected back to the gateway admin panel
6. You should be logged in successfully

### 4.3 Verify User Creation

Check that a user was created:

```bash
# Using the admin API (requires admin token)
curl -H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
  http://localhost:8000/auth/users

# Look for your Google email in the user list
```

## Step 5: Google Workspace Integration (Advanced)

### 5.1 Google Workspace Domain Verification

For Google Workspace organizations:

1. In Google Cloud Console, go to **Domain verification**
2. Verify ownership of your domain
3. This allows stricter domain controls

### 5.2 Google Groups Integration

Map Google Groups to gateway teams:

```bash
# Custom configuration (requires additional API setup)
GOOGLE_GROUPS_MAPPING={"group1@yourcompany.com": "team-uuid-1", "admins@yourcompany.com": "admin-team-uuid"}
```

**Note**: This requires additional Google Groups API setup and custom development.

### 5.3 Advanced OAuth Scopes

Request additional Google permissions:

```bash
# Extended scopes for Google Workspace
SSO_GOOGLE_SCOPE="openid profile email https://www.googleapis.com/auth/admin.directory.group.readonly"
```

Common useful scopes:

- `openid profile email` - Basic user info (default)
- `https://www.googleapis.com/auth/admin.directory.user.readonly` - Read user directory
- `https://www.googleapis.com/auth/admin.directory.group.readonly` - Read group memberships

## Step 6: Production Deployment Checklist

### 6.1 Security Requirements

- [ ] Use HTTPS for all redirect URIs
- [ ] Store client secrets securely (vault/secret management)
- [ ] Set restrictive `SSO_TRUSTED_DOMAINS` for Google Workspace
- [ ] Configure OAuth consent screen properly
- [ ] Regular secret rotation

### 6.2 Google Cloud Configuration

- [ ] OAuth consent screen configured
- [ ] Authorized domains added
- [ ] Required APIs enabled
- [ ] Redirect URIs match exactly
- [ ] Client ID and secret copied securely

### 6.3 DNS and Certificates

- [ ] Gateway accessible from internet
- [ ] HTTPS certificates valid
- [ ] Domain verification completed (for Workspace)

## Troubleshooting

### Error: "SSO authentication is disabled"

**Problem**: SSO endpoints return 404
**Solution**: Set `SSO_ENABLED=true` and restart gateway

### Error: "redirect_uri_mismatch"

**Problem**: Google OAuth redirect URI doesn't match
**Solution**: Verify exact URL match in Google Cloud Console

```bash
# Google Cloud Console authorized redirect URIs must exactly match:
https://your-domain.com/auth/sso/callback/google

# Common mistakes:
https://your-domain.com/auth/sso/callback/google/  # Extra slash
http://your-domain.com/auth/sso/callback/google   # HTTP instead of HTTPS
https://www.your-domain.com/auth/sso/callback/google  # Wrong subdomain
```

### Error: "Access blocked: This app's request is invalid"

**Problem**: OAuth consent screen not configured properly
**Solution**: Complete OAuth consent screen configuration

1. Go to Google Cloud Console → OAuth consent screen
2. Fill in all required fields
3. Add your domain to authorized domains
4. Publish the app (for external users)

### Error: "User creation failed"

**Problem**: User's email domain not in trusted domains
**Solution**: Add domain to trusted domains or remove restriction

```bash
# For Google Workspace - add your domain
SSO_TRUSTED_DOMAINS=["yourcompany.com"]

# For consumer Google accounts - remove restriction
SSO_TRUSTED_DOMAINS=[]
```

### Google Sign-in Shows "This app isn't verified"

**Problem**: App verification required for production use
**Solution**: For internal use, users can click "Advanced" → "Go to [App Name] (unsafe)"

For production apps with external users:

1. Go through Google's app verification process
2. Or limit to internal users only (Google Workspace)

### Error: "invalid_client"

**Problem**: Wrong client ID or secret
**Solution**: Verify credentials from Google Cloud Console

```bash
# Double-check these values match Google Cloud Console
SSO_GOOGLE_CLIENT_ID=your-actual-client-id.apps.googleusercontent.com
SSO_GOOGLE_CLIENT_SECRET=GOCSPX-your-actual-client-secret
```

## Testing Checklist

- [ ] Google Cloud project created
- [ ] OAuth consent screen configured
- [ ] OAuth client ID created with correct redirect URI
- [ ] Client ID and secret added to environment
- [ ] Gateway restarted with new config
- [ ] `/auth/sso/providers` returns Google provider
- [ ] Login page shows "Continue with Google" button
- [ ] Clicking Google button redirects to Google sign-in
- [ ] Google sign-in redirects back successfully
- [ ] User is logged into gateway admin panel
- [ ] User appears in gateway user list

## Google Workspace Specific Setup

### Admin Console Configuration

If using Google Workspace:

1. Go to [Google Admin Console](https://admin.google.com)
2. Navigate to **Security** → **API controls**
3. Click **MANAGE THIRD-PARTY APP ACCESS**
4. Configure app access for your ContextForge OAuth app

### Domain-Wide Delegation (Advanced)

For service account access (advanced use cases):

1. Create a service account in Google Cloud Console
2. Enable domain-wide delegation
3. In Google Admin Console, configure API scopes
4. Use service account for server-to-server authentication

## Next Steps

After Google SSO is working:

1. **Test with different user types** (admin, regular users)
2. **Set up team mappings** for automatic role assignment
3. **Configure additional SSO providers** for redundancy
4. **Monitor authentication logs** for issues
5. **Document user onboarding** process

## Related Documentation

- [Complete SSO Guide](sso.md) - Full SSO documentation
- [GitHub SSO Tutorial](sso-github-tutorial.md) - GitHub setup guide
- [Team Management](teams.md) - Managing teams and roles
- [RBAC Configuration](rbac.md) - Role-based access control

## Support

If you encounter issues:

1. Check Google Cloud Console for error messages
2. Enable debug logging: `LOG_LEVEL=DEBUG`
3. Review gateway logs for Google OAuth errors
4. Verify all Google Cloud Console settings match tutorial
5. Test with a simple curl command to isolate issues

Files in this skill

  • README.md934 B
  • skill.md11.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.