Share via


Testar a API protegida

Este tutorial faz parte de uma série que o ajuda a criar e testar uma API Web protegida registada num ID de Microsoft Entra para o inquilino dos clientes.

Neste tutorial, ficará a saber como:

  • Testar uma API Web protegida com uma aplicação daemon leve que chama a API Web

Pré-requisitos

Antes de analisar este artigo, certifique-se de que tem uma API Web protegida para utilizar para fins de teste.

Registar a aplicação daemon

Os passos seguintes mostram-lhe como registar a sua aplicação daemon no centro de administração do Microsoft Entra:

  1. Inicie sessão no centro de administração do Microsoft Entra como, pelo menos, um Programador de Aplicações.

  2. Se tiver acesso a vários inquilinos, utilize o filtro Diretórios + subscrições no menu superior para mudar para o inquilino do cliente.

  3. Navegue paraAplicações> de Identidade>Registos de aplicações.

  4. Selecione + Novo registo.

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

    1. Na secção Nome , introduza um nome de aplicação relevante que será apresentado aos utilizadores da aplicação, por exemplo ciam-client-app.

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

  6. Selecione Registar.

  7. O painel Descrição Geral da aplicação é apresentado quando o registo estiver concluído. Registe o ID do Diretório (inquilino) e o ID da Aplicação (cliente) a utilizar no código fonte da aplicação.

Crie um segredo de cliente para a aplicação registada. A aplicação utiliza o segredo do cliente para provar a sua identidade quando pede tokens.

  1. Na página Registos de aplicações, selecione a aplicação que criou (como ciam-client-app) para abrir a página Descrição geral.
  2. Em Gerir, selecione Segredos de certificados&.
  3. Selecione Novo segredo do cliente.
  4. Na caixa Descrição , introduza uma descrição para o segredo do cliente (por exemplo, segredo do cliente da aplicação 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. Registe o Valor do segredo. Irá utilizar este valor para configuração num passo posterior.

Nota

O valor do segredo não será apresentado novamente e não é recuperável por qualquer meio, depois de navegar para longe da página Certificados e segredos , por isso certifique-se de que o grava.
Para uma segurança melhorada, considere utilizar certificados em vez de segredos do cliente.

Atribuir a função de aplicação à sua aplicação daemon

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

  1. Na página Registos de aplicações, selecione a aplicação que criou, como ciam-client-app.

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

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

  4. Selecione o separador As Minhas APIs .

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

  6. Selecione a opção Permissões de aplicação . Selecionamos esta opção à medida que a aplicação inicia sessão como ela própria e não como utilizadores.

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

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

  9. Neste momento, atribuiu as permissões corretamente. No entanto, uma vez que a aplicação daemon não permite que os utilizadores interajam com a mesma, os próprios utilizadores não podem consentir estas permissões. Para resolver este problema, como administrador tem de dar consentimento a estas permissões em nome de todos os utilizadores no inquilino:

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

Escrever código

  1. Inicializar uma aplicação de consola .NET e navegar para a respetiva pasta raiz

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Instale o MSAL para o ajudar a processar a autenticação ao executar o seguinte comando:

    dotnet add package Microsoft.Identity.Client
    
  3. Execute o projeto de API e anote a porta na qual está em execução.

  4. Abra o ficheiro Program.cs e substitua o código "Hello world" pelo seguinte código.

    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 para o diretório de raiz da aplicação daemon e execute a aplicação com o comando dotnet run. Este código envia um pedido sem um token de acesso. Deverá ver a cadeia: a sua resposta é: imprimida não autorizada na consola.

  5. Remova o código no passo 4 e substitua pelo seguinte para testar a API ao enviar um pedido 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 para o diretório de raiz da aplicação daemon e execute a aplicação com o comando dotnet run. Este código envia um pedido com um token de acesso válido. Deverá ver a cadeia: a sua resposta é: OK impresso na consola.