Migrating secured asset access (3.2)
AdCP 3.2 deprecatesassets[].access.credentials on the service_account access method. Without that legacy field, the method means that the asset origin has authorized a workload identity already controlled by the component that performs the asset fetch. No provider credential crosses the AdCP payload.
For most integrations, use a short-lived signed URL. It gives consumers one interoperable operation—an ordinary HTTPS GET—without cloud-provider setup.
Choose the simplest path
Do not place long-lived API keys, private keys, cloud access keys, or other standing credentials in any artifact field.
Before: inline provider credentials
This legacy shape remains schema-valid during the 3.x compatibility window, but new producers must not emit it:After: signed URL (recommended)
Issue a URL scoped to one asset and the shortest practical access window:Alternative: pre-authorized workload identity
For an established relationship, authorize the consumer’s identity out of band and omitcredentials:
Fetch safely
Treat every asset URL and access object as untrusted. Require HTTPS and validate the resolved destination before the first request and after every redirect. Reject loopback, link-local, metadata-service, private, and locally disallowed destinations unless a specific destination was explicitly approved during authenticated onboarding. Never select or attach ambient credentials based only onaccess.method, provider, or the supplied URL. Bind workload credentials out of band to an allowed origin and resource prefix. Send bearer tokens only to the authorized origin, never forward an Authorization header across redirects, and fail closed rather than falling back to another access method.
Producer checklist
- Prefer
signed_urlunless the parties already maintain an identity-based access relationship. - Scope signed URLs and bearer tokens to one asset and the shortest practical access window under a documented maximum TTL.
- Omit
service_account.credentialsin all new payloads. - Never copy consumer-owned provider credentials into an artifact.
Consumer checklist
- Continue parsing and validating legacy
service_account.credentialsthroughout 3.x. Process it only for an explicitly allowlisted legacy peer; otherwise reject or quarantine it. - Never infer authorization from an identity string in the payload; authorization is enforced by the asset origin.
- Keep any temporary encrypted cache no longer than both the credential expiry and a configured maximum lifetime.
- Do not fall back between supplied credentials, workload identity, bearer tokens, and signed URLs after an authorization failure.
- Expect
service_account.credentialsto become removable in AdCP 4.0 or later, once the deprecation-policy notice and release-cycle gates are satisfied.
Related
- Content artifacts
- AdCP versioning and deprecation policy
- Issue #5698 — 3.2 deprecation
- Issue #5699 — 4.0 removal
- Issue #6224 — 4.0 extensible access-method design