Actors: the IdP (identity provider — Okta, Entra ID, Google) authenticates; the SP or RP (service provider / relying party — Netskope, AWS, SentinelOne) trusts it.
Key fields: NameID (the subject), Audience (which SP this is for — checking it prevents assertion replay elsewhere), Conditions/NotOnOrAfter (validity window), and attribute statements carrying group membership used for authorisation.
OAuth 2.0 is not authentication. It is delegated authorisation: "let this app read my Drive files". OIDC is the thin layer on top that adds an id_token — a signed JWT actually asserting who the user is. Using bare OAuth for login is a classic design flaw.
client_id, scope, redirect_uri, state, and a PKCE challenge.Token anatomy — a JWT has three dot-separated base64 parts: header, payload (claims: iss, sub, aud, exp, iat, plus custom claims), and signature. You can decode the payload with base64 alone; anyone can. Never put secrets in a JWT, and always verify the signature and aud server-side.
Illicit consent grants. A phishing page asks the user to authorise a plausible-looking app for mail.read and drive.readonly. The user genuinely authenticates — MFA and all — and the attacker walks away with a refresh token that survives password resets. No malware, no network traffic through your proxy. Defences: restrict third-party app access in Workspace, require admin approval for sensitive scopes, review granted apps regularly, and alert on new grants for high-risk scopes.
| Factor | Resists phishing? | Notes |
|---|---|---|
| SMS / voice | No | SIM swap, SS7, real-time relay. Better than nothing, barely. |
| TOTP app | No | Relayed through an AiTM proxy in seconds. |
| Push approval | No | MFA fatigue bombing. Number matching helps a lot. |
| FIDO2 / WebAuthn / passkey | Yes | Origin-bound: the authenticator refuses to sign for the wrong domain. |
| Device-bound certificate | Yes | Strong, requires managed devices and PKI. |
Adversary-in-the-Middle (AiTM) phishing kits proxy the real login page, capture credentials and the resulting session cookie, then replay the cookie. MFA is satisfied because the user really did complete it. This is why "we have MFA" is no longer an adequate answer, and why phishing-resistant factors plus device binding matter for admin and finance roles at minimum.
After login, the app issues a session cookie or token. Anyone holding it is the user until it expires. Infostealer malware harvests exactly this from browser profiles, which is why an endpoint infection must be treated as an identity incident.
Preventive levers: shorter session lifetimes for sensitive apps, token binding/continuous access evaluation where supported, and conditional access that re-evaluates device compliance rather than trusting a cookie for 30 days.
A user reports a suspicious login alert. Sign-in logs show a successful authentication with MFA satisfied, from a country they have never visited, followed minutes later by a new inbox rule. Most likely?
Sensible starting policies: require phishing-resistant MFA for admins; block legacy authentication protocols outright; require a compliant, managed device for anything holding customer data; require MFA on any new device or unusual location; and restrict admin console access to managed devices only.