mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-10-23 08:03:33 +00:00
* feat(bedrock): add OIDC role assumption as a fourth auth mode Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YCVb91fZp3dqM14KRPzoEn * fix(bedrock): gate the OIDC cache correctly and assume the role once per job Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YCVb91fZp3dqM14KRPzoEn * refactor(bedrock): check the OIDC region before minting a token Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YCVb91fZp3dqM14KRPzoEn * fix(bedrock): keep OIDC session names collision-resistant, gate the copy on EE Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YCVb91fZp3dqM14KRPzoEn * fix(bedrock): check the OIDC region before reusing cached credentials Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YCVb91fZp3dqM14KRPzoEn * fix(bedrock): clear assumed-role sessions when AI settings change invalidate_ai_request_cache_for_workspace cleared AI_REQUEST_CACHE only, so a workspace's AI settings edit reset one cache and left the assumed-role sessions keyed on the old config in place until STS expired them. Also name the region requirement in the credentials-check hint, so following it does not land on the OIDC path's region guard. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YCVb91fZp3dqM14KRPzoEn * chore: update ee-repo-ref to de73db2bacfdc3eaa2e63b1827178bc198d54e5c This commit updates the EE repository reference after PR #770 was merged in windmill-ee-private. Previous ee-repo-ref: c43dab1e69b1cb3f685e6df07bff634dc2a0b734 New ee-repo-ref: de73db2bacfdc3eaa2e63b1827178bc198d54e5c Automated by sync-ee-ref workflow. --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
38 lines
1.7 KiB
Rust
38 lines
1.7 KiB
Rust
use std::collections::HashMap;
|
|
|
|
use crate::ai_providers::{AIPlatform, AIProvider};
|
|
|
|
/// Resolved provider credentials shared by API proxy and worker execution.
|
|
///
|
|
/// Raw API resources and worker agent payloads convert into this shape at their
|
|
/// execution boundaries. Request-specific state such as the selected model stays
|
|
/// outside this type.
|
|
#[derive(Clone, Debug)]
|
|
pub struct ProviderCredentials {
|
|
pub provider: AIProvider,
|
|
pub base_url: String,
|
|
pub api_key: Option<String>,
|
|
pub access_token: Option<String>,
|
|
pub organization_id: Option<String>,
|
|
pub user: Option<String>,
|
|
pub region: Option<String>,
|
|
pub aws_access_key_id: Option<String>,
|
|
pub aws_secret_access_key: Option<String>,
|
|
pub aws_session_token: Option<String>,
|
|
/// AWS IAM role to assume through Windmill's OIDC provider. Only consulted
|
|
/// when no bearer key and no explicit IAM keys are set — see
|
|
/// [`crate::ai_bedrock::bedrock_oidc_role_to_assume`]. The API proxy
|
|
/// exchanges it for temporary keys before it builds the request; the worker
|
|
/// exchanges it at the Bedrock call, because only the API can sign an OIDC
|
|
/// token.
|
|
///
|
|
/// The two paths therefore present different tokens to AWS: the proxy a
|
|
/// workspace claim with `sub = "<email>::<workspace>"`, the worker the job
|
|
/// claim `/oidc/token` issues, `sub = "<email>::<path>::<flow_path>::<workspace>"`.
|
|
/// A role trust policy that conditions on `sub` has to admit both, or only
|
|
/// one of the copilot and the AI agent step will be able to assume the role.
|
|
pub oidc_role_arn: Option<String>,
|
|
pub platform: AIPlatform,
|
|
pub custom_headers: HashMap<String, String>,
|
|
}
|