Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial draft of identity docs #5133

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions docs/self-managed/identity/orchestration-identity/configuration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
id: configuration
title: "Configuration"
description: "Learn about the Identity configuration options available in your Orchestration cluster."
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

As a Spring Boot application, Identity supports any standard
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔧 effectively Identity is part of the Camunda 8 application, I would thus keep this statement general with regards to Camunda 8 as spring boot application.

Suggested change
As a Spring Boot application, Identity supports any standard
As a Spring Boot application, Camunda 8 supports any standard

[Spring configuration](https://docs.spring.io/spring-boot/reference/features/external-config.html) method.

<!-- updates must be made to BOTH tables -->
<Tabs>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ what is the default config we want to refer to here? Because this differs by distribution, whether it's c8run or helm, based on the second tab it seems helm? I can then provide the actual defaults next. Some like SPRING_PROFILES_ACTIVE are also not relevant then as the user can't control them.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see in installation we refer to this as reference from a c8run perspective, I woudl thus suggest to have tabs by distribution c8run and helm. I would omit the ENV variable tab and instead extend the spring boot note by the fact that all properties can be provided as environment variables too, like we do in other places of the docs like here https://docs.camunda.io/docs/next/self-managed/zeebe-deployment/configuration/environment-variables/#environment-variables-for-configuration

Copy link
Contributor Author

@conceptualshark conceptualshark Mar 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally I think this guide should reflect Helm (and other production-ready distributions when ready) and not C8Run at all, as C8Run is unique, not for production, and its configuration requirements are largely handled on its own page. I assume that other production-ready distributions, when available, would reflect the same defaults as Helm?

We've historically had difficulty with users converting from Helm config to environment variables, and the docs team has discussed listing them out separately as we can - @akeller do you have any input here? My thinking was to start having this available for Docker and other distributions down the line, to prevent our docs from being as Helm-biased a they are now.

(Edit: Recognizing that Helm isn't ready for prod, either - but it will be!)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My current understanding is C8Run is for onboarding and non-production use cases to get up and running as quickly as possible (and maybe even, ideally, with no configuration?). Since we prioritize the Java Spring dev during onboarding, leading with the Spring configuration makes sense.

Once we start talking about production distributions, things are a bit unclear to me - what's our happy path or recommendation when it comes to config? Default config feels like a PM decision and I would defer to @FarkasRabai and/or @theburi.

I do think we need to be super explicit about Helm config vs. environment variables vs. properties and not expect our users to do the mapping themselves and add _ or . appropriately. We can't just say "follow this pattern" and document the configuration fully in only one way.

🤞 hope this helps. LMK if there if anything else I can clarify.

<TabItem value="env" label="Environment variables" default>

| Environment variable | Description | Default value |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭 These variables are applicable to all components in the orchestration cluster so I think we need to find a central home for these. As per @megglos suggestion I wonder if we can create a new area for the Core components?

It may be that its more important to just get this in place regardless and then adjust as we go, happy to align off PR.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Followed up on the related issue, but I think ideally we move forward with this iteration, and then make additional Core-related changes in subsequent PRs: https://github.com/camunda/documentation-team/issues/465#issuecomment-2701824081

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In favor of having this as a first increment too.

| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------- |
| `SPRING_PROFILES_ACTIVE` | **Note:** This property will be deprecated as additional authentication methods become available. | `consolidated-auth` |
| `CAMUNDA_SECURITY_AUTHENTICATION_METHOD` | The authentication method to use. | `basic` |
| `CAMUNDA_SECURITY_AUTHENTICATION_UNAUTHENTICATED-API` | If the API is enabled without authentication. | `true` |
| `CAMUNDA_PERSISTENT_SESSIONS_ENABLED` | Enables shared authentication between the Orchestration web applications (Operate and Tasklist). | `true` |
| `CAMUNDA_SECURITY_AUTHORIZATIONS_ENABLED` | If authorizations are enabled. | `true` |
| `CAMUNDA_SECURITY_INITIALIZATION_USERS[0]_USERNAME` | The username of the first user. | `demo` |
| `CAMUNDA_SECURITY_INITIALIZATION_USERS[0]_PASSWORD` | The password of the first user. | `demo` |
| `CAMUNDA_SECURITY_INITIALIZATION_USERS[0]_NAME` | The name of the first user. | Demo |
| `CAMUNDA_SECURITY_INITIALIZATION_USERS[0]_EMAIL` | The email address of the first user. | `demo@demo.com` |

</TabItem>
<TabItem value="helm" label="Helm properties" default>

| Helm property | Description | Default value |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------- |
| `spring.profiles.active` | **Note:** This property will be deprecated as additional authentication methods become available. | `consolidated-auth` |
| `camunda.security.authentication.method` | The authentication method to use. | `basic` |
| `camunda.security.authentication.unauthenticated-api` | If the API is enabled without authentication. | `true` |
| `camunda.persistent.sessions.enabled` | Enables shared authentication between the Orchestration web applications (Operate and Tasklist). | `true` |
| `camunda.security.authorizations.enabled` | If authorizations are enabled. | `true` |
| `camunda.security.initialization.users[0].username` | The username of the first user. | `demo` |
| `camunda.security.initialization.users[0].password` | The password of the first user. | `demo` |
| `camunda.security.initialization.users[0].name` | The name of the first user. | `Demo` |
| `camunda.security.initialization.users[0].email` | The email address of the first user. | `demo@demo.com` |

</TabItem>
</Tabs>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
id: installation
title: Installation
description: "Learn how Identity is bundled with your default Orchestration cluster."
---

Identity is included by default with the deployment of any [Orchestration cluster](/self-managed/reference-architecture/reference-architecture.md#orchestration-cluster). Within an Orchestration cluster, Identity provides unified, cluster-level identity management and authorizations.

Identity for Orchestration clusters is available via [Helm install](/self-managed/setup/install.md), and for local development via [Camunda 8 Run](/self-managed/setup/deploy/local/c8run.md).
21 changes: 11 additions & 10 deletions docs/self-managed/identity/what-is-identity.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,17 @@ sidebar_label: "What is Identity?"
description: "Identity is the component within the Camunda 8 stack responsible for authentication and authorization."
---

Identity is the component within the Camunda 8 stack responsible for authentication and authorization. It allows you to manage:
Identity is the component within the Camunda 8 stack responsible for authentication and authorization. Identity functions differently in Orchestration clusters and in Console and Web Modeler. For more information on these differences, see the Self-Managed [reference architecture](/self-managed/reference-architecture/reference-architecture.md#orchestration-cluster-vs-web-modeler-and-console).

## Identity for Orchestration clusters

Identity is included by default in the [Orchestration cluster](/self-managed//reference-architecture/reference-architecture.md#orchestration-cluster), and does not require any external dependencies. For more information, see the Identity [configuration options](/self-managed/identity/orchestration-identity/configuration.md).

## Identity for Web Modeler and Console

For [Web Modeler and Console deployments](/self-managed/reference-architecture/reference-architecture.md#), Identity runs as a separate and dedicated component. For more information, see the guides on using an [existing Keycloak](/self-managed/setup/guides/using-existing-keycloak.md) instance, and connecting to an [OIDC provider](/self-managed/setup/guides/connect-to-an-oidc-provider.md).

Once deployed, Identity manages the following in Web Modeler and Console:

- Applications
- APIs
Expand All @@ -19,12 +29,3 @@ For example, using Identity you can:
- [Create a group](/self-managed/identity/user-guide/groups/create-group.md) to apply a set of roles and authorizations to users.
- [Manage resource authorizations](/self-managed/identity/user-guide/authorizations/managing-resource-authorizations.md) to control resource access within the Identity application.
- [Utilize configuration variables](/self-managed/identity/deployment/configuration-variables.md).

## Next steps

If you're new to Identity, we suggest reviewing our [getting started guide](./getting-started/install-identity.md).

You can use Identity for authentication with Keycloak. The following guidance can be used during platform installation and deployment:

- [Use existing Keycloak](/self-managed/setup/guides/using-existing-keycloak.md)
- [Connect to an OIDC provider](/self-managed/setup/guides/connect-to-an-oidc-provider.md)
106 changes: 58 additions & 48 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -1368,63 +1368,73 @@ module.exports = {

Identity: [
"self-managed/identity/what-is-identity",
"self-managed/identity/getting-started/install-identity",
{
"User guide": [
{
Configuration: [
"self-managed/identity/user-guide/configuration/making-identity-production-ready",
"self-managed/identity/user-guide/configuration/configure-external-identity-provider",
"self-managed/identity/user-guide/configuration/configure-logging",
"self-managed/identity/user-guide/configuration/connect-to-an-existing-keycloak",
],
},
{
Roles: [
"self-managed/identity/user-guide/roles/add-assign-role",
"self-managed/identity/user-guide/roles/add-assign-permission",
],
},
{
Groups: [
"self-managed/identity/user-guide/groups/create-group",
"self-managed/identity/user-guide/groups/assign-users-roles-to-group",
],
},
{
Authorizations: [
"self-managed/identity/user-guide/authorizations/managing-resource-authorizations",
"self-managed/identity/user-guide/authorizations/managing-user-access",
"self-managed/identity/user-guide/authorizations/generating-m2m-tokens",
],
},
{
Tenants: [
"self-managed/identity/user-guide/tenants/managing-tenants",
],
},
"Orchestration cluster Identity": [
"self-managed/identity/orchestration-identity/installation",
"self-managed/identity/orchestration-identity/configuration",
],
},
{
"Identity for Web Modeler and Console": [
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭 How do you feel about positioning this one as Management cluster Identity?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would love to have a simple name for this, but right now we use "Web Modeler and Console" throughout the docs. For consistency - and to make it easier to update when/if this gets changed - I'd like to have it match for now.

"self-managed/identity/getting-started/install-identity",
{
"Mapping rules": [
"self-managed/identity/user-guide/mapping-rules/managing-mapping-rules",
"User guide": [
{
Configuration: [
"self-managed/identity/user-guide/configuration/making-identity-production-ready",
"self-managed/identity/user-guide/configuration/configure-external-identity-provider",
"self-managed/identity/user-guide/configuration/configure-logging",
"self-managed/identity/user-guide/configuration/connect-to-an-existing-keycloak",
],
},
{
Roles: [
"self-managed/identity/user-guide/roles/add-assign-role",
"self-managed/identity/user-guide/roles/add-assign-permission",
],
},
{
Groups: [
"self-managed/identity/user-guide/groups/create-group",
"self-managed/identity/user-guide/groups/assign-users-roles-to-group",
],
},
{
Authorizations: [
"self-managed/identity/user-guide/authorizations/managing-resource-authorizations",
"self-managed/identity/user-guide/authorizations/managing-user-access",
"self-managed/identity/user-guide/authorizations/generating-m2m-tokens",
],
},
{
Tenants: [
"self-managed/identity/user-guide/tenants/managing-tenants",
],
},
{
"Mapping rules": [
"self-managed/identity/user-guide/mapping-rules/managing-mapping-rules",
],
},
{
"Additional features": [
"self-managed/identity/user-guide/additional-features/adding-an-api",
"self-managed/identity/user-guide/additional-features/incorporate-applications",
],
},
],
},
{
"Additional features": [
"self-managed/identity/user-guide/additional-features/adding-an-api",
"self-managed/identity/user-guide/additional-features/incorporate-applications",
Deployment: [
"self-managed/identity/deployment/configuration-variables",
"self-managed/identity/deployment/application-monitoring",
"self-managed/identity/deployment/starting-configuration-for-identity",
"self-managed/identity/deployment/resource-management",
],
},
"self-managed/identity/troubleshooting/troubleshoot-identity",
],
},
{
Deployment: [
"self-managed/identity/deployment/configuration-variables",
"self-managed/identity/deployment/application-monitoring",
"self-managed/identity/deployment/starting-configuration-for-identity",
"self-managed/identity/deployment/resource-management",
],
},
"self-managed/identity/troubleshooting/troubleshoot-identity",
],
},
{
Expand Down
Loading