Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Saiba como criar uma API Web chamando outra API Web em nome do usuário.
Antes de ler este artigo, deve estar familiarizado com os conceitos do AD FS e fluxo Em_Nome_De
Overview
Um cliente (Web App) - não representado no diagrama abaixo - chama uma API Web protegida e fornece um token de portador JWT em seu cabeçalho Http "Autorização".
A API da Web protegida valida o token e usa o método MSAL AcquireTokenOnBehalfOf para solicitar (do AD FS) outro token para que ele possa, por si só, chamar uma segunda API da Web (chamada de API da Web downstream) em nome do usuário.
A API da Web protegida usa esse token para chamar uma API downstream. Ele também pode chamar AcquireTokenSilentlater para solicitar tokens para outras APIs downstream (mas ainda em nome do mesmo usuário). AcquireTokenSilent atualiza o token quando necessário.
Para entender melhor como configurar em nome do cenário de autenticação no AD FS, vamos usar um exemplo disponível aqui e percorrer as etapas de registro e configuração de código do aplicativo.
Pre-requisites
- Ferramentas de cliente do GitHub
- AD FS 2019 ou posterior configurado e em execução
- Visual Studio 2013 ou posterior
Registo de Aplicações no AD FS
Esta seção mostra como registrar o Aplicativo Nativo como um cliente público e as APIs da Web como Partes Confiáveis (RP) no AD FS
No Gerenciamento do AD FS, clique com o botão direito do mouse em Grupos de Aplicativos e selecione Adicionar Grupo de Aplicativos.
No Assistente de Grupo de Aplicativos, para o Nome , digite WebApiToWebApi e, em Client-Server aplicativos , selecione o aplicativo nativo acessando um modelo de API Web . Clique em Next.
Copie o valor do Identificador de Cliente . Ele será usado posteriormente como o valor para ClientId no arquivo App.config do aplicativo. Insira o seguinte para URI de redirecionamento: - https://ToDoListClient. Clique em Adicionar. Clique em Next.
Na tela Configurar API Web, insira o Identificador de :https://localhost:44321/. Clique em Adicionar. Clique em Next. Esse valor será usado posteriormente nos arquivos App.config e Web.Config do aplicativo.
No ecrã Aplicar Política de Controle de Acesso, selecione Permitir a todos e clique em Seguinte.
Na tela Configurar Permissões do Aplicativo, selecione openid e user_impersonation. Clique em Next.
No ecrã de Resumo, clique em Seguinte.
No ecrã Concluído, clique em Fechar.
Em Gerenciamento do AD FS, clique em Grupos de Aplicativos e selecione Grupo de aplicativos WebApiToWebApi . Clique com o botão direito do mouse e selecione Propriedades.
Na tela de propriedades WebApiToWebApi, clique em Adicionar aplicativo....
Em Aplicativos autônomos, selecione Aplicativo de servidor.
Na tela Aplicativo do Servidor, adicione https://localhost:44321/ como o Identificador do Cliente e o URI de redirecionamento.
Na tela Configurar Credenciais do Aplicativo, selecione Gerar um segredo compartilhado. Copie o segredo para uso posterior.
No ecrã de Resumo, clique em Seguinte.
No ecrã Concluído, clique em Fechar.
Em Gerenciamento do AD FS, clique em Grupos de Aplicativos e selecione Grupo de aplicativos WebApiToWebApi . Clique com o botão direito do mouse e selecione Propriedades.
Na tela de propriedades WebApiToWebApi, clique em Adicionar aplicativo....
Em Aplicativos autônomos, selecione API da Web.
Em Configurar API Web, adicione https://localhost:44300 como o Identificador.
No ecrã Aplicar Política de Controle de Acesso, selecione Permitir a todos e clique em Seguinte.
Na tela Configurar Permissões do Aplicativo, clique em Avançar.
No ecrã de Resumo, clique em Seguinte.
No ecrã Concluído, clique em Fechar.
Clique em OK na tela WebApiToWebApi – Web API 2 Properties
No ecrã Propriedades do WebApiToWebApi, selecione WebApiToWebApi – Web API e clique em Editar....
Na tela WebApiToWebApi – Propriedades da API Web, selecione guia Regras de Transformação de Emissão e clique em Adicionar Regra....
No Assistente para Adicionar Regra de Transformação de Declarações, selecione Enviar Claims Usando uma Regra Personalizada na lista suspensa e clique em Avançar.
Insira PassAllClaims em Nome da regra de declaração: campo e x:[] => issue(claim=x); regra de declaração no campo Regra personalizada: e clique em Concluir.
Clique em OK na tela WebApiToWebApi – Propriedades da API Web
Na tela Propriedades WebApiToWebApi, selecione WebApiToWebApi – Web API 2 e clique em Editar...

