Partilhar via


Teste sua API protegida

Este tutorial é a parte final de uma série que demonstra a criação e o teste de uma API da Web protegida registrada em um locatário externo. Na Parte 1 desta série, você criou uma API da Web ASP.NET Core e protegeu seus endpoints. Nesta etapa final, você registrará o aplicativo daemon e testará sua API.

Neste tutorial, irá aprender a:

  • Testar uma API da Web protegida usando um aplicativo daemon leve que chama a API da Web

Pré-requisitos

Tutorial: Proteger uma API da Web do ASP.NET Core registrada em um locatário externo

Registrar o aplicativo daemon

As etapas a seguir mostram como registrar seu aplicativo daemon no centro de administração do Microsoft Entra:

  1. Entre no centro de administração do Microsoft Entra como pelo menos um desenvolvedor de aplicativos.

  2. Se tiver acesso a vários inquilinos, utilize o ícone Definições no menu superior para mudar para o inquilino externo a partir do menu Diretórios + subscrições.

  3. Navegue até Registros do aplicativo Identity>Applications>.

  4. Selecione + Novo registo.

  5. Na página Registar uma candidatura apresentada, introduza as informações de registo da sua candidatura:

    1. Na seção Nome, insira um nome de aplicativo significativo que será exibido para os usuários do aplicativo, por exemplo, ciam-client-app.

    2. Em Tipos de conta suportados, selecione Contas somente neste diretório organizacional.

  6. Selecione Registar.

  7. O painel Visão geral do aplicativo é exibido quando o registro é concluído. Registre o ID do diretório (locatário) e o ID do aplicativo (cliente) a serem usados no código-fonte do aplicativo.

Crie um segredo de cliente para o aplicativo registrado. O aplicativo usa o segredo do cliente para provar sua identidade quando solicita tokens.

  1. Na página Registros de aplicativos, selecione o aplicativo que você criou (como ciam-client-app) para abrir a página Visão geral.
  2. Em Gerenciar, selecione Certificados & segredos.
  3. Selecione Novo segredo do cliente.
  4. Na caixa Descrição, insira uma descrição para o segredo do cliente (por exemplo, segredo do cliente do aplicativo ciam).
  5. Em Expira, selecione uma duração para a qual o segredo é válido (de acordo com as regras de segurança da sua organização) e, em seguida, selecione Adicionar.
  6. Registre o valor do segredo. Você usará esse valor para configuração em uma etapa posterior. O valor secreto não será exibido novamente e não poderá ser recuperado por nenhum meio, depois que você navegar para longe dos Certificados e segredos. Certifique-se de gravá-lo.

Atribuir função de aplicativo ao seu aplicativo daemon

As aplicações que se autenticam por si só requerem permissões de aplicações.

  1. Na página Registros de aplicativos, selecione o aplicativo que você criou, como ciam-client-app.

  2. Em Gerenciar, selecione Permissões de API.

  3. Em Permissões configuradas, selecione Adicionar uma permissão.

  4. Selecione a guia APIs que minha organização usa .

  5. Na lista de APIs, selecione a API, como ciam-ToDoList-api.

  6. Selecione a opção Permissões do aplicativo. Selecionamos essa opção quando o aplicativo entra como ele mesmo, mas não em nome de um usuário.

  7. Na lista de permissões, selecione TodoList.Read.All, ToDoList.ReadWrite.All (use a caixa de pesquisa, se necessário).

  8. Selecione o botão Adicionar permissões .

  9. Neste ponto, você atribuiu as permissões corretamente. No entanto, como o aplicativo daemon não permite que os usuários interajam com ele, os próprios usuários não podem consentir com essas permissões. Para resolver esse problema, você, como administrador, deve consentir com essas permissões em nome de todos os usuários no locatário:

    1. Selecione Conceder consentimento de administrador para <o nome> do seu inquilino e, em seguida, selecione Sim.
    2. Selecione Atualizar e verifique se Concedido para <o nome> do locatário aparece em Status para ambas as permissões.

Escrever código

  1. Inicializar um aplicativo de console .NET e navegar até sua pasta raiz

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Instale o MSAL para ajudá-lo a lidar com a autenticação executando o seguinte comando:

    dotnet add package Microsoft.Identity.Client
    
  3. Execute seu projeto de API e anote a porta na qual ele está sendo executado.

  4. Abra o arquivo Program.cs e substitua o código "Hello world" pelo código a seguir.

    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var response = await client.GetAsync("https://localhost:<your-api-port>/api/todolist");
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    Navegue até o diretório raiz do aplicativo daemon e execute o aplicativo usando o comando dotnet run. Esse código envia uma solicitação sem um token de acesso. Você deve ver a string: Sua resposta é: Não autorizado impresso em seu console.

  5. Remova o código na etapa 4 e substitua pelo seguinte para testar sua API enviando uma solicitação com um token de acesso válido.

    using Microsoft.Identity.Client;
    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var clientId = "<your-daemon-app-client-id>";
    var clientSecret = "<your-daemon-app-secret>";
    var scopes = new[] {"api://<your-web-api-application-id>/.default"};
    var tenantName= "<your-tenant-name>";
    var authority = $"https://{tenantName}.ciamlogin.com/";
    
    var app = ConfidentialClientApplicationBuilder
        .Create(clientId)
        .WithAuthority(authority)
        .WithClientSecret(clientSecret)
        .Build();
    
    var result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
    
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
    var response = await client.GetAsync("https://localhost:44351/api/todolist");
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    Navegue até o diretório raiz do aplicativo daemon e execute o aplicativo usando o comando dotnet run. Esse código envia uma solicitação com um token de acesso válido. Você deve ver a string: Sua resposta é: OK impresso no console.

Consulte também

Ativar a reposição de palavras-passe self-service