Prerequisites
- A Google Workspace account with super admin access
- A verified custom domain on your Auth application
Configure Google Workspace SAML
Create a custom SAML app in Google
- Open the Google Admin Console
- Go to Apps > Web and mobile apps
- Click Add app > Add custom SAML app
- Enter an app name (e.g. “Prelude Auth”) and click Continue
- On the Google Identity Provider details screen, click Download metadata (or copy the SSO URL, Entity ID, and Certificate). Click Continue.
Create the SAML connection in Prelude
Create the connection from Google’s metadata. Start it disabled — you will enable it once the SP URLs are wired back into Google. If you downloaded the metadata XML, base64-encode it and pass it as Alternatively, supply the IdP values explicitly instead of the metadata XML:
The response contains an
idp_metadata_xml:| Field | Description |
|---|---|
name | A human-readable label for the connection. |
enabled | Set to false while you finish IdP setup; flip to true at the end. |
idp_metadata_xml | Base64-encoded (or raw) IdP metadata XML downloaded from Google. Provide exactly one IdP source. |
idp | Explicit IdP block — an alternative to idp_metadata_xml. |
behavior.* | Provisioning and enforcement options — see the Introduction. |
sp block with the values you need next (sp.entity_id and sp.acs_url).Enter the SP details in Google
Back in the Google Admin Console, on the Service provider details screen:
- Set ACS URL to the
sp.acs_urlfrom the response - Set Entity ID to the
sp.entity_idfrom the response - Set Name ID format to
EMAIL - Set Name ID to Basic Information > Primary email
- Click Continue
Map attributes
On the Attributes screen, map Google directory fields to the attribute names Prelude expects. The Google provider defaults to snake_case names, so map:
Click Finish.
| Google directory field | App attribute |
|---|---|
| First name | first_name |
| Last name | last_name |
| Primary email | email |
If you use different attribute names on the Google side, override them in
the connection’s
mapping block via a PUT request.Delete the connection
saml:<connection_id> user identifiers are retained so historical sessions stay auditable.