This guide walks you through setting up a Google Workspace identity integration. This entails creating a service account, configuring domain wide delegation for the service account, and downloading the credentials for the service account to access necessary fields to authenticate with the Google Workspace API.
Before You Begin
You need to already have access to the Google Workspace Admin Console and you must have a Google Workspace account (not necessarily the same one that you log in to the admin colse with) set up that you will use with domain-wide delegation. This account should have the following permissions:
- Manage customer > Read customer
- Manage customer > Read customer > Read customer branding settings
- Manage customer > Read customer > Read customer contact info
- Manage customer > Read customer > Read customer onboard settings
- Manage customer > Read customer > Read customer profile settings
- Manage customer > Read customer > Read customer support settings
- Manage customer > Read customer > Read customer timezone settings
- Groups
- Groups > Create
- Groups > Delete
- Groups > Read
- Groups > Update
- Organization Units > Read
- Users > Create
- Users > Delete
- Users > Read
- Users > Update
- Users > Update > Add/Remove Aliases
- Users > Update > Force Password Change
- Users > Update > Move Users
- Users > Update > Rename Users
- Users > Update > Reset Password
- Users > Update > Suspend Users
You will also need to have access to the Google Cloud Console.
1. Create a Service Account
Follow this guide to create a new service account. If you don't already have a Google Cloud Console project, you will need to create one; instructions are included in the linked guide. The Cloud Console project will need to have access to the Admin SDK API. If you are using an existing project and need to enable access to the Admin SDK API, you can use this page to do so.
2. Set up Domain Wide Delegation
You can use this guide to learn how to set up domain wide delegation. When prompted for the OAuth scopes to enable for the delegation, use the following: https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/admin.directory.group,https://www.googleapis.com/auth/admin.directory.user,https://www.googleapis.com/auth/admin.directory.rolemanagement,https://www.googleapis.com/auth/admin.directory.user.security,https://www.googleapis.com/auth/admin.reports.audit.readonly
.
3. Download the Service Account Credentials
In the Google Cloud Console, navigate to IAM & Admin > Service Accounts, then select the service account you created in step 1. Open the "Keys" tab, and select "Add Key" > "Create new key" > JSON. This will create the key and download it automatically. Protect this key file, as it allows access to your Google Workspace account via delegation.
4. Extract the Service Account Credentials
Make a note of the following fields from the downloaded key file: client_id
, private_key
, token_uri
, and client_email
.
Consider the following example key file:
{
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"client_email": "EXAMPLE@EXAMPLE.iam.gserviceaccount.com",
"client_id": "1234567890",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/EXAMPLEt%40EXAMPLE.iam.gserviceaccount.com",
"private_key": "-----BEGIN PRIVATE KEY-----\nKEY MATERIAL HERE-----END PRIVATE KEY-----\n",
"private_key_id": "1234567890",
"project_id": "example-project-id",
"token_uri": "https://oauth2.googleapis.com/token",
"type": "service_account",
"universe_domain": "googleapis.com"
}
In this example...
client_id
is1234567890
private_key
is-----BEGIN PRIVATE KEY-----\nKEY MATERIAL HERE-----END PRIVATE KEY-----\n
token_uri
ishttps://oauth2.googleapis.com/token
client_email
isEXAMPLE@EXAMPLE.iam.gserviceaccount.com
5. Configure the Integration
Create your integration by supplying all of the required and any desired optional values.
client_email This is the client_email
value gathered in step 4.
client_id This is the client_id
value gathered in step 4.
client_secret This is the private_key
value gathered in step 4.
token_url (Optional) This is the token_uri
value gathered in step 4.
delegate This is the email address of the user you are delegating access to.