OIDC Single Sign-On with Google Workspace
Who this guide is for: The Google Workspace administrator who manages your organization’s Google tenant. You will need Google Workspace Super Admin access. See also: SSO Admin Guide for the EmbayLMS configuration side.
Overview
This guide walks through creating an OAuth 2.0 / OIDC client in Google Workspace and connecting it to EmbayLMS. Once complete, your users can click Sign in with SSO on the EmbayLMS login page and authenticate with their Google Workspace account.
Protocol: OpenID Connect (OIDC), authorization code flow
Prerequisites
- Google Workspace Super Admin access
- EmbayLMS admin access
- Your EmbayLMS tenant slug (e.g.,
acmeforacme.embaylms.com)
Step 1 — Create an OAuth 2.0 client in Google Cloud Console
- Go to the Google Cloud Console and select or create a project for your organization.
- Navigate to APIs & Services → Credentials.
- Click Create Credentials → OAuth client ID.
- If prompted, configure the OAuth consent screen first:
- Set User type to Internal (limits access to your Workspace org).
- Fill in the app name (e.g.,
EmbayLMS) and support email. - Add the scope:
openid,email,profile. - Save.
- Back on Create OAuth client ID:
- Application type: Web application
- Name:
EmbayLMS - Authorized redirect URIs — add:
Replace
https://{slug}.embaylms.com/api/auth/oidc/{slug}/callback{slug}with your EmbayLMS tenant slug.
- Click Create.
Google will display your Client ID and Client Secret — copy both now.
Step 2 — Note the Google OIDC discovery URL
Google’s OIDC discovery URL is always:
https://accounts.google.com/.well-known/openid-configurationYou do not need to find this yourself — use it exactly as shown above.
Step 3 — Enter values in EmbayLMS
- In EmbayLMS, navigate to Admin Panel → Settings → User Management → SSO / Identity.
- Click Add Identity Provider.
- Select Google Workspace as the provider type.
- Fill in the fields:
| EmbayLMS Field | Value |
|---|---|
| OIDC Discovery URL | https://accounts.google.com/.well-known/openid-configuration |
| Client ID | The Client ID from Step 1 |
| Client Secret | The Client Secret from Step 1 |
- Under JIT Provisioning, configure:
- Enabled: ON (recommended — creates accounts on first login)
- Default role:
learner
- Click Save and ensure the configuration is set to Enabled.
Step 4 — Test
- Open a private / incognito browser window.
- Navigate to
https://{slug}.embaylms.com/login. - Click Sign in with SSO.
- You should be redirected to the Google sign-in page.
- Sign in with a Google Workspace account in your organization.
- You should land on the EmbayLMS dashboard.
Configuration reference
| Setting | Description | Example / Default |
|---|---|---|
| Provider type | Select Google Workspace | google |
| OIDC Discovery URL | Google’s standard OIDC endpoint | https://accounts.google.com/.well-known/openid-configuration |
| Client ID | From Google Cloud Console OAuth credentials | 123456789-abc...apps.googleusercontent.com |
| Client Secret | From Google Cloud Console OAuth credentials | Required |
| JIT provisioning | Auto-create accounts on first login | Enabled |
| Default JIT role | Role assigned to new users | learner |
Troubleshooting
“Error 400: redirect_uri_mismatch” The redirect URI in Google Cloud Console does not match exactly. Ensure the authorized redirect URI is:
https://{slug}.embaylms.com/api/auth/oidc/{slug}/callbackNo trailing slash. Check the slug matches your EmbayLMS tenant exactly.
“Error 403: access_denied” The OAuth consent screen is set to External and the signing-in user is not added as a test user, OR the consent screen is Internal and the user is outside your Google Workspace organization. Verify the user belongs to your Workspace org.
“Your account was not found” in EmbayLMS JIT provisioning is disabled. Enable it in EmbayLMS (Settings → User Management → SSO / Identity → Edit) or pre-create the user account manually.
“The SSO response from your identity provider was invalid” The Client Secret stored in EmbayLMS may be incorrect or rotated. Generate a new secret in Google Cloud Console and update it in EmbayLMS.