Skip to content

Commit 47cff47

Browse files
fix: middleware for multi-tenant (#1719)
- add `x-p-tenant` header only for multi-tenant deployment - extract tenant id from `x-p-tenant` (if api key user sends) or `intra-cluster-tenant` (prism forwards to queriers) - tenant id to default for single tenant deployment
1 parent d0390ce commit 47cff47

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

src/handlers/http/middleware.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,9 @@ where
159159
let tenant_id = req
160160
.headers()
161161
.get(TENANT_ID)
162+
.or_else(|| req.headers().get("intra-cluster-tenant"))
162163
.and_then(|v| v.to_str().ok())
164+
.filter(|tenant| !tenant.eq(&DEFAULT_TENANT))
163165
.map(String::from);
164166

165167
// an optional error to track the presence of CORRECT tenant header in case of ingestion
@@ -186,10 +188,12 @@ where
186188
permissions,
187189
&user.tenant,
188190
);
189-
req.headers_mut().insert(
190-
HeaderName::from_static(TENANT_ID),
191-
HeaderValue::from_str(tenant).unwrap(),
192-
);
191+
if PARSEABLE.options.is_multi_tenant() {
192+
req.headers_mut().insert(
193+
HeaderName::from_static(TENANT_ID),
194+
HeaderValue::from_str(tenant).unwrap(),
195+
);
196+
}
193197
req.extensions_mut().insert(session_key);
194198
Some(session_id)
195199
}
@@ -311,7 +315,7 @@ fn find_api_key_user(api_key_value: &str, tenant_id: &Option<String>) -> Option<
311315
let tenant = if PARSEABLE.options.is_multi_tenant() {
312316
tenant_id.as_deref()?
313317
} else {
314-
tenant_id.as_deref().unwrap_or(DEFAULT_TENANT)
318+
DEFAULT_TENANT
315319
};
316320

317321
let users_guard = users();

0 commit comments

Comments
 (0)