Cross-domain chaining
Cross-domain identity chaining
/patterns/cross-domain-chaining
The grant starts at AS A and must be accepted at AS B in another organization. Identity chaining (I-D) composes RFC 8693 and RFC 7523. RFC 9207 mix-up defenses exist because two issuers are now in play.
When you see it
An agent reads mail in the company tenant and files a ticket in a vendor SaaS whose AS is not yours. Partner integrations where each side has its own authorization server. Distinct from XAA only in that XAA is the IdP-brokered profile of a similar grant; this row is the general two-AS chain.
Actors and trust
Client in domain AAgent instance
Holds a token from AS A. Must not present it at API C in domain B.
AS AOther
Token-exchanges a JWT authorization grant audience-restricted to AS B.
AS BOther
Redeems that JWT via RFC 7523 and issues an access token for its own resource. Must not be mixed up with AS A.
Resource in domain BResource
Accepts only tokens from AS B, aud = itself.
Topology
- User→ Original delegation →AS A
- Agent in A→ RFC 8693 exchange → JWT grant, aud = AS B →AS A
- Agent in A→ RFC 7523 JWT bearer grant (iss checks / RFC 9207) →AS B
- AS B→ Access token for API C →Agent in A
- Agent in A→ Call in domain B →API in B
Primary
- Identity chaining
WG draft in the RFC Editor queue — cite the I-D until an RFC number exists.
- JWT authorization grants
RFC 7523.
- Token Exchange
RFC 8693.
- AS issuer identification
RFC 9207 mix-up defenses.
Optional
- Cross-App Access (ID-JAG)
IdP-brokered profile of a similar grant.
- FAPI 2.0
- AIMS (agent auth BCP)draft / churn
Individual draft — expect churn.
- AS metadata
Exact issuer metadata comparison.
Do not use
- Transaction Tokens
Same-domain context propagation, not a cross-AS grant.
- Presenting AS A's access token at API C
Wrong audience, wrong issuer, classic confused deputy.
- A private cross-domain token format
The chaining I-D exists so you do not invent one.
Why these, and not those
Two authorization servers means identity chaining, not a private JWT format and not a transaction token (txn-tokens are same-domain). RFC 8693 produces the grant; RFC 7523 is how B consumes a JWT assertion; the chaining I-D writes that down as a profile (RFC Editor queue as of July 2026 — no RFC number yet). RFC 9207 iss in the authorization response, plus exact issuer metadata checks, are how you stop mix-up when the client talks to more than one AS. XAA is the IdP-shaped variant; FAPI if B is high-risk.
Related flows
Sequence diagrams, not this topology cut. All flows