Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Überprüfen des Schnittstellenverlaufs
Microsoft.Identity.Web 1.x führte die Schnittstelle IDownstreamWebApi ein, die Authentifizierungsdetails wie Token-Akquisition und Autorisierungsheader beim Aufrufen von APIs verwaltet. Da die Schnittstelle auf der Grundlage von Featureanforderungen gewachsen ist, wurden einschneidende Änderungen erforderlich, um alle angeforderten Szenarien zu unterstützen.
Anstatt die vorhandene API zu ändern, hat das Team eine neue Schnittstelle erstellt: IDownstreamApi. Die alte Schnittstelle ist veraltet, und alle zukünftigen Entwicklungen konzentrieren sich auf die neue Implementierung. Sie können in Ihrem eigenen Tempo migrieren.
In diesem Artikel erfahren Sie:
- Migrieren von IDownstreamWebApi zu IDownstreamApi
- Die Unterschiede zwischen IDownstreamWebApi und IDownstreamApi
Migrieren von IDownstreamWebApi zu IDownstreamApi
Um von IDownstreamWebApi zu Microsoft zu migrieren. Identity.Web 2.x und IDownstreamApi:
Fügen Sie einen Verweis auf das Microsoft.Identity.Web.DownstreamApi NuGet-Paket hinzu.
Ersetzen Sie im Anwendungsinitialisierungscode (in der Regel Startup.cs oder Program.cs) den alten Registrierungsaufruf:
.AddDownstreamWebApi("serviceName", Configuration.GetSection("SectionName"))mit dem neuen Registrierungsanruf:
.AddDownstreamApi("serviceName", Configuration.GetSection("SectionName"))In der Konfigurationsdatei (appsettings.json), im Abschnitt, der die Downstream-Web-API darstellt, ändern Sie den Wert von Scopes von einer Zeichenfolge in ein Array von Zeichenfolgen. Das folgende Beispiel zeigt das ursprüngliche durch Leerzeichen getrennte Zeichenfolgenformat:
"DownstreamApi1": { "BaseUrl": "https://myapi.domain.com", "Scopes": "https://myapi.domain.com/read https://myapi.domain.com/write" },Aktualisieren Sie die Gültigkeitsbereiche, um das neue Array-Format zu verwenden.
"DownstreamApi1": { "BaseUrl": "https://myapi.domain.com", "Scopes": [ "https://myapi.domain.com/read", "https://myapi.domain.com/write" ] },Warnung
Wenn Sie vergessen, die Scopes in ein Array zu ändern, werden die Scopes beim Versuch, die IDownstreamApi zu verwenden, als null angezeigt, und IDownstreamApi wird versuchen, einen anonymen (nicht authentifizierten) Aufruf an die Downstream-API vorzunehmen, was zu einem 401/unauthenticated führt.
Im Controller:
Fügen Sie
using namespace Microsoft.Identity.Abstractionshinzu.Einfügen
IDownstreamApianstelle vonIDownstreamWebApiErsetzen Sie
CallWebApiForUserAsyncdurchCallApiForUserAsyncWenn Sie eine der Methoden GetForUser, PutForUser oder PostForUser verwendet haben, ändern Sie die Zeichenfolge, die den relativen Pfad zu einem Delegaten ausgedrückt hat, der diesen relativen Pfad festlegt. Das folgende Beispiel zeigt den ursprünglichen Ansatz des Zeichenfolgenparameters:
Todo value = await _downstreamWebApi.GetForUserAsync<Todo>(ServiceName, $"api/todolist/{id}");Aktualisieren Sie den Code, um einen Delegaten zu verwenden, der den relativen Pfad festlegt:
Todo value = await _downstreamWebApi.GetForUserAsync<Todo>( ServiceName, options => options.RelativePath = $"api/todolist/{id}";);
Beispielcode überprüfen
Das folgende Beispiel zeigt, wie IDownstreamApi in einer funktionierenden Anwendung verwendet wird.
Sehen Sie sich das vollständige Beispiel an: ASP.NET Core Web App calling web API/TodoListController.
Vergleich von IDownstreamWebApi und IDownstreamApi
In der folgenden Tabelle sind die wichtigsten Unterschiede zwischen der nicht mehr empfohlenen IDownstreamWebApi und der neuen IDownstreamApi zusammengefasst.
| Funktion | IDownstreamWebApi (veraltet) | IDownstreamApi |
|---|---|---|
| NuGet-Paket | Microsoft.Identity.Web.DownstreamWebApi | Microsoft.Identity.Web.DownstreamApi |
| Registrierung | AddDownstreamWebApi() |
AddDownstreamApi() |
| Scopes-Konfiguration | Durch Leerzeichen getrennte Zeichenfolge | Array von Zeichenfolgen |
| Optionsmuster | Begrenzt | Vollständiger Action<DownstreamApiOptions> Stellvertretungssupport |
| Relativer Pfad | String-Parameter | Festlegen durch Optionsdelegat (options.RelativePath) |
| Serialization | Manuelle JSON-Verarbeitung | Integrierte Serialisierung mit <TInput, TOutput> Generika |
| HTTP-Methoden |
GetForUserAsync, PostForUserAsync usw. |
Kombiniertes CallApiForUserAsync mit HTTP-Methode in Optionen sowie typisierten Hilfsfunktionen |
| Nur-App-Aufrufe | CallWebApiForAppAsync |
CallApiForAppAsync |
| Benutzerdefinierte HTTP-Nachricht | Nicht unterstützt |
options.CustomizeHttpRequestMessage delegieren |
| Klonen/Überschreiben von Optionen | Nicht unterstützt | Außerkraftsetzungen pro Anrufoption per Stellvertretung |
| Protokollabstraktion | Gebunden an Microsoft.Identity.Web | Basierend auf Microsoft.Identity.Abstractions (wiederverwendbar in Identitätsbibliotheken) |
Grundlegendes zu den Migrationsvorteilen
Durch die Migration zu IDownstreamApi erhalten Sie Zugriff auf fortlaufende Verbesserungen und eine flexiblere API-Oberfläche.
-
IDownstreamWebApiist veraltet und erhält keine neuen Features oder Fehlerbehebungen. -
IDownstreamApibietet eine übersichtlichere API-Oberfläche, bessere Serialisierungsunterstützung und vollständige Anpassungsoptionen. - Die Abstraktionsebene (
Microsoft.Identity.Abstractions) bedeutet, dass Der nachgeschaltete API-Code nicht eng mit einer bestimmten Identitätsbibliothek gekoppelt ist.
Durchsuchen verwandter Inhalte
Verwenden Sie diese Ressourcen, um mehr über das Aufrufen von downstream-APIs zu erfahren.