Delen via


Een API aanroepen vanuit een andere API

Hoe zorgt u, als ontwikkelaar, voor Zero Trust wanneer u één API hebt die een andere API moet aanroepen? In dit artikel leert u hoe u uw toepassing veilig kunt ontwikkelen wanneer deze namens een gebruiker werkt.

Wanneer een gebruiker de gebruikersinterface van een app aanstuurt, kan de app een gedelegeerde machtiging gebruiken, zodat de API weet welke gebruiker namens de app werkt. Het inspecteert de claim van het onderwerp (sub) of de object-id (oid) en de tenant-id (tid) in het toegangstoken dat de app biedt bij het aanroepen van de API. De API zou niet afhankelijk zijn van de niet-vertrouwde app. Dit is slechts een aanroep die ergens in het netwerk afkomstig is. In plaats daarvan wordt het token gevalideerd om ervoor te zorgen dat de API alleen werkt namens de app-gebruiker die door Microsoft Entra ID is geverifieerd.

Wanneer de ene API (we verwijzen ernaar als de oorspronkelijke API) een andere API aanroept, is het essentieel dat de API die we aanroepen (we verwijzen ernaar als de Downstream-API) het hierboven beschreven validatieproces volgt. De downstream-API kan niet vertrouwen op een niet-vertrouwde netwerkbron. De gebruikersidentiteit moet worden opgehaald uit een correct gevalideerd toegangstoken.

Als de downstream-API niet het juiste validatieproces volgt, moet de downstream-API afhankelijk zijn van de oorspronkelijke API om de identiteit van de gebruiker op een andere manier op te geven. De downstream-API gebruikt mogelijk onjuist een toepassingsmachtiging om de bewerking uit te voeren. Vervolgens wordt de oorspronkelijke API de enige autoriteit waarmee gebruikers resultaten kunnen bereiken op basis van de downstream-API. Met de oorspronkelijke API kan een gebruiker opzettelijk (of onbedoeld) een taak uitvoeren die de gebruiker anders niet kon uitvoeren. Eén gebruiker kan bijvoorbeeld de details van een andere gebruiker wijzigen of documenten lezen en bijwerken die de gebruiker niet heeft gemachtigd om toegang te krijgen. Onjuiste validatie kan ernstige beveiligingsproblemen veroorzaken.

Voor betere beveiliging verkrijgt de oorspronkelijke API een gedelegeerd toegangstoken voor machtigingen dat aan de downstream-API wordt verstrekt wanneer de oorspronkelijke API de aanroep doet. Laten we eens bekijken hoe dit werkt.

Client-app verkrijgt toegangstoken om de oorspronkelijke API aan te roepen

In het volgende diagram ziet u de client-app en de oorspronkelijke API.

Diagram toont client-app met id- en toegangstokens en de oorspronkelijke API waarvoor autorisatie is vereist.

De clienttoepassing heeft een gedelegeerde machtigingstoegangstoken verkregen (aangegeven door de vijfhoekshape met het label A) aan de oorspronkelijke API. Met het gedelegeerde machtigingstoegangstoken kan het namens de gebruiker werken om de oorspronkelijke API aan te roepen waarvoor autorisatie is vereist.

Client-app geeft toegangstoken aan de oorspronkelijke API

In de volgende animatie ziet u de client-app die het toegangstoken aan de oorspronkelijke API geeft. De oorspronkelijke API valideert en inspecteert het toegangstoken volledig om de identiteit van de gebruiker van de client-app te bepalen.

Diagram met animatie toont client-app die een toegangstoken geeft aan de oorspronkelijke API waarvoor autorisatie is vereist.

De oorspronkelijke API voert tokenvalidatie en afdwinging uit

In de volgende animatie ziet u dat nadat de client-app het toegangstoken aan de oorspronkelijke API heeft opgegeven, de oorspronkelijke API tokenvalidatie en afdwinging uitvoert. Als alles goed is, wordt de API voortgezet en wordt de aanvraag voor de client-app verwerkt.

Diagram met animatie toont client-app met id-token aan de linkerkant, waardoor het toegangstoken aan de oorspronkelijke API aan de rechterkant wordt weergegeven.

