Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De interfacegeschiedenis controleren
Microsoft. Identity.Web 1.x heeft IDownstreamWebApi geïntroduceerd, een interface waarmee verificatiegegevens (tokenverwerving, autorisatieheaders) worden verwerkt bij het aanroepen van API's. Naarmate de interface groeit op basis van functieaanvragen, zijn belangrijke wijzigingen nodig om alle aangevraagde scenario's te ondersteunen.
In plaats van de bestaande API te wijzigen, heeft het team een nieuwe interface gebouwd: IDownstreamApi. De oude interface is afgeschaft en alle toekomstige ontwikkeling is gericht op de nieuwe implementatie. U kunt in uw eigen tempo migreren.
In dit artikel worden het volgende uitgelegd:
- Migreren van IDownstreamWebApi naar IDownstreamApi
- De verschillen tussen IDownstreamWebApi en IDownstreamApi
Migreren van IDownstreamWebApi naar IDownstreamApi
Migreren van IDownstreamWebApi naar Microsoft. Identity.Web 2.x en IDownstreamApi:
Voeg een verwijzing toe naar de Microsoft. Identity.Web.DownstreamApi NuGet-pakket.
Vervang in de initialisatiecode van uw toepassing (meestal Startup.cs of Program.cs), de oude registratieoproep:
.AddDownstreamWebApi("serviceName", Configuration.GetSection("SectionName"))met de nieuwe registratieoproep:
.AddDownstreamApi("serviceName", Configuration.GetSection("SectionName"))Wijzig in het configuratiebestand (appsettings.json) in de sectie die de downstream-web-API vertegenwoordigt de waarde Scopes van een tekenreeks in een matrix met tekenreeksen. In het volgende voorbeeld ziet u het oorspronkelijke spatie-gescheiden tekenreeksformaat:
"DownstreamApi1": { "BaseUrl": "https://myapi.domain.com", "Scopes": "https://myapi.domain.com/read https://myapi.domain.com/write" },Werk de scopes bij om de nieuwe array-indeling te gebruiken.
"DownstreamApi1": { "BaseUrl": "https://myapi.domain.com", "Scopes": [ "https://myapi.domain.com/read", "https://myapi.domain.com/write" ] },Waarschuwing
Als u vergeet de scopes in een array te wijzigen, zullen de scopes null lijken wanneer u probeert de IDownstreamApi te gebruiken. IDownstreamApi zal dan proberen een anonieme (niet-geverifieerde) oproep naar de downstream-API te doen, wat zal resulteren in een 401/niet-geverifieerd.
In de controller:
using namespace Microsoft.Identity.AbstractionstoevoegenInjecteren
IDownstreamApiin plaats vanIDownstreamWebApiCallWebApiForUserAsyncvervangen doorCallApiForUserAsyncAls u een van de methoden GetForUser, PutForUser of PostForUser hebt gebruikt, wijzigt u de tekenreeks die het relatieve pad heeft uitgedrukt in een functie of delegate die dit relatieve pad instelt. In het volgende voorbeeld ziet u de oorspronkelijke tekenreeksparameterbenadering:
Todo value = await _downstreamWebApi.GetForUserAsync<Todo>(ServiceName, $"api/todolist/{id}");Werk de code bij om een gedelegeerde te gebruiken die het relatieve pad instelt.
Todo value = await _downstreamWebApi.GetForUserAsync<Todo>( ServiceName, options => options.RelativePath = $"api/todolist/{id}";);
Voorbeeldcode controleren
In het volgende voorbeeld ziet u hoe u IDownstreamApi gebruikt in een werkende toepassing.
Zie het volledige voorbeeld: ASP.NET Core web-app die web-API/TodoListController aanroept.
IDownstreamWebApi en IDownstreamApi vergelijken
De volgende tabel bevat een overzicht van de belangrijkste verschillen tussen de afgeschafte IDownstreamWebApi en de nieuwe IDownstreamApi:
| Feature | IDownstreamWebApi (afgeschaft) | IDownstreamApi |
|---|---|---|
| NuGet-pakket | Microsoft.Identity.Web.DownstreamWebApi | Microsoft.Identity.Web.DownstreamApi |
| Registratie | AddDownstreamWebApi() |
AddDownstreamApi() |
| Scopes configuratie | Spatiegescheiden tekenreeks | Array van tekenreeksen |
| Optiepatroon | Beperkt | Volledige Action<DownstreamApiOptions> ondersteuning voor gemachtigden |
| Relatief pad | Tekenreeksparameter | Instellen via optiedelegatie (options.RelativePath) |
| Serialization | Handmatige JSON-verwerking | Ingebouwde serialisatie met <TInput, TOutput> generieken |
| HTTP-methoden |
GetForUserAsync, PostForUserAsync, enz. |
Geïntegreerd CallApiForUserAsync met HTTP-methode in opties, plus getypte helpers |
| App-aanroepen alleen | CallWebApiForAppAsync |
CallApiForAppAsync |
| Aangepast HTTP-bericht | Niet ondersteund |
options.CustomizeHttpRequestMessage delegeren |
| Opties voor klonen/overschrijven | Niet ondersteund | Overschrijvingen per gespreksoptie via delegate |
| Protocolabstractie | Gebonden aan Microsoft. Identity.Web | Op basis van Microsoft.Identity.Abstractions (herbruikbaar in identiteitsbibliotheken) |
Inzicht in migratievoordelen
Door over te stappen naar IDownstreamApi krijgt u toegang tot doorlopende verbeteringen en een flexibelere API-interface.
-
IDownstreamWebApiis afgeschaft en ontvangt geen nieuwe functies of oplossingen voor fouten. -
IDownstreamApibiedt een schoner API-oppervlak, betere serialisatieondersteuning en volledige aanpassingsmogelijkheden. - De abstractielaag (
Microsoft.Identity.Abstractions) betekent dat uw downstream-API-code niet nauw is gekoppeld aan een specifieke identiteitsbibliotheek.
Verwante inhoud verkennen
Gebruik deze resources voor meer informatie over het aanroepen van downstream-API's.