Cenário: aplicativo Web (aplicativo de servidor) chamando a API Web

Aplica-se a: Windows Server 2022, Windows Server 2019, AD FS 2019 e posterior

Saiba como criar um aplicativo Web conectando usuários autenticados pelo AD FS 2019 e adquirindo tokens usando a biblioteca MSAL para chamar APIs Web.

Antes de ler este artigo, é necessário estar familiarizado com os Conceitos do AD FS e o Fluxo de concessão de código de autorização

Visão geral

Overview of web app calling web api

Neste fluxo, adicione autenticação ao aplicativo Web (Aplicativo de Servidor), que poderá, portanto, conectar os usuários e chamar uma API Web. No aplicativo Web, para chamar a API Web, use o método de aquisição de token AcquireTokenByAuthorizationCode de MSAL. Use o fluxo de código de autorização, armazenando o token adquirido no cache de token. Em seguida, o controlador adquire tokens silenciosamente do cache quando necessário. A MSAL atualiza o token, se necessário.

Aplicativos Web que chamam APIs Web:

  • são aplicativos clientes confidenciais.
  • Registrou um segredo (segredo compartilhado do aplicativo, certificado ou conta do AD) no AD FS. Esse segredo é passado durante a chamada ao AD FS para obter um token.

Para registrar um Aplicativo Web no AD FS e configurá-lo para adquirir tokens para chamar uma API Web, vamos usar um exemplo disponível aqui e percorrer as etapas de registro de aplicativo e configuração de código.

Pré-requisitos

  • Ferramentas de cliente do GitHub
  • AD FS 2019 ou posterior configurado e em execução
  • Visual Studio 2013 ou posterior.

Registro de aplicativo no AD FS

Esta seção mostra como registrar o Aplicativo Web como um cliente confidencial e a API Web como uma RP (terceira parte confiável) no AD FS.

  1. No Gerenciamento dos AD FS, clique com o botão direito do mouse em Grupos de Aplicativos e selecione Adicionar Grupo de Aplicativos.

  2. No Assistente de Grupo de Aplicativos, para o Nome, insira WebAppToWebApi e, em Aplicativos cliente-servidor, selecione o modelo Aplicativo de servidor acessando uma API Web. Clique em Avançar.

    Screenshot of the Welcome page of the Add Application Group Wizard showing the Server application accessing a web A P I template highlighted.

  3. Copie o valor do Identificador de Cliente. O valor é usado posteriormente como o valor de ida:ClientId no arquivo Web.config dos aplicativos . Insira o seguinte para URI de redirecionamento: - https://localhost:44326. Clique em Adicionar. Clique em Avançar.

    Screenshot of the Server application page of the Add Application Group Wizard showing the correct client identifier and redirect U R I.

  4. Na tela Configurar Credenciais do Aplicativo, faça uma verificação em Gerar um segredo compartilhado e copie o segredo. O segredo é usado posteriormente como o valor de ida:ClientSecret no arquivo Web.config dos aplicativos . Clique em Avançar.

    Screenshot of the Configure Application Credentials application page of the Add Application Group Wizard showing the Generate a shared secret option selected and the generated shared secret populated.

  5. Na tela Configurar API Web, insira o Identificador:https://webapi. Clique em Adicionar. Clique em Avançar. Esse valor é usado posteriormente para ida:GraphResourceId no arquivo Web.config dos aplicativos .

    Screenshot of the Configure Web API page of the Add Application Group Wizard showing the correct identifier.

  6. Na tela Aplicar Política de Controle de Acesso, selecione Permitir todos e clique em Avançar.

    Screenshot of the Choose Access Control Policy page of the Add Application Group Wizard showing the Permit everyone option highlighted.

  7. Na tela Configurar Permissões do Aplicativo, verifique se openid e user_impersonation estão selecionados e clique em Avançar.

    Screenshot of the Configure Application Permissions page of the Add Application Group Wizard showing the open I D and user impersonation options selected.

  8. Na tela Resumo, clique em Avançar.

  9. Na tela Concluído, clique em Fechar.

Configuração de código

Esta seção mostra como configurar um Aplicativo Web ASP.NET para fazer logon do usuário e recuperar o token para chamar a API Web

  1. Baixe o exemplo aqui

  2. Abrir o exemplo usando o Visual Studio

  3. Abra o arquivo web.config. Modifique o seguinte:

    • ida:ClientId - insira o valor Identificador do Cliente de #3 na seção Registro de Aplicativo no AD FS.

    • ida:ClientSecret - insira o valor de Secret de #4 na seção Registro de Aplicativo no AD FS.

    • ida:RedirectUri - insira o valor de Redirect URI de #3 na seção Registro de Aplicativo no AD FS.

    • ida:Authority - insira https://[seu nome de host do AD FS]/adfs. Por exemplo, https://adfs.contoso.com/adfs

    • ida:Resource - insira o valor de Identifier de #5 na seção Registro de Aplicativo no AD FS.

      Screenshot of the web config file showing the modified values.

O exemplo de teste

Esta seção mostra como testar o exemplo configurado.

  1. Após as alterações de código, recompile a solução.

  2. Na parte superior do Visual Studio, verifique se o Internet Explorer está selecionado e clique na seta verde.

    Screenshot of the Visual Studio UI with the IIS Express (Internet Explorer) option called out.

  3. Na Home Page, clique em Entrar.

    Screenshot of the Home Page with the Sign in option called out.

  4. Você será redirecionado para a página de entrada do AD FS. Vá em frente e entre.

    Screenshot of the Sign in page.

  5. Depois de conectado, clique em Token de Acesso.

    Screenshot of the Home Page with the Access Token option called out.

  6. Clicar em Access Token obtém as informações do token de acesso chamando a API da Web.

    Screenshot of the Access Token page showing the access token info.

Próximas etapas

Fluxos e cenários de aplicativo do AD FS OpenID Connect/OAuth