Skip to content

Commit 4ab85ce

Browse files
committed
feat(connectors): OIDC support
1 parent a186b28 commit 4ab85ce

File tree

6 files changed

+48
-44
lines changed

6 files changed

+48
-44
lines changed

docs/guides/host-custom-connector.md

+13-9
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,14 @@ docker run --rm --name=CustomConnectorInSMWithKeyCloak \
7878
-e ZEEBE_CLIENT_SECURITY_PLAINTEXT=true \
7979
-e ZEEBE_CLIENT_ID=<YOUR_ZEEBE_CLIENT_ID> \
8080
-e ZEEBE_CLIENT_SECRET=<YOUR_ZEEBE_CLIENT_SECRET> \
81+
-e ZEEBE_CLIENT_CONFIG_PATH=/tmp/zeebe_auth_cache \
8182
-e ZEEBE_TOKEN_AUDIENCE=zeebe-api \
8283
-e ZEEBE_AUTHORIZATION_SERVER_URL=http://keycloak:8080/auth/realms/camunda-platform/protocol/openid-connect/token \
83-
-e CAMUNDA_OPERATE_CLIENT_KEYCLOAK-URL=http://keycloak:8080 \
84-
-e CAMUNDA_OPERATE_CLIENT_CLIENT-ID=connectors \
85-
-e CAMUNDA_OPERATE_CLIENT_CLIENT-SECRET=<YOUR_OPERATE_CLIENT_SECRET> \
86-
-e CAMUNDA_OPERATE_CLIENT_KEYCLOAK-REALM=<YOUR_KEYCLOAK_OPERATE_REALM> \
84+
-e CAMUNDA_IDENTITY_TYPE=KEYCLOAK \
85+
-e CAMUNDA_IDENTITY_AUDIENCE=operate-api \
86+
-e CAMUNDA_IDENTITY_ISSUER_BACKEND_URL=http://keycloak:8080/auth/realms/camunda-platform \
87+
-e CAMUNDA_IDENTITY_CLIENT_ID=connectors \
88+
-e CAMUNDA_IDENTITY_CLIENT_SECRET=<YOUR_OPERATE_SECRET> \
8789
-e CAMUNDA_OPERATE_CLIENT_URL=http://operate:8080 \
8890
camunda/connectors-bundle:<desired-version>
8991
```
@@ -102,7 +104,7 @@ For the purpose of this section, imagine you installed Helm charts with `helm in
102104
and forwarded Zeebe, Operate, and Keycloak ports:
103105

104106
- `kubectl port-forward svc/dev-zeebe-gateway 26500:26500`
105-
- `kubectl port-forward svc/dev-operate 8081:80`
107+
- `kubectl port-forward svc/dev-operate 8081:80`
106108
- `kubectl port-forward svc/dev-keycloak 18080:80`
107109

108110
Now, you need to obtain both Zeebe and Connectors' Operate OAuth clients. You can do it with `kubectl get secret dev-zeebe-identity-secret -o jsonpath="{.data.*}" | base64 --decode`
@@ -117,12 +119,14 @@ docker run --rm --name=CustomConnectorInSMWithHelm \
117119
-e ZEEBE_CLIENT_SECURITY_PLAINTEXT=true \
118120
-e ZEEBE_CLIENT_ID=zeebe \
119121
-e ZEEBE_CLIENT_SECRET=<YOUR_ZEEBE_CLIENT_SECRET> \
122+
-e ZEEBE_CLIENT_CONFIG_PATH=/tmp/zeebe_auth_cache \
120123
-e ZEEBE_TOKEN_AUDIENCE=zeebe-api \
121124
-e ZEEBE_AUTHORIZATION_SERVER_URL=http://host.docker.internal:18080/auth/realms/camunda-platform/protocol/openid-connect/token \
122-
-e CAMUNDA_OPERATE_CLIENT_KEYCLOAK-URL=http://host.docker.internal:18080 \
123-
-e CAMUNDA_OPERATE_CLIENT_CLIENT-ID=connectors \
124-
-e CAMUNDA_OPERATE_CLIENT_CLIENT-SECRET=<YOUR_OPERATE_CLIENT_SECRET> \
125-
-e CAMUNDA_OPERATE_CLIENT_KEYCLOAK-REALM=camunda-platform \
125+
-e CAMUNDA_IDENTITY_TYPE=KEYCLOAK \
126+
-e CAMUNDA_IDENTITY_AUDIENCE=operate-api \
127+
-e CAMUNDA_IDENTITY_ISSUER_BACKEND_URL=http://host.docker.internal:18080/auth/realms/camunda-platform \
128+
-e CAMUNDA_IDENTITY_CLIENT_ID=connectors \
129+
-e CAMUNDA_IDENTITY_CLIENT_SECRET=<YOUR_OPERATE_CLIENT_SECRET> \
126130
-e CAMUNDA_OPERATE_CLIENT_URL=http://host.docker.internal:8081 \
127131
camunda/connectors-bundle:<desired-version>
128132
```

docs/self-managed/connectors-deployment/connectors-configuration.md

+7-3
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,15 @@ CAMUNDA_OPERATE_CLIENT_USERNAME=demo
6565
CAMUNDA_OPERATE_CLIENT_PASSWORD=demo
6666
```
6767

