OktaUpdating authorization server metadataTutorial
Enabling Cross App Access for SAML-Based Resource Apps
Summary
Cross App Access (XAA) lets applications using existing SAML federation obtain API access without migrating to OpenID Connect (OIDC). An agent presents a short-lived Identity Assertion Authorization Grant (ID-JAG), which the resource authorization server validates, resolves to a user, and exchanges for its own access token; SAML processing remains upstream. For SAML identity resolution, implementations must validate the saml-nameid sub_id and match issuer, NameID, and sp_name_qualifier rather than relying on NameID alone. The guide recommends binding iss to a registered SAML connection before verifying the JWT against that connection’s JWKS, then checking typ, aud, and client_id and applying local scope policy. It also walks through Okta configuration and xaa.dev checks that redeem the ID-JAG, call the API, and export conformance results.
Context
SAML-federated applications may need to let applications or agents access their APIs without replacing their existing SAML integration with OIDC. Because SAML applications do not typically provide a corresponding sub claim for direct user mapping, the resource authorization server must handle SAML-specific identity and security requirements.
Approach / What changed
Use the ID-JAG as the artifact crossing from the identity provider to the resource domain. Bind its iss to a registered SAML connection, verify the JWT with that connection’s JWKS, validate the required claims, resolve the user from the complete saml-nameid identifier, apply local scope policy, and issue an access token. The guide also provides Okta setup and xaa.dev verification steps.
Takeaways
SAML user resolution uses sub_id in saml-nameid format and must match the SAML issuer, NameID, and sp_name_qualifier; NameID alone may not uniquely identify a user.
The resource authorization server should bind iss to a registered SAML connection before verifying the ID-JAG signature against that connection’s JWKS, then validate typ, aud, and client_id.
After resolving the user, the server issues an access token according to local policy; the guide explicitly says not to issue a refresh token.
Source and freshness
- Source
- developer.okta.com
- Published
- Added to Yomu
Summaries are generated from the original by a language model. Check the original before relying on it.
Keep reading
Related reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
The best engineering reads, once a week
One useful email. Unsubscribe anytime.