Archives
All the articles I've archived.
-
Going Stateless Was the Right Call for MCP, but with a Cost
•MCP is now stateless. Here's why that's the right call, what actually replaces the old session handshake, and why state didn't disappear
-
Why We Only Catch "Rogue" AI Agents by Accident
•Three frontier labs disclosed that their AI agents breached real companies. None were caught in real time. The problem is not model behavior—it is that the agent is using your identity.
-
Browser-Based Agents Are Impersonating You: The Agent Identity Problem
•Browser-based agents inherit your session, your cookies, and your identity, with no distinction visible to the service provider. Here's why that's a problem we've already solved once, and what needs to happen next.
-
Unwrapping MCP Security: A Walkthrough with the PayPal MCP Server
•A walkthrough of connecting Claude Desktop to PayPal’s remote MCP server over HTTP, highlighting the full OAuth 2.0 flow with Postman from discovery to authorization
-
Unwrapping MCP: A Walkthrough with the GitHub MCP Server
•MCP explained from the inside out, starting with a real developer workflow then unwrapping the protocol layer by layer: roles, messages, connection lifecycle, and STDIO transport.
-
Protected Resource Metadata Is the Missing Piece in OAuth 2.0 Discovery
•OAuth 2.0 could automate client registration and AS discovery, but clients still had to hardcode which authorization server protects a given resource. Protected Resource Metadata fixes that. Here's how PRM completes the dynamic integration story, and why AI agents made it urgent.
-
Certificate-Bound Access Tokens: How mTLS Makes Stolen Tokens Useless
•Bearer tokens are usable by anyone who possesses them. Certificate-bound tokens, defined in RFC 8705, bind the access token to the client certificate used in the mTLS handshake, so even if a token is intercepted, it's cryptographically worthless without the matching certificate.
-
mTLS for OAuth2 Client Authentication: A Stronger Alternative to Shared Secrets
•Shared secrets can be stolen, leaked, or brute-forced. mTLS-based client authentication uses certificates to prove private key possession. Learn how to apply TLS handshake–based authentication to meet OAuth 2.0 client authentication requirements.
-
PKCE Explained: How It Stops OAuth Code Interception
•How PKCE (RFC 7636) stops authorization code interception in OAuth 2.0: code_verifier, code_challenge, S256, and a hands-on walkthrough for public clients.
-
JARM Explained: Signed OAuth 2.0 Authorization Responses
•JARM signs OAuth 2.0 authorization responses as JWTs to stop tampering and mix-up attacks. Covers response modes, claims, validation, and a working demo.
-
Pushed Authorization Requests (PAR): RFC 9126 Explained
•Pushed Authorization Requests (RFC 9126) move OAuth request parameters off the browser. How PAR works with JAR, request_uri, and dynamic redirect URIs.
-
JWT-Secured Authorization Request (JAR): RFC 9101 Explained
•JAR (RFC 9101) signs OAuth 2.0 authorization requests as JWTs. Request objects by value and by reference, validation rules, and how JAR differs from OIDC.
-
Is the OAuth 2.0 Authorization Code Grant Secure Enough?
•Seven real weaknesses in the OAuth 2.0 authorization code grant, from code interception to mix-up attacks, and the specs (PKCE, PAR, JAR, JARM) that fix them.
-
OAuth 2.0 Token Exchange (RFC 8693) in Practice
•Practical OAuth 2.0 Token Exchange (RFC 8693): impersonation vs delegation, the act claim, scope down-scoping, cross-domain and workload identity use cases.
-
OAuth 2.0 Dynamic Client Registration (DCR) Explained
•How OAuth 2.0 clients register with an authorization server: out-of-band vs Dynamic Client Registration (RFC 7591) and DCR Management (RFC 7592), with examples.
-
OAuth 2.0 Server Discovery with .well-known Metadata
•How OAuth 2.0 clients discover endpoints using Authorization Server Metadata (RFC 8414) and OpenID Connect Discovery, with real .well-known examples.
-
OAuth 2.0 Explained: Roles, Grants, Tokens and Extensions
•A complete map of OAuth 2.0: roles, grant types, why implicit and password grants are deprecated, token types, introspection, revocation, DCR, OIDC and UMA.
-
Preventing BOLA and BFLA: OWASP API Authorization Flaws
•How to prevent Broken Object Level Authorization (BOLA) and Broken Function Level Authorization (BFLA), top OWASP API risks, using OAuth scopes and policies.
-
SAML Web Browser SSO Profile: SP and IdP-Initiated Flows
•SAML 2.0 Web Browser SSO Profile explained: SP-initiated vs IdP-initiated SSO, Redirect and POST bindings, AuthnRequest and Response anatomy, and RelayState.
-
SAML IdP Discovery: How Service Providers Find the Right IdP
•How a SAML service provider finds a user's identity provider: common domain cookie, identifier-first login, discovery services, and the OASIS discovery profiles.
-
SAML Metadata Explained: EntityID, SP and IdP Descriptors
•Why SAML 2.0 needs metadata: entityID, EntityDescriptor, IdP and SP role descriptors, signing keys, and static vs dynamic metadata exchange between partners.
-
SAML Basics: Assertions, Protocols, Bindings and Profiles
•The building blocks of SAML 2.0: assertions, protocols, the five bindings (Redirect, POST, Artifact, SOAP, PAOS) and profiles, explained for developers.
-
Do You Really Need SAML? What SAML SSO Solves
•What problem SAML single sign-on actually solves, how it works at a high level, and when SAML still makes sense next to OpenID Connect for enterprise SSO.