Na tela WebApiToWebApi – Web API 2 Properties, selecione a guia Regras de Transformação de Emissão e clique em Adicionar Regra...
No Assistente para Adicionar Regra de Transformação de Reclamações, selecione no menu suspenso a opção Enviar Reclamações Usando uma Regra Personalizada e clique em Seguinte

Digite PassAllClaims no campo Nome da regra de declaração e x:[] => issue(claim=x); regra de declaração no campo Regra personalizada: e clique em Concluir.
Clique em OK na tela WebApiToWebApi – Web API 2 Properties e, em seguida, na tela WebApiToWebApi Properties.
Configuração de código
Esta seção mostra como configurar uma API Web para chamar outra API Web
Faça o download do exemplo do aqui
Abrir o exemplo usando o Visual Studio
Abra o arquivo App.config. Modifique o seguinte:
ida:Authority - digite https://[seu nome de host do AD FS]/adfs/
ida:ClientId - insira o valor de #3 na seção Registro de aplicativo no AD FS acima.
ida:RedirectUri - insira o valor indicado no item #3 na seção de Registo de Aplicação na AD FS mencionada acima.
todo:TodoListResourceId – introduza o valor do identificador do #4 na seção de Registro de Aplicativo no AD FS acima
ida: todo:TodoListBaseAddress - insira o valor Identifier de #4 na seção Registro de aplicativo no AD FS acima.
Abra o arquivo Web.config em ToDoListService. Modifique o seguinte:
ida:Audience - insira o valor do Identificador do Cliente de #12 na seção Registro de Aplicativo no AD FS acima
ida:ClientId - insira o valor do Identificador do Cliente de #12 na seção Registro de Aplicativo no AD FS acima.
Ida: ClientSecret - insira o segredo compartilhado copiado de #13 na seção Registro de aplicativo no AD FS acima.
ida:RedirectUri - insira o valor RedirectUri de #12 na seção Registro de aplicativo no AD FS acima.
ida: AdfsMetadataEndpoint - digite https://[seu nome de host do AD FS]/federationmetadata/2007-06/federationmetadata.xml
ida:OBOWebAPIBase - insira o valor do Identificador de #19 na seção Registro de Aplicativo no AD FS acima.
ida:Authority - digite https://[seu nome de host do AD FS]/adfs
Abra o arquivo Web.config em WebAPIOBO. Modifique o seguinte:
ida: AdfsMetadataEndpoint - digite https://[seu nome de host do AD FS]/federationmetadata/2007-06/federationmetadata.xml
ida:Audience - insira o valor do Identificador do Cliente de #12 na seção Registro de Aplicativo no AD FS acima
Testar a amostra
Esta seção mostra como testar o exemplo configurado acima.
Depois que as alterações de código forem feitas, reconstrua a solução
No Visual Studio, clique com o botão direito do mouse na solução e selecione Definir Projetos de Inicialização...
Nas páginas Propriedades , verifique se Action está definido como Start para cada um dos Projetos, exceto TodoListSPA.
Na parte superior do Visual Studio, clique na seta verde.
Na tela principal do aplicativo nativo, clique em Entrar.
Se você não vir a tela nativa do aplicativo, pesquise e remova os arquivos *msalcache.bin da pasta onde o repositório de projetos está salvo em seu sistema.
Será encaminhado para a página de login do AD FS. Vá em frente e faça login.
Depois de iniciar sessão, insira o texto "Api Web para Chamada de Api Web" no item "Criar uma Tarefa". Clique em Adicionar item. Isso chamará a API da Web (Serviço de Lista de Tarefas) que, em seguida, chama a API da Web 2 (WebAPIOBO) e adiciona o item no cache.
Próximas Etapas
Fluxos OpenID Connect/OAuth do AD FS e Cenários de Aplicação