Problem
Issue #683 introduced provider-scoped Fastly deployment config, but intentionally left request-signing Fastly management IDs in [request_signing] as deprecated fields:
[request_signing]
enabled = true
config_store_id = "..."
secret_store_id = "..."
These IDs are Fastly management API store IDs used by runtime key-rotation writes. They are not provider-neutral application behavior, so they should not live in canonical application config long term.
Current state
[providers] is excluded from canonical app config/hash/upload.
- Runtime key rotation still reads:
request_signing.config_store_id
request_signing.secret_store_id
FastlyApiClient::new() still defaults to api-keys/api_key.
- Runtime-opened stores use fixed Fastly resource-link aliases:
jwks_store
signing_keys
api-keys
Proposed solution
Add a runtime-readable Fastly provider config payload that is separate from canonical app config.
One possible shape:
- Keep canonical app config under:
- store alias:
ts_config_store
- key:
ts-config
- Add provider runtime config under:
- store alias:
ts_config_store
- key:
ts-fastly-provider-config
Example payload:
[request_signing]
jwks_store_id = "..."
signing_secret_store_id = "..."
runtime_api_secret_store_name = "api-keys"
runtime_api_secret_key = "api_key"
Then runtime key rotation reads Fastly management IDs from this provider runtime config instead of [request_signing].
Acceptance criteria
Notes
This should complete the request-signing part intentionally deferred from #683.
Problem
Issue #683 introduced provider-scoped Fastly deployment config, but intentionally left request-signing Fastly management IDs in
[request_signing]as deprecated fields:These IDs are Fastly management API store IDs used by runtime key-rotation writes. They are not provider-neutral application behavior, so they should not live in canonical application config long term.
Current state
[providers]is excluded from canonical app config/hash/upload.request_signing.config_store_idrequest_signing.secret_store_idFastlyApiClient::new()still defaults toapi-keys/api_key.jwks_storesigning_keysapi-keysProposed solution
Add a runtime-readable Fastly provider config payload that is separate from canonical app config.
One possible shape:
ts_config_storets-configts_config_storets-fastly-provider-configExample payload:
Then runtime key rotation reads Fastly management IDs from this provider runtime config instead of
[request_signing].Acceptance criteria
jwks_store_idandsigning_secret_store_idfrom provider runtime config.FastlyApiClientcan use configured runtime API secret store/key instead of hardcodedapi-keys/api_key.[request_signing].config_store_idandsecret_store_idremain temporarily supported as fallback.Notes
This should complete the request-signing part intentionally deferred from #683.