mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-21 06:54:25 +00:00
## Todos for release - [x] Configure Env in docs project on vercel - [x] Configure Root Path in the docs project on vercel - [ ] Remove old CSP https://github.com/zitadel/website/pull/1592 ## What we did This pull request migrates the project documentation from the old `docs/` directory to the new `apps/docs/` directory, introduces a new documentation system built with Next.js and Fumadocs, and updates all relevant references, configuration files, and documentation to reflect this change. It also adds new configuration and ignore files for the new documentation app, updates CI and linting to exclude the new docs from certain checks, and revises the contributing guidelines accordingly. **Documentation System Migration and New Docs App** * Migrated all documentation from `docs/` to `apps/docs/`, and updated all references in `README.md`, `CONTRIBUTING.md`, and other files to point to the new location. [[1]](diffhunk://#diff-eca12c0a30e25b4b46522ebf89465a03ba72a03f540796c979137931d8f92055L585-L640) [[2]](diffhunk://#diff-eca12c0a30e25b4b46522ebf89465a03ba72a03f540796c979137931d8f92055L660-R607) [[3]](diffhunk://#diff-eca12c0a30e25b4b46522ebf89465a03ba72a03f540796c979137931d8f92055L740-R687) [[4]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L2-R3) [[5]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L30-R30) * Added a new Next.js/Fumadocs-based documentation app under `apps/docs/`, including core app files, layouts, routing, search API, and a comprehensive `README.md` with development and contribution instructions. [[1]](diffhunk://#diff-5a1b07344a2c1b4d3f37b23ff1388b62cd9f57dea3c1cd23d8a0412b7602b132R1-R74) [[2]](diffhunk://#diff-462b9ad1eabbb7d1c29bb9c36e4931eb180fd7190900e6d2babf8f4d66ad1c28R1-R39) [[3]](diffhunk://#diff-e16ae25660ded787b10ac35dea96d5ecaacf895dae0afc8a9bd4382dc79a8c87R1-R7) [apps/docs/app/[[...slug]]/layout.tsxR1-R81](diffhunk://#diff-59e08acde4e805b7aeccef1dcf98f1d71dfc550777e6b9402085cee0e9fa4e0aR1-R81), [apps/docs/app/[[...slug]]/page.tsxR1-R79](diffhunk://#diff-e5df3f80d0fa01e12d63d81f29c57a9d14e846c78fd3beabb2ef768e38fd9580R1-R79), [[4]](diffhunk://#diff-389b34918e040cacaa87cd7201ffa462cc2b0b716736f537e3d3c660ac69353bR1-R7) [[5]](diffhunk://#diff-d3b03416d1c457b19f1c27b26f2db741412df841b875c26ccadc36e4522247f4R1-R29) [[6]](diffhunk://#diff-c8fb8339570a5305809be7c618e14705fd86390dc278e6ce8ba224a7bc8b0c3cR1-R25) **Configuration and Tooling Updates** * Updated `.github/workflows/codeql.yml`, `.golangci.yaml`, and `.github/dependabot.yml` to properly handle the new docs app: excluded `apps/docs` from certain checks, added npm dependency updates for the docs app, and excluded generated content. [[1]](diffhunk://#diff-12783128521e452af0cfac94b99b8d250413c516ec71fe6d97dbea666ff7ba27L8-R14) [[2]](diffhunk://#diff-9917ddc9f1c3304218f7269265b746d997c5c0615478177b5fceecd33ef47cb5R5-R6) [[3]](diffhunk://#diff-9917ddc9f1c3304218f7269265b746d997c5c0615478177b5fceecd33ef47cb5R126-R129) [[4]](diffhunk://#diff-dd4fbda47e51f1e35defb9275a9cd9c212ecde0b870cba89ddaaae65c5f3cd28R89-R106) * Updated `.devcontainer/devcontainer.json` to use the latest Go 1.25.3 version for consistency. **Licensing and Miscellaneous** * Added `apps/docs/` to the list of licensed directories in `LICENSING.md`. These changes ensure the documentation is now maintained in a modern, scalable system and all project tooling is updated to support the new structure. --------- Co-authored-by: Federico Coppede <[email protected]>
131 lines
5.0 KiB
Plaintext
131 lines
5.0 KiB
Plaintext
---
|
|
title: Log in with ZITADEL on Google Cloud with Workforce Identity Federation (OIDC)
|
|
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 configuration 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.
|