De oorspronkelijke API kan geen toegangstoken gebruiken om downstream-API aan te roepen

In de volgende animatie ziet u dat de oorspronkelijke API nu een downstream-API wil aanroepen. De oorspronkelijke API kan het toegangstoken echter niet gebruiken om de downstream-API aan te roepen.

Diagram met animatie toont client-app die toegangstoken geeft aan de oorspronkelijke API. Autorisatie vereist voorkomt dat de oorspronkelijke API token aan downstream-API geeft.

Oorspronkelijke API gaat terug naar Microsoft Entra-id

In de volgende animatie moet de Oorspronkelijke API teruggaan naar De Microsoft Entra-id. Er is een toegangstoken nodig om de downstream-API namens de gebruiker aan te roepen.

Diagram met animatie toont client-app waarmee toegangstoken wordt gegeven aan de oorspronkelijke API die validatie van Microsoft Entra-id nodig heeft om downstream-API aan te roepen.

In de volgende animatie ziet u de oorspronkelijke API die het token opgeeft dat de oorspronkelijke API heeft ontvangen van de client-app en de clientreferenties van de oorspronkelijke API.

Diagram met animatie toont client-app waarmee toegangstoken wordt gegeven aan de oorspronkelijke API die validatie van Microsoft Entra-id ontvangt om downstream-API aan te roepen.

Microsoft Entra ID controleert op zaken zoals het afdwingen van toestemming of voorwaardelijke toegang. Mogelijk moet u teruggaan naar uw aanroepende client en een reden opgeven om het token niet te kunnen ophalen. Normaal gesproken gebruikt u een claimvraagproces om terug te gaan naar de aanroepende toepassing met informatie over het niet ontvangen van toestemming (zoals gerelateerd aan beleid voor voorwaardelijke toegang).

Microsoft Entra ID voert controles uit

In de volgende animatie voert Microsoft Entra ID de controles uit. Als alles in orde is, geeft Microsoft Entra ID een toegangstoken uit aan de oorspronkelijke API om de downstream-API namens de gebruiker aan te roepen.

Diagram met animatie toont de oorspronkelijke API die toegangstoken aan downstream-API geeft na validatie met Microsoft Entra-id.

De oorspronkelijke API heeft gebruikerscontext met on-Behalf-Of-stroom

De volgende animatie illustreert het OBO-proces (On-Behalf-Of flow ) waarmee een API de gebruikerscontext kan blijven gebruiken terwijl downstream-API wordt aangeroepen.

Diagram met animatie toont de oorspronkelijke API die toegangstoken aan downstream-API geeft.

Oorspronkelijke API-aanroepen downstream-API

In de volgende animatie roepen we de Downstream-API aan. Het token dat de Downstream-API ontvangt, heeft de juiste doelgroepclaim (aud) die de downstream-API aangeeft.

Diagram met animatie toont downstream-API die toegangstoken valideert vanuit de oorspronkelijke API.

Het token bevat de bereiken voor verleende toestemming en de oorspronkelijke app-gebruikersidentiteit. De downstream-API kan effectieve machtigingen implementeren om ervoor te zorgen dat de geïdentificeerde gebruiker gemachtigd is om de aangevraagde taak uit te voeren. U wilt de namens de stroom gebruiken om tokens te verkrijgen voor een API om een andere API aan te roepen om ervoor te zorgen dat de gebruikerscontext wordt doorgegeven aan alle downstream-API's.

Beste optie: de oorspronkelijke API voert on-Behalf-Of-stroom uit

Deze laatste animatie laat zien dat de beste optie is voor de Oorspronkelijke API om On-Behalf-Of flow (OBO) uit te voeren. Als de downstream-API het juiste token ontvangt, kan deze correct reageren.

Diagram met animatie toont downstream-API die toegangstoken van de oorspronkelijke API ontvangt.

Wanneer een API namens een gebruiker optreedt en een andere API moet aanroepen, moet de API OBO gebruiken om een gedelegeerde machtigingstoken te verkrijgen om de Downstream-API namens de gebruiker aan te roepen. API's mogen nooit toepassingsmachtigingen gebruiken om downstream-API's aan te roepen wanneer de API namens een gebruiker handelt.

Volgende stappen