Skip to main content
Cross App Access (XAA) pour l’application de ressources est en accès anticipé. Les clients Enterprise, B2B Pro et B2B Essential peuvent l’utiliser dans le cadre des Connexions Enterprise. Vous pouvez également l’essayer pendant la période d’essai sur les tenants Free. En utilisant cette fonctionnalité, vous acceptez les conditions applicables à l’essai gratuit énoncées dans le Contrat-cadre d’abonnement d’Okta.
Pour tester le flux XAA, l’application demandeuse doit obtenir un grant d’autorisation d’assertion d’identité (ID-JAG) auprès de l’IdP d’entreprise, puis l’échanger auprès d’Auth0 contre un jeton d’accès. Cet article présente les deux étapes : obtenir l’ID-JAG (au moyen de SAML ou d’OIDC) et l’envoyer au point de terminaison /token d’Auth0 afin d’obtenir un jeton d’accès pour votre API.

Obtenir l’ID-JAG

Il existe deux façons d’obtenir un ID-JAG, selon que l’application demandeuse s’authentifie auprès de votre IdP d’entreprise à l’aide de SAML ou d’OIDC.

Application demandeuse SAML

Commencez par vous connecter à votre application demandeuse à l’aide de votre tenant IdP. Une fois connecté, l’IdP redirige le navigateur vers votre application demandeuse avec une réponse SAML. Votre application demandeuse échange ensuite de façon sécurisée l’assertion SAML contenue dans la réponse SAML contre un refresh_token OIDC, puis échange le refresh_token contre un ID-JAG.
Réponse SAML => Assertion SAML => refresh_token => ID-JAG
Une fois la réponse SAML reçue de l’IdP, extrayez l’assertion SAML à l’aide d’une bibliothèque SAML. Voici un exemple de réponse SAML :
Vous pouvez utiliser l’outil de ligne de commande xmllint pour extraire l’assertion SAML :
Pour échanger l’assertion SAML contre un jeton d’actualisation OIDC, l’application demandeuse envoie une requête d’échange de jetons au point de terminaison /token de votre IdP avec les paramètres suivants :
Si le client IdP est confidentiel, client_secret ou client_assertion est envoyé dans le Form Post ou les en-têtes HTTP; ils s’excluent donc mutuellement et sont indiqués comme facultatifs. Lorsque la requête est réussie, refresh_token est renvoyé dans la propriété access_token de la réponse JSON :
Pour échanger le refresh_token contre un ID-JAG, envoyez une autre requête d’échange de jetons au point de terminaison /token de votre IdP avec les paramètres suivants :
Si le client IdP est confidentiel, client_secret ou client_assertion est envoyé dans le Form Post ou les en-têtes HTTP; ils s’excluent donc mutuellement et sont tous deux marqués comme facultatifs. La réponse à cette requête contient l’ID-JAG dans la propriété access_token :
L’ID-JAG suit un format JWT, comme dans l’exemple suivant :
Lorsque l’application de ressource est une application SAML, l’ID-JAG comprend également une revendication sub_id contenant les renseignements SAML NameID (format, issuer, nameid et nameid_format) de l’utilisateur authentifié, en plus de la revendication sub standard.

Application demandeuse OIDC

Commencez par vous connecter à votre application demandeuse à l’aide de votre tenant IdP. Une fois la connexion réussie, l’IdP redirige le navigateur vers votre application demandeuse avec un code d’autorisation. Votre application demandeuse échange ensuite de façon sécurisée ce code contre un jeton d’accès et un jeton ID.
Jeton ID => ID-JAG
Pour échanger le jeton ID contre un ID-JAG, l’application demandeuse envoie une requête d’échange de jetons au point de terminaison /token de votre IdP avec les paramètres suivants :
Si le client IdP est confidentiel, client_secret ou client_assertion est envoyé dans le Form Post ou les en-têtes HTTP; ils s’excluent donc mutuellement et sont marqués comme facultatifs.

Envoyer l’ID-JAG au point de terminaison /token d’Auth0

Une fois que l’application demandeuse obtient un ID-JAG, elle envoie une demande de jeton d’accès au point de terminaison /token de votre tenant Auth0 :
Si l’application demandeuse est un client confidentiel, client_secret ou client_assertion est envoyé dans le Form Post ou les en-têtes HTTP ; ils s’excluent donc mutuellement et sont indiqués comme facultatifs. Après avoir validé l’ID-JAG pour vérifier l’identité de l’utilisateur, l’Auth0 Authorization Server émet un jeton d’accès pour l’API de votre tenant Auth0. Le jeton d’accès comprend également les scopes demandés, autorisés par RBAC et les autres politiques définies dans votre tenant Auth0. L’Auth0 Authorization Server n’émet pas de jetons d’actualisation en réponse aux échanges de jetons ID-JAG. L’application demandeuse doit donc obtenir un nouvel ID-JAG auprès de l’IdP d’entreprise et se soumettre aux contrôles d’accès applicables pour obtenir un nouveau jeton d’accès par XAA.

En savoir plus

Pour vous aider à tester le flux XAA, consultez les ressources suivantes :
  • Auth0 Cross App Access Inspector : une application Node.js simple qui permet de tester le flux XAA entre Okta et Auth0.
  • XAA.dev : un environnement isolé en ligne pour tester Cross App Access dans votre navigateur.