Vol. I · No. 46The protocol sectionSat, 10 Oct 2026
Layer 7 · Authentication · the identity layer on OAuth

OIDC

OpenID Connect

OIDC is the thin layer that turns OAuth into a login. It reuses OAuth’s flow exactly, but adds an ID token — a signed JWT stating who the user is, and a standard userinfo endpoint — so an app can verify an identity rather than merely hold a permission.

OIDC adds a signed ID token to OAuth — which is what makes “sign in with…” an authentication rather than a guess.

Answers
Authentication
who the user is
Built on
OAuth 2.0
same endpoints
Returns
ID token
a signed JWT
Scope
openid
the one that triggers it

How it works

The same flow, with one extra token that means something
The appThe identity provider
Authorise, asking for the openid scope
scope=openid profile email &nonce=…
The openid scope is what turns an OAuth request into an OIDC one
Token response — with an id_token alongside
access_token + id_token (a signed JWT)
isswho issued it
subthe user, stably
audthis app, and no other
exp / noncefreshness
Verify the signature and every claim
Keys fetched from the provider’s JWKS endpoint — then the user is logged in

The ID token is for the app, about the user — which is why checking aud matters: a token minted for a different app must never be accepted as a login here.

The main points

What OIDC does, step by step

1
Request the openid scope

An ordinary OAuth authorisation request, plus scope=openid and a nonce for replay protection.

2
Receive an ID token

The token response includes a signed JWT describing the authentication that just happened.

3
Validate it properly

Check the signature against the provider’s JWKS, then iss, aud, exp and the nonce you sent.

4
Fetch more if needed

The userinfo endpoint returns profile claims that were too large or too fresh for the token.

What it standardised
ID token — a signed JWT about the login
Discovery — /.well-known/openid-configuration
JWKS — the public keys, fetched and rotated
Userinfo — one endpoint for profile claims
Standard claims — sub, email, name — the same everywhere
Logout — front-channel and back-channel

In cybersecurity

An ID token is only as good as its validation — a library that decodes a JWT without checking the signature accepts whatever anyone chooses to send.

Verify the signature

Against the provider’s JWKS, and never trust the alg header — reject “none” outright.

Check aud and iss

A valid token from the right provider for the wrong app is not a login for yours.

Use the nonce

It binds the token to your request and stops an old one being replayed.

sub, not email

Email addresses change and can be reassigned; sub is the provider’s stable identifier.

Rotate keys gracefully

Cache JWKS but honour kid, or a routine key rotation logs everyone out.

ID token is not an API key

It authenticates the user to the app; the access token is what calls the API.

Rides in the stack

TLSHTTPOAuth 2.0OIDC

Strictly a profile of OAuth — the same endpoints and redirects, with one extra scope and one extra token.

Works with

OAuth 2.0SAML

OAuth or OIDC?

OAuth 2.0OIDC
QuestionMay it do this?Who is this?
ReturnsAccess token+ ID token
Token formatOpaque, oftenA signed JWT
Use for loginNoYes