Repository navigation
fix(providers): harden static credential placement - #4886
johntmyers wants to merge 2 commits into
Conversation
Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com>
|
🌿 Preview your docs: https://nvidia-preview-pr-4886.docs.buildwithfern.com/openshell |
Compatibility review (advisory)New or updated breaking changes; see the full report for all findings. 1. api-behavior — No explicit risk acceptance foundStatic-credential delivery previously required endpoint-binding support; now polling and configuration push also require supports_static_credential_placement.
2. configuration — No explicit risk acceptance foundEndpoint-bound profiles previously delivered sandbox credentials without placement metadata; now missing placement causes withholding, including Codex refresh and ID tokens.
3. policy — No explicit risk acceptance foundStatic placeholders previously resolved at supported endpoint-authorized locations; now profile placement restricts them and overrides request_body_credential_rewrite and websocket_credential_rewrite.
4. rust-sdk — No explicit risk acceptance foundGenerated GetSandboxProviderEnvironmentRequest, StaticCredentialBinding, and SupervisorHello gain public fields absent from their baseline shapes.
5. typescript-sdk — No explicit risk acceptance foundGenerated raw GetSandboxProviderEnvironmentRequest and SupervisorHello types gain the required boolean property supportsStaticCredentialPlacement.
Review details
Advisory review; publication gates are unchanged. |
Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com>
Compatibility review (advisory)New or updated breaking changes; see the full report for all findings. 1. policy — No explicit risk acceptance foundStatic placeholders previously resolved in supported headers, query values, and paths at authorized endpoints; existing auth_style metadata now restricts those locations automatically.
Review details
Advisory review; publication gates are unchanged. |
Summary
Enforce static credential placement in the supervisor using the provider profile's existing
auth_stylemetadata. Block moving a header credential into an arbitrary query parameter, path, or unrelated header while preserving older gateway/supervisor interoperability and documented rewrite policies.Related Issue
Closes #4883
Changes
Release Notes
Static credential placement is enforced automatically when a supporting gateway forwards usable existing profile auth metadata to a supporting supervisor. Components can upgrade in either order; missing metadata preserves legacy behavior. Credentials without metadata and older components retain the earlier substitution exposure. Explicit body/WebSocket policies and trusted signing keep their existing permissions.
Testing
Known limitation:
proxy::tests::mediated_connect_keeps_workload_bytes_read_with_the_synthesized_headertimed out on the final revision, then passed six consecutive exact reruns. Unchanged main (92434dcb2) passed seven exact runs in the same environment. The fixture is unchanged and exercises credential-free raw CONNECT, but the timeout's cause remains unresolved; no baseline failure was observed. The 4,965-test aggregate above excludes this test and does not claim an unfiltered suite pass.Remote CI for
8531c4b4f: completed checks have passed; Linux ARM64 tests and the macOS jobs remain pending. Remote E2E suites were skipped; the 22 Docker cases above ran locally. The updated compatibility advisory flags the intended restriction on using header-declared credentials in URLs or unrelated headers; applications must use the profile's declared location.Checklist