Skip to content

Add Vercel OIDC auth#1056

Draft
elliotdauber wants to merge 7 commits intomainfrom
elliot/oidc-auth
Draft

Add Vercel OIDC auth#1056
elliotdauber wants to merge 7 commits intomainfrom
elliot/oidc-auth

Conversation

@elliotdauber
Copy link
Copy Markdown
Collaborator

No description provided.

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented Apr 20, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
vercel-storage-next-integration-test-suite Ready Ready Preview May 4, 2026 3:34pm

Request Review

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 20, 2026

🦋 Changeset detected

Latest commit: 1a02707

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@vercel/blob Patch
vercel-storage-integration-test-suite Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link
Copy Markdown
Collaborator Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

falcoagustin added a commit to vercel/vercel that referenced this pull request Apr 30, 2026
vercel/storage#1056 makes the SDK's `options.token` read-write only
(parsed via underscore split for storeId). Passing the OIDC JWT
through it produces a malformed storeId. Instead pass only `storeId`
and rely on `getVercelOidcToken()` reading `VERCEL_OIDC_TOKEN` from
`process.env`; our resolver already hoists `.env.local` values there.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
BLOB_STORE_ID and the storeId option are accepted in either store_<id>
or <id> form (Vercel env pull writes the prefixed form), and may be
mixed-case. resolveBlobAuth was passing those through verbatim, so the
storeId in API headers and CDN host subdomains could be malformed —
e.g. blob.get against a private store with `store_WdsHBk1w9fDO4vPW`
built `https://store_WdsHBk1w9fDO4vPW.private.blob.vercel-storage.com/...`
and 404'd. The RW path was unaffected because parseStoreIdFromReadWriteToken
yields a bare lowercase id from the token's structure.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The first pass also lowercased — that breaks API requests, since the
Vercel Blob API is case-sensitive on the storeId (header and bearer
parsing). The CDN host accepts either case, so prefix-strip alone is
sufficient and works for both consumers. Verified end-to-end against
a private store: blob get and blob list both succeed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants