Skip to content

Commit 1d75409

Browse files
Karakatiza666gz
authored andcommitted
[docs] Auth: remove references to pipeline-manager args
Add docs for generic-oidc provider Fix issuer-tenant does not accept boolean Signed-off-by: Karakatiza666 <bulakh.96@gmail.com>
1 parent 5c11678 commit 1d75409

File tree

3 files changed

+125
-58
lines changed

3 files changed

+125
-58
lines changed

crates/pipeline-manager/src/config.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@ pub struct ApiServerConfig {
695695
/// For example, "<https://acme-corp.okta.com/oauth2/default>" becomes "acme-corp".
696696
/// Useful for simple multi-user access without requiring custom tenant claims.
697697
#[serde(default)]
698-
#[arg(long, env = "FELDERA_AUTH_ISSUER_TENANT")]
698+
#[arg(long, action = clap::ArgAction::Set, default_value_t = false, env = "FELDERA_AUTH_ISSUER_TENANT")]
699699
pub issuer_tenant: bool,
700700

701701
/// Allow individual user tenants based on the 'sub' claim.
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# Generic OIDC Provider
2+
3+
This guide explains how to configure any OIDC-compliant authentication provider for Feldera Enterprise.
4+
5+
## Overview
6+
7+
Feldera supports standard OIDC/OAuth2 authentication, allowing you to integrate with any OIDC-compliant identity provider such as Auth0, Keycloak, Azure AD, Google Identity, or other enterprise identity providers.
8+
9+
## OIDC Application Setup
10+
11+
### 1. Create OIDC Application
12+
13+
In your OIDC provider's admin console:
14+
15+
1. Create a new application or client
16+
2. Select **Single-Page Application (SPA)** as the application type
17+
3. Fill in application details:
18+
- **Application name**: `Feldera` (or your preferred name)
19+
- **Application description**: Optional description for your organization
20+
21+
### 2. Configure Grant Types
22+
23+
Enable the following OAuth 2.0 grant types:
24+
25+
- **Authorization Code** grant type (required)
26+
- **Refresh Token** (recommended for long-lived sessions)
27+
- **PKCE** (Proof Key for Code Exchange) - highly recommended for security
28+
29+
### 3. Configure Redirect URLs
30+
31+
Add the following URLs to your OIDC application configuration:
32+
33+
- **Sign-in redirect URI**: `https://<your-feldera-domain>/auth/callback/`
34+
- **Sign-out redirect URI**: `https://<your-feldera-domain>/`
35+
36+
:::note
37+
38+
**Important:** The trailing slash (`/`) in the callback URL **must be included**. Most OIDC providers require exact URL matching.
39+
40+
:::
41+
42+
### 4. Configure Scopes
43+
44+
Ensure the following OpenID Connect scopes are allowed:
45+
46+
- `openid` (required)
47+
- `profile` (recommended)
48+
- `email` (required)
49+
- `offline_access` (required)
50+
51+
## Tenant Assignment (Optional)
52+
53+
Feldera supports authorization through multiple tenant assignment strategies. By default, each user gets their own individual tenant based on the `sub` claim.
54+
55+
### Multi-Tenant Access with Custom Claims
56+
57+
To enable managed tenancy, configure your OIDC provider to include custom claims in the Access token:
58+
59+
#### `tenants` Claim
60+
61+
Configure your OIDC provider to include a `tenants` claim in the **Access token**:
62+
63+
- **Claim name**: `tenants`
64+
- **Token type**: Access Token
65+
- **Value type**: Array of strings or comma-separated string
66+
- **Value**: List of tenant names the user can access
67+
68+
**Example token claim:**
69+
```json
70+
{
71+
"tenants": ["engineering", "data-science", "analytics"]
72+
}
73+
```
74+
75+
When multiple tenants are configured, users can switch between tenants in the Web Console or specify the tenant using the `Feldera-Tenant` HTTP header.
76+
77+
## Group-Based Authorization (Optional)
78+
79+
To restrict access based on group membership, configure your OIDC provider to include a `groups` claim in the Access token:
80+
81+
- **Claim name**: `groups`
82+
- **Token type**: Access Token
83+
- **Value type**: Array of strings
84+
- **Value**: List of group names the user belongs to
85+
86+
**Example token claim:**
87+
```json
88+
{
89+
"groups": ["feldera-users", "data-engineers", "admins"]
90+
}
91+
```
92+
93+
When `authorizedGroups` is configured in Feldera, users must have at least one matching group to access the platform.
94+
95+
## Configure Feldera
96+
97+
After setting up your OIDC provider, configure Feldera using the Helm chart values; see [examples](index.mdx#Tenant%20Assignment%20use%20cases) for common authorization scenarios.
98+
99+
### Configuration Parameters
100+
101+
| Parameter | Description | Example |
102+
|-----------|-------------|---------|
103+
| `auth.clientId` | Your OIDC application's client ID | `abc123xyz456` |
104+
| `auth.issuer` | Your OIDC provider's issuer URL | `https://auth.example.com` |
105+
| `authorization.authAudience` | Expected audience claim value in Access tokens | `feldera-api` |
106+
107+
:::tip
108+
109+
Consult the [main authentication documentation](index.mdx#Configuration%20options) for complete configuration options.
110+
111+
:::
112+
113+
Refer to your provider's documentation for specific setup instructions while following the general OIDC configuration pattern outlined above.

docs.feldera.com/docs/get-started/enterprise/authentication/index.mdx

Lines changed: 11 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,19 @@ For API key authentication, the key is associated with the tenant through which
2222
We support multiple authorization use-cases through strategies to assign tenant to Feldera API and clients' users.
2323

2424
As an orthogonal feature, the authorized-groups startup parameter can be used to limit access to the users who are a member of at least one of the groups in this list. The membership is determined based on the `groups` claim of an OIDC Access token.
25-
Users must belong to at least one of the specified groups to access Feldera. If `--authorized-groups` is not specified or empty, no group restrictions apply.
25+
Users must belong to at least one of the specified groups to access Feldera. If `authorizedGroups` is not specified or empty, no group restrictions apply.
2626

2727
## Tenant Assignment Strategies
2828

2929
Feldera provides three different tenant assignment strategies to support different deployment patterns:
3030

3131
### Individual Tenancy (Enabled by default)
3232

33-
Each authenticated user gets their own private tenant based on the `sub` claim of the OIDC Access token. Does not require authentication provider configuration. Configured with --individual-tenant startup flag.
33+
Each authenticated user gets their own private tenant based on the `sub` claim of the OIDC Access token. Does not require authentication provider configuration. Configured with `authorization.individualTenant` Helm value.
3434

3535
### Organization-wide Tenancy
3636

37-
Users from the same organization share a tenant, derived from the issuer hostname of the authentication token. Does not require authentication provider configuration. Configured with --issuer-tenant startup flag.
38-
37+
Users from the same organization share a tenant, derived from the issuer hostname of the authentication token. Does not require authentication provider configuration. Configured with `authorization.issuerTenant` Helm value.
3938
### Managed Tenancy
4039

4140
Multiple teams can use the same Feldera instance with complete tenant isolation. Each team's users should be assigned to corresponding tenant(s) with the proper configuration of the dynamic `tenants` claim in the OIDC Access token.
@@ -58,12 +57,6 @@ auth:
5857
enabled: false
5958
```
6059
61-
Direct pipeline-manager configuration:
62-
63-
```bash
64-
pipeline-manager ... --auth-provider=none
65-
```
66-
6760
### Individual access
6861
6962
Every user gets their individual tenant based on their `sub` claim.
@@ -82,12 +75,6 @@ authorization:
8275
authAudience: "feldera-api"
8376
```
8477

85-
Direct pipeline-manager configuration:
86-
87-
```bash
88-
pipeline-manager ... --auth-provider=generic-oidc --individual-tenant=true
89-
```
90-
9178
### Organization-wide shared access
9279

9380
All users in your organization share the same tenant based on the organization domain.
@@ -109,12 +96,6 @@ authorization:
10996
authAudience: "feldera-api"
11097
```
11198

112-
Direct pipeline-manager configuration:
113-
114-
```bash
115-
pipeline-manager ... --auth-provider=generic-oidc --issuer-tenant=true --individual-tenant=false
116-
```
117-
11899
### Group-based whitelist with organization-wide shared access
119100

120101
Users must belong to at least one of the specified groups to access Feldera. All authorized users share the organization tenant.
@@ -136,12 +117,6 @@ authorization:
136117
authAudience: "feldera-api"
137118
```
138119

139-
Direct pipeline-manager configuration:
140-
141-
```bash
142-
pipeline-manager ... --auth-provider=generic-oidc --authorized-groups=feldera_engineering,feldera_qa --issuer-tenant=true --individual-tenant=false
143-
```
144-
145120
### Shared access within a user group (managed tenancy)
146121

147122
Tenant assignment via `tenants` claim in JWT configured in your OIDC provider.
@@ -160,12 +135,6 @@ authorization:
160135
authAudience: "feldera-api"
161136
```
162137

163-
Direct pipeline-manager configuration:
164-
165-
```bash
166-
pipeline-manager ... --auth-provider=generic-oidc --individual-tenant=false
167-
```
168-
169138
### Individual access to whitelisted user groups
170139

171140
Each user gets their individual tenant, but only users belonging to specified groups can access Feldera.
@@ -187,12 +156,6 @@ authorization:
187156
authAudience: "feldera-api"
188157
```
189158

190-
Direct pipeline-manager configuration:
191-
192-
```bash
193-
pipeline-manager ... --auth-provider=generic-oidc --individual-tenant=true --authorized-groups=feldera_engineering,feldera_qa
194-
```
195-
196159
## Configuration options
197160

198161
### Mapping Pipeline Manager Options to Helm Chart Values
@@ -207,7 +170,7 @@ Below is a comprehensive template showing all available authentication and autho
207170
# Authentication provider configuration
208171
auth:
209172
enabled: true # Enable/disable authentication
210-
provider: "generic-oidc" # Options: "none", "aws-cognito", "generic-oidc"
173+
provider: "generic-oidc" # Maps to: AUTH_PROVIDER; Options: "none", "aws-cognito", "generic-oidc"
211174
clientId: "your-client-id" # Maps to: FELDERA_AUTH_CLIENT_ID
212175
issuer: "https://your-domain/oauth2/default" # Maps to: FELDERA_AUTH_ISSUER
213176
@@ -218,28 +181,19 @@ auth:
218181
# Authorization and tenant assignment configuration
219182
authorization:
220183
# Individual tenant mode - each user gets their own tenant (default: true)
221-
# Maps to: --individual-tenant
222-
individualTenant: true
184+
individualTenant: true # Maps to: FELDERA_AUTH_INDIVIDUAL_TENANT
223185
224186
# Issuer-based tenant - derive tenant from auth issuer domain (default: false)
225-
# Maps to: --issuer-tenant
226-
issuerTenant: false
187+
issuerTenant: false # Maps to: FELDERA_AUTH_ISSUER_TENANT
227188
228189
# Group-based access control - restrict access to specific groups
229-
# Maps to: --authorized-groups
230190
# Users must have at least one of these groups in their 'groups' claim
231-
authorizedGroups:
191+
authorizedGroups: # Maps to: FELDERA_AUTH_AUTHORIZED_GROUPS
232192
- "feldera-users"
233193
- "data-engineers"
234194
235195
# OIDC audience claim validation (default: "feldera-api")
236-
# Maps to: --auth-audience
237-
authAudience: "feldera-api"
238-
239-
# Advanced: Pass additional pipeline-manager arguments directly
240-
pipelineManager:
241-
extraArgs:
242-
- "--some-additional-flag=value"
196+
authAudience: "feldera-api" # Maps to: FELDERA_AUTH_AUDIENCE
243197
```
244198

245199
### Environment Variables Reference
@@ -273,10 +227,10 @@ AWS_COGNITO_LOGOUT_URL=https://...
273227
Feldera resolves tenant assignment using the following priority order:
274228

275229
1. **`tenants` claim** - Explicit tenant assignment via OIDC provider
276-
2. **Issuer domain `iss` claim** (when `--issuer-tenant=true`)
277-
3. **User `sub` claim** (when `--individual-tenant=true`)
230+
2. **Issuer domain `iss` claim** (when `issuerTenant: true`)
231+
3. **User `sub` claim** (when `individualTenant: true`)
278232

279-
If no valid tenant is found and `--individual-tenant=false` the user will be denied authorization.
233+
If no valid tenant is found and `individualTenant: false` the user will be denied authorization.
280234

281235
## Provider-Specific Setup
282236

0 commit comments

Comments
 (0)