68-
When running against a self-managed environment you might also need to configure the Keycloak endpoint to not use Operate username/password authentication:
68+
When running against a self-managed environment you might also need to configure Identity properties instead of username and password:
6969

7070
```bash
71-
CAMUNDA_OPERATE_CLIENT_KEYCLOAK-URL=http://localhost:18080
72-
CAMUNDA_OPERATE_CLIENT_KEYCLOAK-REALM=camunda-platform
71+
CAMUNDA_OPERATE_CLIENT_URL=http://localhost:8081
72+
CAMUNDA_IDENTITY_TYPE=KEYCLOAK
73+
CAMUNDA_IDENTITY_AUDIENCE=operate-api
74+
CAMUNDA_IDENTITY_ISSUER_BACKEND_URL=http://localhost:18080/auth/realms/camunda-platform
75+
CAMUNDA_IDENTITY_CLIENT_ID=connectors
76+
CAMUNDA_IDENTITY_CLIENT_SECRET=<YOUR_OPERATE_CLIENT_SECRET>
7377
```
7478

7579
</TabItem>

docs/self-managed/platform-deployment/helm-kubernetes/guides/connect-to-an-oidc-provider.md

+4-10
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,6 @@ global:
9999

100100
For authentication, the Camunda components use the scopes `email`, `openid`, `offline_access`, and `profile`.
101101

