Google

Use these instructions to set up Google as your SSO provider for Tonic Structural.

To configure Google SSO:

  1. Create an OAuth 2.0 Client ID - Requires GCP project permissions to create credentials.

  2. Create and configure a service account to read user groups - In addition to the above, requires the Google workspace administrator.

The OAuth client ID is sufficient to enable logging in with your Google account, but no groups are parsed. If the service account is misconfigured, the login succeeds without the groups being parsed and a warning is logged to the server with more details. For the provided links, it is assumed that the user is logged into their administrative account and using the same project.

Creating an OAuth 2.0 client id

  1. Click Create credentials, located near the top.

  1. Select OAuth client ID.

  1. Select Web application as the application type.

  2. Choose a name.

  3. Under Authorized redirect URIs, add the URL of the Structural server with the endpoint /sso/callback.

  1. Note the client ID and client secret. You will need to provide them to Structural.

Providing the client information to Structural

Configure the following environment settings in the Structural web server container:

  • TONIC_SSO_CLIENT_ID: <client id of oauth credentials>

  • TONIC_SSO_CLIENT_SECRET: <client secret of oauth credentials>

  • TONIC_SSO_PROVIDER: google

Create and configure a service account to read user groups

To set up the service account:

Create a service account with a json key

For official documentation, see https://cloud.google.com/iam/docs/creating-managing-service-accounts and https://cloud.google.com/iam/docs/creating-managing-service-account-keys.

  1. Click Create service account, located near the top

  1. Skip all the subsequent optional steps.

  2. After you create the service account, select it and go into the Keys tab.

  1. Select Add Key -> Create new key and select JSON as the key type. The browser automatically downloads a json file.

  2. The json file must be base64 encoded to set it as a variable in your Docker Compose file. An example command to do this is: cat /path/to/json/file | base64 -w 0 The long output of this command is set as the value of TONIC_SSO_SERVICE_ACCOUNT_JSON_BASE64 in the Docker Compose file

  3. Take note of the service account email. You will need this later.

Enable the Admin SDK API

  1. Click Enable if it is not yet enabled.

Add the Groups Reader admin role to the service account

  1. Go to https://admin.google.com and select Admin Roles.

  2. Select Groups Reader from the list of predefined roles.

  3. Click Assign Roles -> Assign service accounts.

  4. Copy the service account email into the box, then click Add.

  5. To save these changes, click Assign Role.

Providing the service account and group information to Structural

In the Structural web server container, set the following Structural environment settings:

  • TONIC_SSO_SERVICE_ACCOUNT_JSON_BASE64: <base64 encoded json key>

  • TONIC_SSO_DOMAIN: <domain name> - The domain name is the workspace domain. For example, for support@tonic.ai, the domain is tonic.ai.

  • TONIC_SSO_GROUP_FILTER_REGEX: Identifies the allowed SSO groups for Structural. For details, go to Synchronizing SSO groups with Tonic Structural.

For Kubernetes, TONIC_SSO_SERVICE_ACCOUNT_JSON_BASE64 can be provided through the tonic-sso-google-account-service-json-secret secret

Last updated