Partager via


Appeler une API à partir d’une autre API

Comment, en tant que développeur, assurez-vous Confiance Zéro quand vous avez une API qui doit appeler une autre API ? Dans cet article, vous apprenez à développer en toute sécurité votre application lorsqu’elle fonctionne pour le compte d’un utilisateur.

Lorsqu’un utilisateur pilote l’interface utilisateur d’une application, l’application peut utiliser une permission déléguée afin que l’API sache quel utilisateur au nom de l’application fonctionne. Elle inspecte les revendications de l’objet (sub) ou l’ID d’objet (oid) et les revendications ID de locataire (tid) dans le jeton d’accès fourni par l’application lors de l’appel de l’API. L’API ne s’appuie pas sur l’application non approuvée, qui est simplement un appel provenant d’un endroit sur le réseau. Au lieu de cela, il valide le jeton pour s’assurer que l’API fonctionne uniquement pour le compte de l’utilisateur de l’application vérifié par Microsoft Entra ID.

Lorsqu’une API (nous l’appelons API d’origine) appelle une autre API, il est essentiel que l’API que nous appelons (nous l’appelons API en aval) suive le processus de validation décrit ci-dessus. L’API en aval ne peut pas s’appuyer sur une source réseau non approuvée. Il doit obtenir l’identité de l’utilisateur à partir d’un jeton d’accès correctement validé.

Si l’API en aval ne suit pas le processus de validation approprié, l’API en aval doit s’appuyer sur l’API d’origine pour fournir l’identité de l’utilisateur d’une autre manière. L’API en aval peut utiliser incorrectement une autorisation d’application pour effectuer l’opération. L’API d’origine devient alors la seule autorité sur laquelle les utilisateurs peuvent obtenir les résultats obtenus par rapport à l’API en aval. L’API d’origine peut intentionnellement (ou involontairement) permettre à un utilisateur d’accomplir une tâche que l’utilisateur n’a pas pu accomplir autrement. Par exemple, un utilisateur peut modifier les détails d’un autre utilisateur ou lire et mettre à jour des documents auxquels l’utilisateur n’a pas l’autorisation d’accéder. Une validation incorrecte peut entraîner des problèmes de sécurité graves.

Pour une meilleure sécurité, l’API d’origine acquiert un jeton d’accès de permission déléguée à fournir à l’API en aval lorsque l’API d’origine effectue l’appel. Voyons comment cela fonctionne.

L’application cliente acquiert le jeton d’accès pour appeler l’API d’origine

Le diagramme suivant montre l’application cliente et l’API d’origine.

Le diagramme montre l’application client avec l’identifiant et les jetons d’accès et l’API d’origine qui nécessite une autorisation.

L’application cliente a acquis un jeton d’accès de permission déléguée (indiqué par la forme de pentagone avec l’étiquette « A ») à l’API d’origine. Le jeton d’accès de permission déléguée lui permet de fonctionner pour le compte de l’utilisateur pour appeler l’API d’origine qui nécessite une autorisation.

L’application cliente donne un jeton d’accès à l’API d’origine

L’animation suivante montre l’application cliente donnant le jeton d’accès à l’API d’origine. L’API d’origine valide et inspecte entièrement le jeton d’accès pour déterminer l’identité de l’utilisateur de l’application cliente.

Le diagramme animé montre l’application cliente donnant un jeton d’accès à l’API d'origine qui nécessite une autorisation.

L’API d’origine effectue la validation et l’application des jetons

L’animation suivante montre que, une fois que l’application cliente a donné le jeton d’accès à l’API d’origine, l’API d’origine effectue la validation et l’application des jetons. Si tout est bon, l’API continue et sert la demande pour l’application cliente.

Le diagramme animé montre l'application client avec le jeton d'identification sur la gauche donnant le jeton d'accès à l'API d'origine sur la droite.

L’API d’origine ne peut pas utiliser le jeton d’accès pour appeler l’API en aval

L’animation suivante montre que l’API d’origine souhaite maintenant appeler une API en aval. Toutefois, l’API d’origine ne peut pas utiliser le jeton d’accès pour appeler l’API en aval.

Le diagramme animé montre l'application cliente qui donne un jeton d'accès à l'API d'origine. L'autorisation requise empêche l'API d'origine de donner un jeton à l'API en aval.

L’API d’origine revient à Microsoft Entra ID

Dans l’animation suivante, l’API d’origine doit revenir à Microsoft Entra ID. Il a besoin d’un jeton d’accès pour appeler l’API en aval pour le compte de l’utilisateur.

Le diagramme animé montre que l'application client donne un jeton d'accès à l'API d'origine qui doit être validé par Microsoft Entra ID pour appeler l'API en aval.

L’animation suivante montre l’API d’origine fournissant le jeton reçu par l’API d’origine de l’application cliente et les identifiants du client de l’API d’origine.

Le diagramme animé montre que l'application client donne un jeton d'accès à l'API d'origine qui reçoit la validation de Microsoft Entra ID pour appeler l'API en aval.

Microsoft Entra ID vérifie les éléments tels que le consentement ou l’application de l’accès conditionnel. Vous devrez peut-être revenir à votre client appelant et fournir une raison de ne pas pouvoir obtenir le jeton. En règle générale, vous utilisez un processus de défi de revendications pour revenir à l’application appelante avec des informations concernant le consentement non reçu (par exemple, être lié aux stratégies d’accès conditionnel).

Microsoft Entra ID effectue des contrôles

Dans l'animation suivante, Microsoft Entra ID effectue ses contrôles. Si tout est bon, Microsoft Entra ID émet un jeton d’accès à l’API d’origine pour appeler l’API en aval pour le compte de l’utilisateur.

Le diagramme animé montre l'API d'origine donnant un jeton d'accès à l'API en aval après validation avec l'ID Microsoft Entra.

L’API d’origine a un contexte utilisateur avec le flux On-Behalf-Of

L’animation suivante illustre le processus de flux On-Behalf-Of (OBO) qui permet à une API de continuer à avoir le contexte utilisateur alors qu’elle appelle l’API en aval.

Le diagramme animé montre l'API d'origine donnant un jeton d'accès à l'API en aval.

API d’origine appelle l’API en aval

Dans l’animation suivante, nous appelons l’API en aval. Le jeton reçu par l’API en aval a la revendication d’audience (aud) appropriée qui indique l’API en aval.

Le diagramme animé montre que l'API en aval valide le jeton d'accès de l'API d'origine.

Le jeton inclut les étendues pour le consentement accordé et l’identité d’utilisateur d’application d’origine. L’API en aval peut implémenter correctement des autorisations effectives pour s’assurer que l’utilisateur identifié a l’autorisation d’accomplir la tâche demandée. Vous souhaitez utiliser le flux OBO pour acquérir des jetons pour qu’une API appelle une autre API pour vous assurer que le contexte utilisateur passe à toutes les API en aval.

Meilleure option : l’API d’origine effectue un flux On-Behalf-Of

Cette dernière animation montre que la meilleure option est pour l’API d’origine pour effectuer un flux On-Behalf-Of (OBO). Si l’API en aval reçoit le jeton correct, elle peut répondre correctement.

Le diagramme animé montre l'API en aval recevant le jeton d'accès de l'API d'origine.

Lorsqu’une API agit pour le compte d’un utilisateur et doit appeler une autre API, l’API doit utiliser OBO pour acquérir un jeton d’accès de permission déléguée pour appeler l’API en aval pour le compte de l’utilisateur. Les API ne doivent jamais utiliser les autorisations d’application pour appeler des API en aval lorsque l’API agit pour le compte d’un utilisateur.

Étapes suivantes