102-
:::note
103-
The Connectors do not yet support authentication with a generic OIDC provider.
104-
105-
When using OIDC, set `connectors.inbound.mode: disabled` [in your Connectors Helm values](https://artifacthub.io/packages/helm/camunda/camunda-platform#connectors-parameters).
106-
:::
107-
108102
</TabItem>
109103
<TabItem value="microsoftEntraId">
110104

@@ -169,6 +163,9 @@ global:
169163
clientId: <Client ID from step 1>
170164
clientApiAudience: <Audience for your application>
171165
publicApiAudience: <Audience for using Web Modeler's API. For security reasons, use a different value than for clientApiAudience>
166+
connectors:
167+
clientId: <Client ID from step 2>
168+
existingSecret: <Client secret from step 3>
172169
```
173170

174171
</TabItem>
@@ -187,10 +184,6 @@ process.
187184
To successfully authenticate wth Entra ID, you should use the `v2.0` API. This means that
188185
the `CAMUNDA_IDENTITY_ISSUER_BACKEND_URL` value should end with `/v2.0`.
189186

190-
:::note
191-
Connectors do not yet support authentication with Microsoft Entra ID as the OIDC provider. When using OIDC, set `connectors.inbound.mode: disabled` [in your Connectors Helm values](https://artifacthub.io/packages/helm/camunda/camunda-platform#connectors-parameters).
192-
:::
193-
194187
</TabItem>
195188
</Tabs>
196189

@@ -202,3 +195,4 @@ Connectors do not yet support authentication with Microsoft Entra ID as the OIDC
202195
| Optimize | https://<OPTIMIZE_URL>/api/authentication/callback | There is a fallback if you use the existing ENV vars to configure your authentication provider, if you use a custom `yaml`, you need to update your properties to match the new values in this guide.<br/><br/>When using an OIDC provider, the following features are not currently available: User permissions tab in collections, digests, `Alerts` tab in collections. |
203196
| Tasklist | https://<TASKLIST_URL>/identity-callback | |
204197
| Web Modeler | https://<WEB_MODELER_URL>/login-callback | Using a different OIDC provider than Keycloak currently disables all checks of the permissions claim both for using Web Modeler via the UI and via the public API.<br/><br/> Required configuration variables for webapp:<br/>`OAUTH2_CLIENT_ID=[client-id]`<br/>`OAUTH2_JWKS_URL=[provider-jwks-url]`<br/>`OAUTH2_TOKEN_AUDIENCE=[client-audience]`<br/>`OAUTH2_TOKEN_ISSUER=[provider-issuer]`<br/>`OAUTH2_TYPE=[provider-type]`<br/><br/> Required configuration variables for restapi:<br/>`CAMUNDA_IDENTITY_BASEURL=[identity-base-url]`<br/>`CAMUNDA_IDENTITY_TYPE=[provider-type]`<br/>`CAMUNDA_MODELER_SECURITY_JWT_AUDIENCE_INTERNAL_API=[client-audience]`<br/>`CAMUNDA_MODELER_SECURITY_JWT_AUDIENCE_PUBLIC_API=[publicapi-audience]` (for security reasons, <strong>use a different value here than for `CAMUNDA_MODELER_SECURITY_JWT_AUDIENCE_INTERNAL_API`</strong>)<br/>`SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=[provider-issuer]` |
198+
| Connectors | | Connectors act as a client in the OIDC flow. <br/><br/> For outbound-only mode (when `CAMUNDA_CONNECTOR_POLLING_ENABLED` is `false`), only Zeebe client properties are required: <br/> `ZEEBE_CLIENT_ID=[client-id]`<br/>`ZEEBE_CLIENT_SECRET=[client-secret]`<br/>`ZEEBE_AUTHORIZATION_SERVER_URL=[provider-issuer]`<br/>`ZEEBE_TOKEN_AUDIENCE=[Zeebe audience]`<br/>`ZEEBE_TOKEN_SCOPE=[Zeebe scope]` (optional)<br/><br/> For inbound mode, Operate client properties are required:<br/>`CAMUNDA_IDENTITY_TYPE=[provider-type]`<br/>`CAMUNDA_IDENTITY_AUDIENCE=[Operate audience]`<br/>`CAMUNDA_IDENTITY_CLIENT_ID=[client-id]`<br/>`CAMUNDA_IDENTITY_CLIENT_SECRET=[client-secret]`<br/>`CAMUNDA_IDENTITY_ISSUER_BACKEND_URL=[provider-issuer]` |

versioned_docs/version-8.4/guides/host-custom-connector.md

+13-9
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,14 @@ docker run --rm --name=CustomConnectorInSMWithKeyCloak \
7878
-e ZEEBE_CLIENT_SECURITY_PLAINTEXT=true \
7979
-e ZEEBE_CLIENT_ID=<YOUR_ZEEBE_CLIENT_ID> \
8080
-e ZEEBE_CLIENT_SECRET=<YOUR_ZEEBE_CLIENT_SECRET> \
81+
-e ZEEBE_CLIENT_CONFIG_PATH=/tmp/zeebe_auth_cache \
8182
-e ZEEBE_TOKEN_AUDIENCE=zeebe-api \
8283
-e ZEEBE_AUTHORIZATION_SERVER_URL=http://keycloak:8080/auth/realms/camunda-platform/protocol/openid-connect/token \
83-
-e CAMUNDA_OPERATE_CLIENT_KEYCLOAK-URL=http://keycloak:8080 \
84-
-e CAMUNDA_OPERATE_CLIENT_CLIENT-ID=connectors \
85-
-e CAMUNDA_OPERATE_CLIENT_CLIENT-SECRET=<YOUR_OPERATE_CLIENT_SECRET> \
86-
-e CAMUNDA_OPERATE_CLIENT_KEYCLOAK-REALM=<YOUR_KEYCLOAK_OPERATE_REALM> \
84+
-e CAMUNDA_IDENTITY_TYPE=KEYCLOAK \
85+
-e CAMUNDA_IDENTITY_AUDIENCE=operate-api \
86+
-e CAMUNDA_IDENTITY_ISSUER_BACKEND_URL=http://keycloak:8080/auth/realms/camunda-platform \
87+
-e CAMUNDA_IDENTITY_CLIENT_ID=connectors \
88+
-e CAMUNDA_IDENTITY_CLIENT_SECRET=<YOUR_OPERATE_SECRET> \
8789
-e CAMUNDA_OPERATE_CLIENT_URL=http://operate:8080 \
8890
camunda/connectors-bundle:<desired-version>
8991
```
@@ -102,7 +104,7 @@ For the purpose of this section, imagine you installed Helm charts with `helm in
102104
and forwarded Zeebe, Operate, and Keycloak ports:
103105

104106
- `kubectl port-forward svc/dev-zeebe-gateway 26500:26500`
105-
- `kubectl port-forward svc/dev-operate 8081:80`
107+
- `kubectl port-forward svc/dev-operate 8081:80`
106108
- `kubectl port-forward svc/dev-keycloak 18080:80`
107109

108110
Now, you need to obtain both Zeebe and Connectors' Operate OAuth clients. You can do it with `kubectl get secret dev-zeebe-identity-secret -o jsonpath="{.data.*}" | base64 --decode`
@@ -117,12 +119,14 @@ docker run --rm --name=CustomConnectorInSMWithHelm \
117119
-e ZEEBE_CLIENT_SECURITY_PLAINTEXT=true \
118120
-e ZEEBE_CLIENT_ID=zeebe \
119121
-e ZEEBE_CLIENT_SECRET=<YOUR_ZEEBE_CLIENT_SECRET> \
122+
-e ZEEBE_CLIENT_CONFIG_PATH=/tmp/zeebe_auth_cache \
120123
-e ZEEBE_TOKEN_AUDIENCE=zeebe-api \
121124
-e ZEEBE_AUTHORIZATION_SERVER_URL=http://host.docker.internal:18080/auth/realms/camunda-platform/protocol/openid-connect/token \
122-
-e CAMUNDA_OPERATE_CLIENT_KEYCLOAK-URL=http://host.docker.internal:18080 \
123-
-e CAMUNDA_OPERATE_CLIENT_CLIENT-ID=connectors \
124-
-e CAMUNDA_OPERATE_CLIENT_CLIENT-SECRET=<YOUR_OPERATE_CLIENT_SECRET> \
125-
-e CAMUNDA_OPERATE_CLIENT_KEYCLOAK-REALM=camunda-platform \
125+
-e CAMUNDA_IDENTITY_TYPE=KEYCLOAK \
126+
-e CAMUNDA_IDENTITY_AUDIENCE=operate-api \
127+
-e CAMUNDA_IDENTITY_ISSUER_BACKEND_URL=http://host.docker.internal:18080/auth/realms/camunda-platform \
128+
-e CAMUNDA_IDENTITY_CLIENT_ID=connectors \
129+
-e CAMUNDA_IDENTITY_CLIENT_SECRET=<YOUR_OPERATE_CLIENT_SECRET> \
126130
-e CAMUNDA_OPERATE_CLIENT_URL=http://host.docker.internal:8081 \
127131
camunda/connectors-bundle:<desired-version>
128132
```

versioned_docs/version-8.4/self-managed/connectors-deployment/connectors-configuration.md

+7-3
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,15 @@ CAMUNDA_OPERATE_CLIENT_USERNAME=demo
6565
CAMUNDA_OPERATE_CLIENT_PASSWORD=demo
6666
```
6767

68-
When running against a self-managed environment you might also need to configure the Keycloak endpoint to not use Operate username/password authentication:
68+
When running against a self-managed environment you might also need to configure Identity properties instead of username and password:
6969

7070
```bash
71-
CAMUNDA_OPERATE_CLIENT_KEYCLOAK-URL=http://localhost:18080
72-
CAMUNDA_OPERATE_CLIENT_KEYCLOAK-REALM=camunda-platform
71+
CAMUNDA_OPERATE_CLIENT_URL=http://localhost:8081
72+
CAMUNDA_IDENTITY_TYPE=KEYCLOAK
73+
CAMUNDA_IDENTITY_AUDIENCE=operate-api
74+
CAMUNDA_IDENTITY_ISSUER_BACKEND_URL=http://localhost:18080/auth/realms/camunda-platform
75+
CAMUNDA_IDENTITY_CLIENT_ID=connectors
76+
CAMUNDA_IDENTITY_CLIENT_SECRET=<YOUR_OPERATE_CLIENT_SECRET>
7377
```
7478

7579
</TabItem>

versioned_docs/version-8.4/self-managed/platform-deployment/helm-kubernetes/guides/connect-to-an-oidc-provider.md

+4-10
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,6 @@ global:
9999

100100
For authentication, the Camunda components use the scopes `email`, `openid`, `offline_access`, and `profile`.
101101

102-
:::note
103-
The Connectors do not yet support authentication with a generic OIDC provider.
104-
105-
When using OIDC, set `connectors.inbound.mode: disabled` [in your Connectors Helm values](https://artifacthub.io/packages/helm/camunda/camunda-platform#connectors-parameters).
106-
:::
107-
108102
</TabItem>
109103
<TabItem value="microsoftEntraId">
110104

@@ -169,6 +163,9 @@ global:
169163
clientId: <Client ID from step 1>
170164
clientApiAudience: <Audience for your application>
171165
publicApiAudience: <Audience for using Web Modeler's API. For security reasons, use a different value than for clientApiAudience>
166+
connectors:
167+
clientId: <Client ID from step 2>
168+
existingSecret: <Client secret from step 3>
172169
```
173170

174171
</TabItem>
@@ -187,10 +184,6 @@ process.
187184
To successfully authenticate wth Entra ID, you should use the `v2.0` API. This means that
188185
the `CAMUNDA_IDENTITY_ISSUER_BACKEND_URL` value should end with `/v2.0`.
189186

190-
:::note
191-
Connectors do not yet support authentication with Microsoft Entra ID as the OIDC provider. When using OIDC, set `connectors.inbound.mode: disabled` [in your Connectors Helm values](https://artifacthub.io/packages/helm/camunda/camunda-platform#connectors-parameters).
192-
:::
193-
194187
</TabItem>
195188
</Tabs>
196189

@@ -202,3 +195,4 @@ Connectors do not yet support authentication with Microsoft Entra ID as the OIDC
202195
| Optimize | https://<OPTIMIZE_URL>/api/authentication/callback | There is a fallback if you use the existing ENV vars to configure your authentication provider, if you use a custom `yaml`, you need to update your properties to match the new values in this guide.<br/><br/>When using an OIDC provider, the following features are not currently available: User permissions tab in collections, digests, `Alerts` tab in collections. |
203196
| Tasklist | https://<TASKLIST_URL>/identity-callback | |
204197
| Web Modeler | https://<WEB_MODELER_URL>/login-callback | Using a different OIDC provider than Keycloak currently disables all checks of the permissions claim both for using Web Modeler via the UI and via the public API.<br/><br/> Required configuration variables for webapp:<br/>`OAUTH2_CLIENT_ID=[client-id]`<br/>`OAUTH2_JWKS_URL=[provider-jwks-url]`<br/>`OAUTH2_TOKEN_AUDIENCE=[client-audience]`<br/>`OAUTH2_TOKEN_ISSUER=[provider-issuer]`<br/>`OAUTH2_TYPE=[provider-type]`<br/><br/> Required configuration variables for restapi:<br/>`CAMUNDA_IDENTITY_BASEURL=[identity-base-url]`<br/>`CAMUNDA_IDENTITY_TYPE=[provider-type]`<br/>`CAMUNDA_MODELER_SECURITY_JWT_AUDIENCE_INTERNAL_API=[client-audience]`<br/>`CAMUNDA_MODELER_SECURITY_JWT_AUDIENCE_PUBLIC_API=[publicapi-audience]` (for security reasons, <strong>use a different value here than for `CAMUNDA_MODELER_SECURITY_JWT_AUDIENCE_INTERNAL_API`</strong>)<br/>`SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=[provider-issuer]` |
198+
| Connectors | | Connectors act as a client in the OIDC flow. <br/><br/> For outbound-only mode (when `CAMUNDA_CONNECTOR_POLLING_ENABLED` is `false`), only Zeebe client properties are required: <br/> `ZEEBE_CLIENT_ID=[client-id]`<br/>`ZEEBE_CLIENT_SECRET=[client-secret]`<br/>`ZEEBE_AUTHORIZATION_SERVER_URL=[provider-issuer]`<br/>`ZEEBE_TOKEN_AUDIENCE=[Zeebe audience]`<br/>`ZEEBE_TOKEN_SCOPE=[Zeebe scope]` (optional)<br/><br/> For inbound mode, Operate client properties are required:<br/>`CAMUNDA_IDENTITY_TYPE=[provider-type]`<br/>`CAMUNDA_IDENTITY_AUDIENCE=[Operate audience]`<br/>`CAMUNDA_IDENTITY_CLIENT_ID=[client-id]`<br/>`CAMUNDA_IDENTITY_CLIENT_SECRET=[client-secret]`<br/>`CAMUNDA_IDENTITY_ISSUER_BACKEND_URL=[provider-issuer]` |

0 commit comments

Comments
 (0)