apps/docs/content/guides/manage/console/users-overview.mdx
import CreateUser from './_create-user.mdx';
ZITADEL supports authentication and authorization for different user types. We mainly differentiate between users (interactive) and Service Accounts (machine-to-machine).
Users represent actual people who log in via an interactive interface (e.g., a login page).
Read more on how to login users with ZITADEL.
<TerminologyUpdate newTerm="Service Accounts" oldTerms={["Service User", "Machine Users", "Technical Account"]} />
Service accounts represent machines, backend services, or IoT devices requiring non-interactive access.
To see how service accounts are utilized in practice, check out our NextJS B2B Demo application.
Federated users are identities managed by a third-party Identity Provider (IdP) such as Google, Azure AD, or GitHub.
In a multi-tenancy architecture, users are typically isolated within Organizations. However, using External User Grants, an organization can invite users from another organization to access their projects. These invited users are referred to as External Users within the context of the inviting organization.
Any user—whether User or Service Account—can be assigned an Administrator Role.
A user with an administrator role is not just an end-user of your application but also has permissions to manage specific aspects of the ZITADEL instance, organization, or project (e.g., ORG_OWNER, PROJECT_OWNER).
id or their loginname combined with the Organization Domain (e.g., [email protected]).How you organize users depends on your scenario:
ZITADEL does not enforce a native hierarchy or inheritance for users or organizations. We recommend structuring users along the smallest unit of groups (Organizations). You can use organization metadata or your own business logic to map complex hierarchies if needed.
ZITADEL provides a key-value storage system for users, which is essential for building complex applications.
Example Use Case:
In a Point of Sales application, you could add a stripeCustomerId as a metadata key to a user. Your client application can then read this metadata to fetch payment details directly from the Stripe API.
Accessing Metadata: Metadata can be requested via the Auth and Management APIs, the Userinfo endpoint, or asserted directly into the ID Token.
urn:zitadel:iam:user:metadata to your authentication request.The roles assigned to a user are displayed on user profile pages.
To access these roles in your application: