Client Assertion
A client assertion is a cryptographically signed statement that an application (the OAuth client) presents to prove its identity when requesting tokens, instead of sending a simple shared password like a client secret. It lets a workload demonstrate that it is the legitimate caller during client authentication. In practice, this assertion is often a signed JWT whose contents identify the client and the intended recipient.
In the OAuth 2.0 assertion framework, a client assertion is a security token used to authenticate the client to the authorization server's token endpoint, as an alternative to methods such as client ID and secret. Under the JWT profile (RFC 7523), which builds on the OAuth Assertion Framework (RFC 7521), the assertion is typically a signed JWT: the sub and iss claims reference the client ID of the calling application, and the audience (aud) claim identifies the intended recipient, generally the token endpoint or authorization server. Being signed provides integrity and origin authentication of the client's authentication claims, but note that signing is not the same as encryption; a signed-only JWT is not confidential. Some deployments (for example, MSAL.NET confidential client assertions) require additional authentication claims mandated by the specific provider, and the exact required claims and validation behavior vary by profile and vendor. This term concerns client authentication at the token endpoint and is distinct from end-user authentication and from authorization decisions themselves.
Why it matters
Client authentication is the foundation that keeps confidential OAuth clients from being impersonated, and the choice of method directly affects the blast radius of a credential compromise. Traditional client ID and secret authentication relies on a shared symmetric password that must be transmitted to the authorization server and stored on both sides; if that secret leaks, an attacker can authenticate as the client. A client assertion changes the trust model: the client proves possession of a signing key without transmitting the key itself, so the material presented on the wire is a signed token rather than a reusable long-lived password.
Because the assertion is scoped by claims such as the audience (aud), it is bound to a specific intended recipient, typically the token endpoint or authorization server, which limits where a captured assertion can be replayed. Under the JWT profile (RFC 7523), the signature provides integrity and origin authentication of the client's authentication claims. It is important to keep the security properties precise: signing establishes that the assertion came from the holder of the key and was not altered, but signing is not encryption, so a signed-only JWT is not confidential and its contents can be read by anyone who intercepts it.
The practical significance for architects and engineers is that client assertion support, and the exact claims required, vary by profile and by vendor. For example, some deployments such as MSAL.NET confidential client assertions require additional authentication claims mandated by the provider. Treating client assertions as a uniform drop-in without validating against the specific authorization server's profile can lead to interoperability failures or weaker-than-expected authentication guarantees.
Who it's relevant to
Inside Client Assertion
Common questions
Answers to the questions practitioners most commonly ask about Client Assertion.
