The container handler at internal/handler/container.go currently serves /v2/, blobs, manifests, and tag lists. It doesn't handle GET /v2/{name}/referrers/{digest} or manifest pushes that carry a subject field, which means tools like cosign attach sbom, oras attach, and notation sign can't store or discover SBOMs, signatures, or attestations through the proxy.
For a pull-through cache the minimum is proxying GET /v2/{name}/referrers/{digest} to upstream and caching the returned index, plus passing through the OCI-Subject header on manifest responses so clients know the registry supports it. If the proxy ever accepts pushes it would also need to accept manifests with a subject and update the referrers index (or fall back to the _referrers tag scheme for upstreams that don't support the API).
Artifactory added this in 7.90.1 and it's the standard way SBOMs travel with container images now, so without it the proxy silently drops supply-chain metadata that the upstream registry has.
The container handler at
internal/handler/container.gocurrently serves/v2/, blobs, manifests, and tag lists. It doesn't handleGET /v2/{name}/referrers/{digest}or manifest pushes that carry asubjectfield, which means tools likecosign attach sbom,oras attach, andnotation signcan't store or discover SBOMs, signatures, or attestations through the proxy.For a pull-through cache the minimum is proxying
GET /v2/{name}/referrers/{digest}to upstream and caching the returned index, plus passing through theOCI-Subjectheader on manifest responses so clients know the registry supports it. If the proxy ever accepts pushes it would also need to accept manifests with asubjectand update the referrers index (or fall back to the_referrerstag scheme for upstreams that don't support the API).Artifactory added this in 7.90.1 and it's the standard way SBOMs travel with container images now, so without it the proxy silently drops supply-chain metadata that the upstream registry has.