Subscribe to the Non-Human & AI Identity Journal

How should security teams use JAR and JARM in OAuth flows?

Use JAR to sign the outbound authorization request and JARM to sign the inbound authorization response. Together they reduce parameter tampering, spoofing, and leakage in browser-mediated OAuth flows. Teams should apply them to high-risk integrations first, then pair them with PKCE, strong key management, and clear ownership of client registration and response validation.

Why This Matters for Security Teams

JAR and JARM matter because OAuth is often attacked where the browser, the authorization server, and the client all trust the same redirect path. JAR hardens the outbound request by digitally protecting the parameters before they leave the client, while JARM protects the inbound response before the client accepts it. That closes common gaps for tampering, code substitution, and response spoofing in high-value integrations.

This is not just a protocol nicety. OAuth-based compromise remains a recurring pattern in real incidents, including the Salesloft OAuth token breach and the Dropbox Sign breach, where trust in delegated access became part of the blast radius. In parallel, NIST Cybersecurity Framework 2.0 reinforces the need to protect identity flows as a core governance control, not a developer convenience.

Teams usually get this wrong by treating OAuth redirects as low-risk because the flow is “standard.” In practice, many security teams encounter token abuse only after a partner app, browser session, or redirect URI has already been manipulated.

How It Works in Practice

Use JAR when the authorization request itself needs integrity protection. The client signs the request object so the authorization server can verify that scope, redirect URI, state, audience, and other request parameters were not altered in transit. Use JARM on the way back so the authorization response, including the authorization code or error, is signed before the client processes it. Together, they reduce the chance that an attacker can inject, swap, or replay parameters through the browser-mediated leg of the exchange.

Operationally, the client should publish the signing keys, the authorization server should validate the request object, and the client should validate the JARM response before any downstream token exchange. This should be paired with PKCE, because JAR and JARM protect integrity while PKCE helps bind the authorization code to the legitimate client. In most environments, the cleanest rollout is to start with externally facing, partner-connected, or admin-sensitive OAuth applications, then expand to lower-risk flows once validation, logging, and key rotation are stable.

  • Sign outbound authorization requests with JAR for parameter integrity.
  • Validate inbound authorization responses with JARM before accepting codes or errors.
  • Keep redirect URI registration, client authentication, and key ownership tightly controlled.
  • Pair both controls with PKCE and strong secret handling for signing keys.

For implementation discipline, security teams can map this approach to identity and control governance guidance in NIST Cybersecurity Framework 2.0 and validate it against real-world OAuth abuse patterns seen in the Salesloft OAuth token breach. These controls tend to break down in legacy browser flows and partner ecosystems that cannot consistently support signed request objects or response validation.

Common Variations and Edge Cases

Tighter OAuth integrity controls often increase implementation overhead, so teams need to balance stronger assurance against client compatibility and operational friction. That tradeoff is real, especially when third-party apps, older identity providers, or mobile clients cannot handle the same level of request and response signing.

Current guidance suggests prioritising JAR and JARM where the abuse impact is highest: admin consoles, delegated SaaS access, privileged partner portals, and any flow exposed to untrusted browsers or intermediaries. There is no universal standard for every deployment pattern yet, so teams should treat broader adoption as a maturity journey rather than an all-or-nothing mandate. Some platforms support only one side of the control, and in those cases the best practice is to deploy the supported mechanism, add PKCE, and tighten client registration and response validation.

Security teams should also watch for environments where signatures are validated but the operational ownership is unclear. If app registration, key rotation, and exception handling are split across product, IAM, and platform teams, the control can erode quickly. In those situations, the most important safeguard is clear accountability for who can register clients, rotate signing keys, and approve trust exceptions.

In practice, many OAuth failures surface only after a partner integration or signing key issue has already been abused, rather than during routine design review.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10 address the attack and risk surface, while NIST CSF 2.0 and NIST AI RMF set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP Non-Human Identity Top 10 NHI-03 Protects NHI credentials and tokens from tampering in OAuth flows.
NIST CSF 2.0 PR.AC-4 Aligns OAuth validation with access enforcement and least privilege.
NIST AI RMF Supports governance for automated, risk-sensitive identity decisions.

Assign clear ownership and monitoring for identity flows that make runtime trust decisions.