vercel-oidc-bundle
This is a version of vercel-oidc with third-party dependencies bundled. For normal use, install the unbundled vercel-oidc package instead: https://pypi.org/project/vercel-oidc/
OIDC
vercel.oidc retrieves and decodes Vercel OIDC tokens.
Async Token Lookup
from vercel.oidc import decode_oidc_payload
from vercel.headers import set_headers
from vercel.oidc.aio import get_vercel_oidc_token
async def main() -> None:
token = await get_vercel_oidc_token()
payload = decode_oidc_payload(token)
project_id = payload.get("project_id")
Token lookup prefers the x-vercel-oidc-token request header registered with
vercel.headers.set_headers(), then VERCEL_OIDC_TOKEN. The compatibility
alias vercel.oidc.set_headers() updates the same header context. In local development,
you can load a short-lived token dynamically:
VERCEL_OIDC_TOKEN=$(vc project token some-project) some-command
Use vercel.oidc.get_vercel_oidc_token() for synchronous code.
Verification
Requires the verify extra, which adds pyjwt[crypto]:
pip install "vercel-oidc[verify]"
from vercel.oidc import extract_bearer_token, verify_vercel_oidc_token
claims = verify_vercel_oidc_token(extract_bearer_token(request.headers))
Verification allows only RS256, resolves the signing key by kid from Vercel's
JWKS, and pins the issuer to Vercel's OIDC service, which mints both
https://oidc.vercel.com and the team-scoped https://oidc.vercel.com/<team>.
It fails closed: when the expected project or environment cannot be resolved
from the arguments, VERCEL_PROJECT_ID, or VERCEL_TARGET_ENV/VERCEL_ENV,
every token is rejected. vercel.oidc.aio.verify_vercel_oidc_token() is the
async twin.
Token Identity
A token is a signature over an identity plus an expiry, so one identity is issued many tokens over time. To key client-side state on the identity rather than on the token, use:
from vercel.oidc import resolve_vercel_oidc_token_identity
identity = resolve_vercel_oidc_token_identity(token) # stable across a refresh
The token is verified first — signature, issuer and expiry — and only then are its identity claims reduced to an opaque digest that carries no credential and is safe to log.
What it does not do is authorize: it returns no claims and does not check the
project, environment, owner or audience. Use verify_vercel_oidc_token() for that.
Release files for vercel-oidc-bundle 0.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vercel_oidc_bundle-0.8.1.tar.gz | 15.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vercel_oidc_bundle-0.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.1 kB
Release files / vercel_oidc_bundle-0.8.1.tar.gz
| Download URL | vercel_oidc_bundle-0.8.1.tar.gz |
|---|---|
| Size | 15.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
af1e729d1b910061ca9045866ac99f78af798339fd7ebff836dd5761c7d25b30
|
|
BLAKE2b-256 checksum How to use checksums |
17b6d45df127b1cc1f460dbab03e7735277dc51c1afb9ca998b79a14efc1229b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / vercel_oidc_bundle-0.8.1-py3-none-any.whl
| Download URL | vercel_oidc_bundle-0.8.1-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
44c895c704d63ba1e1e2974df3375c989b1f5c21041e2aa3300a5cb54463a450
|
|
BLAKE2b-256 checksum How to use checksums |
b7d2853022069d7d0d5a02fa536f227f1868d864c6a8bdbd00a8f1f0caf10738
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|