mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-19 06:02:52 +00:00
## What
Shorten the `title` frontmatter on 20 docs pages so that the rendered
`<title>` tag stays within the 70-character SEO limit.
The root layout appends ` | ZITADEL Docs` (15 chars) to every page
title, meaning the raw frontmatter `title` must be ≤ 55 characters. A
site scan flagged all 20 pages for the "Title too long" warning (titles
ranged from 71 to 92 characters in the final rendered tag).
## Why
Search engines may truncate or ignore `<title>` tags longer than 70
characters, hurting click-through rates and keyword relevance in search
results.
## How
Each title was rewritten to:
- Fit within 55 characters (leaving room for ` | ZITADEL Docs`)
- Front-load the primary search keyword (product name, protocol, or
feature)
- Include "ZITADEL" where users realistically search for `{feature}
ZITADEL`
- Avoid generic filler words ("Configure", "Set up", "Support for")
All 20 files already have a `sidebar_label` field that preserves the
original descriptive title for sidebar navigation — no navigation
changes result from this PR.
## Pages updated
| Page | Before (chars) | After (chars) |
|---|---|---|
| concepts/features/passkeys | 82 | 64 |
| guides/integrate/identity-providers/openldap | 72 | 58 |
| guides/solution-scenarios/b2b | 78 | 59 |
| guides/integrate/services/cloudflare-oidc | 86 | 54 |
| guides/integrate/login/hosted-login | 71 | 55 |
| guides/integrate/service-accounts/private-key-jwt | 76 | 56 |
| guides/integrate/service-accounts/client-credentials | 78 | 60 |
| guides/integrate/services/google-cloud | 92 | 57 |
| guides/solution-scenarios/saas | 88 | 65 |
| guides/migrate/sources/auth0 | 73 | 65 |
| guides/integrate/login-ui/oidc-standard | 81 | 55 |
| guides/integrate/login-ui/username-password | 73 | 59 |
| guides/integrate/login-ui/device-auth | 78 | 60 |
| guides/integrate/identity-providers/linkedin_oauth | 72 | 58 |
| guides/integrate/identity-providers/pingfederate-saml | 74 | 61 |
| guides/integrate/service-accounts/personal-access-token | 82 | 62 |
| legal/service-description/cloud-service-description | 76 | 61 |
| guides/integrate/login/login-users | 83 | 55 |
| guides/integrate/identity-providers/migrate | 74 | 65 |
| guides/manage/console/projects-overview | 71 | 62 |
All final `<title>` values are between 54 and 66 characters (well under
the 70-char limit).
132 lines
5.1 KiB
Plaintext
132 lines
5.1 KiB
Plaintext
---
|
|
title: ZITADEL on Google Cloud Workforce Identity
|
|
description: "Configure Workforce Identity Federation with ZITADEL to log in users and assign roles on Google Cloud using OIDC claims"
|
|
sidebar_label: Google Cloud
|
|
---
|
|
|
|
import CreateApp from "../application/_application.mdx";
|
|
|
|
This guide shows how to login users and assign roles with [Workforce Identity Federation to Google Cloud](https://cloud.google.com/iam/docs/workforce-identity-federation).
|
|
|
|
It covers how to:
|
|
|
|
- create and configure your application in ZITADEL
|
|
- configure an Action to transform claims
|
|
- create and configure the connection to Google Cloud with Workforce Identity Federation using OpenID Connect (OIDC)
|
|
|
|
Prerequisites:
|
|
|
|
- existing ZITADEL Instance, if not present follow [this guide](/guides/start/quickstart)
|
|
- existing ZITADEL Organization, if not present follow [this guide](/guides/manage/console/organizations-overview)
|
|
- existing ZITADEL project, if not present follow the first 3 steps [here](/guides/manage/console/projects-overview)
|
|
- prerequisites on Google Cloud side [in the settings guide](https://cloud.google.com/iam/docs/configuring-workforce-identity-federation).
|
|
|
|
> We have to switch between ZITADEL and a Google Cloud. If the headings begin with "ZITADEL" switch to the ZITADEL Management Console and if
|
|
> the headings start with "Google Cloud" please refer to the configuration guide on Google Cloud.
|
|
|
|
## **Google Cloud**: Configure
|
|
|
|
Follow the steps **Before you begin**, **Required roles**, and **create a workforce identity pool** (OIDC) in the [in the configuration guide](https://cloud.google.com/iam/docs/configuring-workforce-identity-federation).
|
|
|
|
Before you create the workforce identity pool provider you should create your application in ZITADEL.
|
|
|
|
## **ZITADEL**: Create the application
|
|
|
|
In your existing project:
|
|
|
|
First of all we create the application in your project.
|
|
|
|
<Callout>
|
|
Google Cloud requires just an ID Token as JWT including the [described required and optional scopes](https://cloud.google.com/iam/docs/workforce-identity-federation#attribute-mappings).
|
|
</Callout>
|
|
|
|
Create a new application and click on "I'm a pro. Skip this wizard."
|
|
|
|
- **Application Type**: Web
|
|
- **Grant Types**: Implicit
|
|
- **Response Type**: ID Token
|
|
- **Authentication Method**: None
|
|
|
|
<Callout>
|
|
You need to add the redirect URL and configure token settings after creating the application.
|
|
</Callout>
|
|
|
|

|
|
|
|
## **ZITADEL**: Redirect url
|
|
|
|

|
|
|
|
After creating, go to the application settings "Redirect settings" and add the redirect url from Googles configuration guide.
|
|
It looks something like `https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID`.
|
|
|
|
Save the settings.
|
|
|
|
<Callout type="warn">
|
|
Make sure to replace the `WORKFORCE_POOL_ID` and `WORKFORCE_PROVIDER_ID` with your values in the redirect url
|
|
</Callout>
|
|
|
|
## **ZITADEL**: Token settings
|
|
|
|

|
|
|
|
After creating, go to the application settings "Token settings" and configure as follows:
|
|
|
|
- **Auth Token Type**: JWT
|
|
- **Add user roles to the access token**: disabled (optional)
|
|
- **User roles inside ID Token**: enabled
|
|
- **User Info inside ID Token**: enabled
|
|
|
|
Save the settings.
|
|
|
|
## **ZITADEL**: Custom claims
|
|
|
|
Go to your project and create roles according to the Groups in Google Cloud.
|
|
Authorize a test user by assigning roles in ZITADEL.
|
|
|
|
Google Cloud expects some claims, including groups, in a specific format as [described here](https://cloud.google.com/iam/docs/workforce-identity-federation#attribute-mappings).
|
|
Claims can be transformed in ZITADEL with [Actions](/guides/manage/console/actions-overview).
|
|
|
|
Create an Action with the following code to flatten the roles and include the claim for the users' display name.
|
|
|
|
<Callout>
|
|
If you want to configure a special attribute mapping in the workforce identity pool provider, then adjust the claims accordingly.
|
|
</Callout>
|
|
|
|
```javascript
|
|
function googleGroups(ctx, api) {
|
|
if (ctx.v1.user.grants == undefined || ctx.v1.user.grants.count == 0) {
|
|
return;
|
|
}
|
|
|
|
let grants = [];
|
|
ctx.v1.user.grants.grants.forEach(claim => {
|
|
claim.roles.forEach(role => {
|
|
grants.push(claim.projectId+':'+role)
|
|
})
|
|
})
|
|
|
|
api.v1.claims.setClaim('google.groups', grants)
|
|
api.v1.claims.setClaim('google.display_name', ctx.v1.getUser().human.displayName)
|
|
}
|
|
|
|
```
|
|
|
|

|
|
|
|
<Callout type="warn">
|
|
Make sure that the name of the action matches the name of the function.
|
|
</Callout>
|
|
|
|
And add the the Action Script to the following Flow and Trigger:
|
|
|
|
- **Flow Type**: Complement Token
|
|
- **Trigger Type**: Pre access token creation
|
|
- **Actions**: googleGroups
|
|
|
|

|
|
|
|
## **Google Cloud**: Create a WIP provider
|
|
|
|
Complete the steps in the [in the configuration guide](https://cloud.google.com/iam/docs/configuring-workforce-identity-federation) with the `ISSUER_URI` and `CLIENT_ID` from ZITADEL.
|