- Google Workspace: Primary directory service and user store
- Okta: Identity Provider (IdP) for SSO and user management
- GitHub: Service Provider (SP) receiving authentication via Okta
- User Flow: Google → Okta → GitHub
- Go to Google Cloud Console
- Create a new project or select existing project
- Enable the Admin SDK API:
- Navigate to "APIs & Services" → "Library"
- Search for "Admin SDK API" and enable it
- Create service account credentials:
- Go to "APIs & Services" → "Credentials"
- Click "Create Credentials" → "Service Account"
- Name it (e.g., "okta-google-sync")
- Download the JSON key file
- In Google Cloud Console, go to your service account
- Click "Enable Google Workspace Domain-wide Delegation"
- Note the Client ID (you'll need this later)
- In Google Admin Console:
- Go to Security → API Controls → Domain-wide Delegation
- Add new with the Client ID
- Add these OAuth scopes:
https://www.googleapis.com/auth/admin.directory.user https://www.googleapis.com/auth/admin.directory.group https://www.googleapis.com/auth/admin.directory.group.member
- Log into Okta Admin Console
- Go to Directory → Directory Integrations
- Click Add Directory → Google Workspace
- Configure the integration:
- Domain: Your Google Workspace domain
- Service Account Email: From your JSON key file
- Private Key: From your JSON key file
- Admin Email: A Google Workspace admin email
- Configure import settings:
- Select user attributes to import
- Set up group imports if needed
- Configure import schedules
- Run initial import to sync users from Google to Okta
- In Okta Admin Console, go to Applications → Applications
- Click Add Application → Create New App
- Choose SAML 2.0
- Configure General Settings:
- App name: "Google Workspace"
- App logo: Upload Google Workspace logo if desired
- Configure SAML Settings:
- Single sign on URL:
https://www.google.com/a/[yourdomain.com]/acs - Audience URI:
https://www.google.com/a/[yourdomain.com] - Name ID format: EmailAddress
- Application username: Email
- Single sign on URL:
- Add attribute statements:
- Name:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress - Value:
user.email
- Name:
- Download the Okta certificate and note the SSO URL
- In Google Admin Console, go to Security → Authentication → SSO with third-party IdP
- Check Set up SSO with third-party identity provider
- Configure:
- Sign-in page URL: Okta SSO URL from Step 4
- Sign-out page URL: Okta sign-out URL
- Verification certificate: Upload Okta certificate
- Test the configuration with a test user
- Go to your GitHub Enterprise or Organization settings
- Navigate to Authentication security → SAML single sign-on
- Or for Organizations: Settings → Authentication security
- In Okta Admin Console, go to Applications → Applications
- Click Add Application → Browse App Catalog
- Search for "GitHub" and select GitHub Enterprise Cloud
- Click Add Integration
- Configure General Settings:
- Application label: "GitHub"
- Configure Sign-On Options:
- GitHub Organization: Your GitHub org name
- Base URL:
https://github.com/orgs/[your-org-name]
- Note the SAML 2.0 settings:
- Identity Provider SSO URL
- Identity Provider Issuer
- X.509 Certificate
- In GitHub Organization settings, go to Authentication security
- Configure SAML:
- Sign on URL: Okta IdP SSO URL
- Issuer: Okta IdP Issuer
- Public certificate: Upload Okta certificate
- Test SAML configuration
- Enable SAML SSO for your organization
- In Okta Admin Console, go to each application (Google Workspace and GitHub)
- Go to Assignments tab
- Assign users or groups to each application
- Configure any specific user attributes or group memberships
- In Okta, create groups that match your organizational structure
- Assign users to appropriate groups
- Configure group-based access to applications
- Set up Okta access policies for additional security
- Test user login flow:
- User accesses Google Workspace → redirected to Okta → authenticated → back to Google
- User accesses GitHub → redirected to Okta → authenticated → back to GitHub
- Test user provisioning and deprovisioning
- Verify group memberships sync correctly
- Test password changes propagate appropriately
- Enable MFA in Okta for additional security
- Configure session policies
- Set up monitoring and alerts
- Review and adjust access policies
- User Management: Users are mastered in Google Workspace and synced to Okta
- Authentication Flow: All SSO goes through Okta, even for Google Workspace
- GitHub Enterprise Cloud: Organization members must authenticate via SAML after enabling SSO
- GitHub Teams: Manual management of GitHub team memberships required (GitHub Enterprise Cloud doesn't support automatic team provisioning via SAML)
- Member Access: Existing GitHub organization members will lose access until they authenticate via SAML
- Testing: Always test with a small group of users before full deployment
- Backup Access: Ensure you have backup admin access configured in case of SSO issues
- GitHub Billing: Ensure your GitHub Enterprise Cloud subscription supports SAML SSO
This setup provides centralized identity management with Google as the source of truth for users, Okta handling SSO, and seamless access to both Google Workspace and GitHub Enterprise Cloud.