Ich habe ein Szenario mit einem Mandanten in Azure Active Directory, in dem eine API1 eine andere API2 mithilfe der Authentifizierung aufrufen muss und die API1 aus einem SPA aufgerufen wurde.Verwenden Sie jwt, um API von einer anderen API aufzurufen
Wäre es richtig, nur die in API1 empfangene JWT des Benutzers aus dem SPA zu übergeben, um API2 zur Authentifizierung aufzurufen?
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
TokenValidationParameters = new TokenValidationParameters() {
SaveSigninToken = true,
...
wie in: https://github.com/Azure-Samples/active-directory-dotnet-webapi-onbehalfof
Alle APIs implementiert mit ASP.NET Web API und das SPA mit Active Directory-Authentifizierung Library (ADAL) für JavaScript.
Vielen Dank für Ihre klare Antwort, aber ich habe noch Zweifel. Dies wäre trotz der Tatsache, dass sich API2 auf demselben Azure-Mandanten befindet (wäre ein interner Aufruf), und ich könnte "potenziell" die gleiche Audience/ClientId in API2 wie in API1 verwenden? Es scheint nur eine "konzeptionelle" Einschränkung zu sein? Warum kann ich das nicht tun? Könnten Sie mich auf das Protokollkonzept hinweisen, das ich vermisse? – AlejandroC
Wenn API 1 und API 2 dieselbe Client-ID und Anwendungs-ID-URI (Ressourcen-ID) verwenden, können sie absolut dasselbe Zugriffstoken verwenden ... Meine Frage an diesem Punkt ist, dass wirklich zwei verschiedene Dienste dargestellt werden? Ihr Bild impliziert zwei eindeutige Anwendungen, aber wenn sie die gleiche App-Registrierung teilen, gibt es keinen Unterschied in den Augen der Authentifizierung und Autorisierung. –
Ich möchte hinzufügen, dass OAuth 2 letztlich verwendet wird, um die Ressource vor dem Ausgeben von Daten an die falschen Clients zu schützen . Ende des Tages könnte API 2 Zugriff auf jeden Client gewähren, der eine zufällige Zeichenfolge als Zugriffstoken übergibt. Und in dieser Hinsicht könnten Sie Ihre API so programmieren, dass sie Tokens mit der falschen Ressource im Zielgruppenanspruch akzeptiert ... Diese Auswahlmöglichkeiten sind auf Sie ausgerichtet, aber das wäre eine Abweichung von dem, was OAuth 2 angibt –