Google Workspace Setup
This guide walks through setting up Google Workspace as the identity provider for OIDC login in Open Saasframe. Google Workspace supports JIT (Just-In-Time) provisioning only — SCIM push provisioning is not available.
Google Cloud OAuth 2.0 is free for internal Workspace applications. No paid APIs required.
1. Prerequisites
- A Google Workspace account with admin access
- A custom domain verified in Google Workspace (e.g.,
company.com) - Access to the Google Cloud Console (https://console.cloud.google.com)
2. Create a Google Cloud Project
- Go to https://console.cloud.google.com
- Click the project selector in the top bar -> New Project
- Name:
Open Saasframe SSO(or your preference) - Click Create
- Switch to the new project in the project selector
3. Configure the OAuth Consent Screen
- In the left sidebar, go to APIs & Services -> OAuth consent screen
- Select Internal (restricts login to your Workspace organization only)
- Click Create
- Fill in:
| Field | Value |
|---|---|
| App name | Open Saasframe |
| User support email | Your admin email |
| Authorized domains | Your Workspace domain (e.g., company.com) |
| Developer contact email | Your admin email |
- Click Save and Continue
- On the Scopes step, click Add or Remove Scopes and add:
openidemailprofile
- Click Update -> Save and Continue
- Review and click Back to Dashboard
4. Create OAuth 2.0 Credentials
- Go to APIs & Services -> Credentials
- Click + Create Credentials -> OAuth client ID
- Configure:
| Field | Value |
|---|---|
| Application type | Web application |
| Name | Open Saasframe SSO |
| Authorized redirect URIs | http://localhost:3000/api/sso/callback/oidc |
- Click Create
- Copy the Client ID and Client Secret immediately — you can also retrieve them later from the credentials list
OIDC Credentials Summary
| Credential | Value |
|---|---|
| Issuer URL | https://accounts.google.com |
| Client ID | Copy from Credentials page |
| Client Secret | Copy from Credentials page |
| Redirect URI | http://localhost:3000/api/sso/callback/oidc |
Google's OIDC discovery document is at https://accounts.google.com/.well-known/openid-configuration.
5. Create the SSO Config in Open Saasframe
- Log into Open Saasframe as admin
- Go to Settings -> Single Sign-On -> Create New
- Select OIDC as the protocol
- Enter:
- Name:
Google Workspace - Issuer URL:
https://accounts.google.com - Client ID: (paste from Google Cloud Console)
- Client Secret: (paste from Google Cloud Console)
- Name:
- Add your Workspace domain as an allowed domain (e.g.,
company.com) - Enable JIT Provisioning (recommended — creates accounts on first login)
- Enable Auto-link by email (recommended — links existing accounts by email match)
- Click Verify Discovery to test the OIDC configuration
- Save and activate the configuration
6. Verify OIDC Login
- Open a private/incognito browser window
- Go to the Open Saasframe login page
- Enter an email address with your Workspace domain (e.g.,
user@company.com) - The login page should detect SSO and show "Continue with SSO"
- Click it — you'll be redirected to Google's login page
- Authenticate with your Google Workspace account
- You should be redirected back to Open Saasframe and logged in
Google Workspace Specifics
No SCIM Provisioning
Google Workspace does not support SCIM push provisioning to third-party applications. Users are provisioned via JIT on their first SSO login. The Provisioning tab in the Open Saasframe admin UI will show an informational message for Google Workspace configurations.
To manage user access:
- Provision: Users are created automatically on first login via JIT
- Deprovision: Remove the user's Workspace account or change their domain to stop SSO access
No Group Claims by Default
Google's standard OIDC tokens do not include group membership claims. If you need role-based access from Google groups, you would need to configure a custom claim via Google's Directory API (advanced setup, not covered here).
For most setups: leave Role Mappings empty in the SSO config. Users will log in with their default assigned role.
hd Claim
Google OIDC returns a hd (hosted domain) claim for Workspace accounts. This identifies the user's organization domain. Open Saasframe validates the user's email domain against the allowed domains configured in the SSO config.
email_verified
Google Workspace accounts always return email_verified: true. Personal Gmail accounts may have unverified emails — configuring the consent screen as Internal prevents personal accounts from accessing the application.
Troubleshooting
"Access blocked: Open Saasframe has not completed the Google verification process"
This appears when the consent screen is set to External without Google verification. Solution: set the consent screen to Internal (Workspace users only).
OIDC login redirects but fails
- Verify the Redirect URI matches exactly:
http://localhost:3000/api/sso/callback/oidc - Verify the Issuer URL is
https://accounts.google.com(not a tenant-specific URL) - Ensure
openid,email, andprofilescopes are configured on the consent screen - Check that the user's email domain matches an allowed domain in the SSO config
"Error 400: redirect_uri_mismatch"
The redirect URI in the authorization request doesn't match what's registered in Google Cloud Console. Check:
APP_URLin.envmatches what you registered (e.g.,http://localhost:3000)- No trailing slash differences
- Protocol matches (http vs https)
- The URI is listed in Authorized redirect URIs, not Authorized JavaScript origins
User gets "No roles could be resolved"
This happens when Role Mappings are configured but Google doesn't send group claims. Solution: clear the Role Mappings section in the SSO config (leave it empty) to allow login without IdP-based role assignment.
Personal Gmail accounts can log in
If you set the consent screen to External, any Google account can authenticate. To restrict to your organization only, set the consent screen to Internal.
Key Differences from Entra ID
| Aspect | Google Workspace | Entra ID |
|---|---|---|
| Issuer URL | https://accounts.google.com (same for all orgs) | https://login.microsoftonline.com/{tenant-id}/v2.0 |
| SCIM provisioning | Not supported | Enterprise App -> Provisioning |
| Group claims | Not in standard OIDC tokens | Via optional claims configuration |
| User provisioning | JIT only (on first login) | JIT or SCIM (automatic sync) |
| Org restriction | OAuth consent screen: Internal | App registration: Single tenant |
| Free tier | Free with any Workspace plan | Free with any Azure account |
| Redirect URIs | Supports http://localhost for dev | Supports http://localhost for dev |