mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-24 00:02:15 +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]>
157 lines
8.1 KiB
Plaintext
157 lines
8.1 KiB
Plaintext
---
|
|
title: Self Service in ZITADEL
|
|
sidebar_label: Self Service
|
|
---
|
|
|
|
ZITADEL allows users to perform many tasks themselves.
|
|
For these tasks we either provide a user interface, or the tasks can be initiated or completed through ZITADEL's APIs.
|
|
|
|
It is important to understand that, depending on your use case, there will exist different user-types that want to perform different actions:
|
|
|
|
- `Users` are the end-users of your application. Like with any CIAM solution, users should be able to perform tasks like register/join, update their profile, manage authenticators, etc. There are certain actions that can be executed pre-login, yet others require the user to have a valid session.
|
|
- `Managers` are users with a [special administrator role](../../guides/manage/console/managers) within ZITADEL and can perform administrative actions such as system configuration or granting access rights to users.
|
|
|
|
All self-service interfaces are available in different [languages](/guides/manage/customize/texts#internationalization-i-18-n).
|
|
|
|
<Callout>
|
|
ZITADEL covers the typical "CIAM" self-service capabilities as well as delegated access management for multi-tenancy scenarios. Please refer to the section [Managers](#managers).
|
|
</Callout>
|
|
|
|
## Registration
|
|
|
|
<Callout>
|
|
You can pre-select a given organization by passing the scope `urn:zitadel:iam:org:domain:primary:{domainname}` in the authorization request.
|
|
This will force users to register only with the specified organization.
|
|
Furthermore, the branding and login settings (e.g., Social Login Providers) are directly shown to the user.
|
|
</Callout>
|
|
|
|
### Local account
|
|
|
|
Allows anonymous users and authenticated users, who are not yet in the given organization, to create an account (register) themselves.
|
|
|
|
- Mandatory profile fields
|
|
- Set password
|
|
- Accept terms of service and privacy policy
|
|
- User receives an email with a one-time code for verification purpose
|
|
- User has to enter the one-time code to finish registration
|
|
- User can re-request a new one-time code
|
|
|
|
The user is prompted on the first login to set up MFA.
|
|
This step can be made mandatory if MFA is enforced in the login policy.
|
|
|
|
### Existing Identity / SSO / Social Login
|
|
|
|
Anonymous users and authenticated users, who are not yet in the given organization, to register with an external identity provider.
|
|
An external identity provider can be a Social Login Provider or a pre-configured identity provider.
|
|
|
|
- Information from the external identity provider is used to pre-fill the profile information
|
|
- User can update the profile information
|
|
- An account is created within ZITADEL and linked with the external identity provider
|
|
|
|
#### Account Linking
|
|
|
|
When you log in with an external identity provider, and the user does not exist in ZITADEL, then an autoregister flow is triggered. The user is presented with two options:
|
|
|
|
- Create a new account: A new account will be created as stated above
|
|
- Autolink: The user is prompted to log in with an existing [local account](#local-account). If successful, the existing identity from the external identity provider will be linked with the local account. A user can now log in with either the local account or any of the linked external accounts.
|
|
|
|
## Login
|
|
|
|
### SSO / Social Logins
|
|
|
|
Given an external identity provider is configured on the instance or on the organization, then:
|
|
|
|
- the user will be shown a button for each identity provider as an alternative to log in with a [local account](#local-account)
|
|
- when clicking the button, the user will be redirected to the identity provider
|
|
- after successful login, the user will be redirected to the application
|
|
|
|
### Machines
|
|
|
|
Machine accounts can't use an interactive login but require other means of authentication, such as privately signed JWT or personal access tokens.
|
|
Read more about [Service Users](/guides/integrate/service-users/authenticate-service-users) and recommended [OpenID Connect Flows](/guides/integrate/login/oidc/oauth-recommended-flows#different-client-profiles).
|
|
|
|
## Logout
|
|
|
|
Users can terminate the session for all their users (logout).
|
|
A client can also implement this by calling the [specific endpoint](/apis/openidoauth/endpoints#end-session-endpoint).
|
|
|
|
## Profile
|
|
|
|
These actions are available for authenticated users only.
|
|
ZITADEL provides a self-service UI for the user profile out-of-the box under the path _$CUSTOM_DOMAIN/ui/console/users/me_.
|
|
You can also implement your own version in your application by using our APIs.
|
|
|
|
### Change password
|
|
|
|
Users can change their passwords.
|
|
The current password must be entered first.
|
|
|
|
### MFA / FIDO Passkeys
|
|
|
|
Users can set up and delete a second factor and FIDO Passkeys (Passwordless).
|
|
Available authenticators are:
|
|
|
|
- Time-based one-time password (TOTP) (Which are Authenticator Apps like Google/Microsoft Authenticator, Authy, etc.)
|
|
- One-time password sent as E-Mail
|
|
- One-time password sent as SMS
|
|
- FIDO Universal Second Factor (U2F) (Security Keys, Device, etc.)
|
|
- FIDO2 WebAuthN (Passkeys)
|
|
|
|
### Update Information
|
|
|
|
Users can change their profile information. This includes
|
|
|
|
- UserName
|
|
- First- and Last name
|
|
- Nickname
|
|
- Display Name
|
|
- Gender
|
|
- Language
|
|
- Email address
|
|
- Phone number
|
|
|
|
### Email Verification
|
|
|
|
Users can change their email address.
|
|
The user receives a one-time password and can verify control over the given email address.
|
|
|
|
### Phone Verification
|
|
|
|
Users can change their phone number.
|
|
The user receives a one-time password and can verify control over the given phone number.
|
|
|
|
### Identity providers
|
|
|
|
Users can create a connection between a [local user account](#local-account) and an [external identity](#existing-identity--sso--social-login).
|
|
The user can log in with any of the linked accounts.
|
|
[Linking of external accounts](#account-linking) is done during the login process.
|
|
|
|
## Managers
|
|
|
|
It is important to note that a `Manager` is not simply an administrative user, but can be used to create much more advanced scenarios such as delegating administration of a whole organization to a user, acting then as administrator and permission manager of that user group.
|
|
|
|
Thus, we will explain service for two of the most common scenarios in ZITADEL:
|
|
|
|
- `Managers in isolation`: Granting administrative permissions within a single organization context.
|
|
- `Managers in delegation`: Granting administrative permissions to a user from a different organization where the organizations depend on each other
|
|
|
|
A list of [Administrator Roles](../../guides/manage/console/managers#roles) is available with a description of permissions.
|
|
Managers can be assigned to both human users and service users, e.g., for managing certain tasks programmatically.
|
|
|
|
### Managers in isolation
|
|
|
|
A user with Administrator roles `IAM_OWNER` or `ORG_OWNER` might want to assign other users from their organization elevated permissions to handle certain aspects of the IAM tasks.
|
|
This could be permission to assign authorizations within this isolated organization (`ORG_USER_MANAGER`) or handling setup of projects and applications (`PROJECT_OWNER`).
|
|
|
|
### Managers in delegation
|
|
|
|
In a setup like described in the [B2B Scenario](/guides/solution-scenarios/b2b), there exists an organization of the project owner and a customer organization.
|
|
The project is granted to the customer organization, such that the customer can access the project and assign authorization to their users.
|
|
|
|
Given such as set up the owner might want to give one administrative user of the customer organization the role `ORG_OWNER`.
|
|
Equipped with this Administrator Role, the user can perform actions like configuring their own SSO/Identity Provider, set security policy for their organization, customize branding, or assign project or Administrator roles to other users.
|
|
|
|
An `ORG_OWNER` can also not only delegate Administrator roles to other users [as described in the earlier section](#managers-in-isolation) but also manage all aspects of their own organization as well as authorize users to use the granted project.
|
|
With ZITADEL there is no need to replicate all settings and projects across organizations.
|
|
Instead, you could set up the project in one organization, delegate it to different organizations, and then appoint users as Managers of that organization to allow for self-service in a multi-tenancy scenario.
|