Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Rever o histórico da interface
Microsoft. O Identity.Web 1.x introduziu IDownstreamWebApi, uma interface que tratava dos detalhes de autenticação (aquisição de tokens, cabeçalhos de autorização) ao chamar APIs. À medida que a interface crescia com base nos pedidos de funcionalidades, tornaram-se necessárias alterações para suportar todos os cenários solicitados.
Em vez de modificar a API existente, a equipa construiu uma nova interface: IDownstreamApi. A interface antiga está obsoleta e todo o desenvolvimento futuro foca-se na nova implementação. Podes migrar ao teu próprio ritmo.
Este artigo explica:
- Como migrar de IDownstreamWebApi para IDownstreamApi
- As diferenças entre IDownstreamWebApi e IDownstreamApi
Migrar de IDownstreamWebApi para IDownstreamApi
Para migrar de IDownstreamWebApi para Microsoft. Identity.Web 2.x e IDownstreamApi:
Adicione uma referência ao pacote NuGet Microsoft.Identity.Web.DownstreamApi.
No código de inicialização da sua candidatura (normalmente Startup.cs ou Program.cs), substitua a chamada de registo antiga:
.AddDownstreamWebApi("serviceName", Configuration.GetSection("SectionName"))Com a nova chamada de registro:
.AddDownstreamApi("serviceName", Configuration.GetSection("SectionName"))No ficheiro de configuração (appsettings.json), na secção que representa a API web a jusante, altere o valor Scopes de uma string para um array de strings. O exemplo seguinte mostra o formato original de string delimitado por espaço:
"DownstreamApi1": { "BaseUrl": "https://myapi.domain.com", "Scopes": "https://myapi.domain.com/read https://myapi.domain.com/write" },Atualize os telescópios para usar o novo formato de array:
"DownstreamApi1": { "BaseUrl": "https://myapi.domain.com", "Scopes": [ "https://myapi.domain.com/read", "https://myapi.domain.com/write" ] },Advertência
Se se esquecer de mudar os Scopes para um array, ao tentar usar o IDownstreamApi os scopes aparecerão nulos, e o IDownstreamApi tentará uma chamada anónima (não autenticada) para a API downstream, o que resultará num 401/unauthenticated.
No comando:
Adicionar
using namespace Microsoft.Identity.AbstractionsInjetar
IDownstreamApiem vez deIDownstreamWebApiSubstituir
CallWebApiForUserAsyncporCallApiForUserAsyncSe usar um dos métodos GetForUser, PutForUser ou PostForUser, altere a cadeia que expressava o caminho relativo para um delegado que define esse caminho relativo. O exemplo seguinte mostra a abordagem original dos parâmetros de string:
Todo value = await _downstreamWebApi.GetForUserAsync<Todo>(ServiceName, $"api/todolist/{id}");Atualize o código para usar um delegado que define o caminho relativo:
Todo value = await _downstreamWebApi.GetForUserAsync<Todo>( ServiceName, options => options.RelativePath = $"api/todolist/{id}";);
Revisão de código de exemplo
O exemplo seguinte mostra como usar o IDownstreamApi numa aplicação funcional.
Veja o exemplo completo: aplicação ASP.NET Core que chama a API Web/TodoListController.
Compare IDownstreamWebApi e IDownstreamApi
A tabela seguinte resume as principais diferenças entre o obsoleto IDownstreamWebApi e o novo IDownstreamApi:
| Feature | IDownstreamWebApi (obsoleto) | IDownstreamApi |
|---|---|---|
| Pacote NuGet | Microsoft.Identity.Web.DownstreamWebApi | Microsoft.Identity.Web.DownstreamApi |
| Registo | AddDownstreamWebApi() |
AddDownstreamApi() |
| Configuração dos telescópios | Cadeia delimitada pelo espaço | Matriz de cadeias de caracteres |
| Padrão de opções | Limitada | Apoio total de delegação Action<DownstreamApiOptions> |
| Caminho relativo | Parâmetro de string | Definir através do delegado de opções (options.RelativePath) |
| Serialization | Manuseamento manual de JSON | Serialização nativa com <TInput, TOutput> genéricos |
| Métodos HTTP |
GetForUserAsync, PostForUserAsync, etc. |
Unificado CallApiForUserAsync com método HTTP nas opções, além de helpers digitados |
| Chamadas apenas por aplicação | CallWebApiForAppAsync |
CallApiForAppAsync |
| Mensagem HTTP personalizada | Não suportado |
options.CustomizeHttpRequestMessage Delegado |
| Opções de clonagem/substituição | Não suportado | Sobrescrições de opções por chamada via delegado |
| Abstração de protocolos | Ligado à Microsoft. Identity.Web | Baseado em Microsoft.Identity.Abstractions (reutilizável entre bibliotecas de identidade) |
Compreenda os benefícios da migração
Migrar para IDownstreamApi dá acesso a melhorias contínuas e a uma superfície API mais flexível.
-
IDownstreamWebApiestá obsoleto e não recebe novas funcionalidades nem correções de bugs. -
IDownstreamApiproporciona uma superfície API mais limpa, melhor suporte para serialização e personalização completa de opções. - A camada de abstração (
Microsoft.Identity.Abstractions) significa que o seu código API a jusante não está fortemente ligado a uma biblioteca de identidade específica.
Explorar conteúdo relacionado
Use estes recursos para aprender mais sobre como chamar APIs a jusante.