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:
Inicie sessão no centro de administração do Microsoft Entra como, pelo menos, um Programador de Aplicações.
Se tiver acesso a vários inquilinos, utilize o filtro Diretórios + subscrições no menu superior para mudar para o inquilino do cliente.
Navegue paraAplicações> de Identidade>Registos de aplicações.
Selecione + Novo registo.
Na página Registar uma aplicação apresentada, introduza as informações de registo da sua aplicação:
Na secção Nome , introduza um nome de aplicação relevante que será apresentado aos utilizadores da aplicação, por exemplo ciam-client-app.
Em Tipos de conta suportados, selecione Contas apenas neste diretório organizacional.
Selecione Registar.
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.
- 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.
- Em Gerir, selecione Segredos de certificados&.
- Selecione Novo segredo do cliente.
- Na caixa Descrição , introduza uma descrição para o segredo do cliente (por exemplo, segredo do cliente da aplicação ciam).
- 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.
- 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.
Na página Registos de aplicações, selecione a aplicação que criou, como ciam-client-app.
Em Gerir, selecione Permissões de API.
Em Permissões configuradas, selecione Adicionar uma permissão.
Selecione o separador As Minhas APIs .
Na lista de APIs, selecione a API, como ciam-ToDoList-api.
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.
Na lista de permissões, selecione TodoList.Read.All, ToDoList.ReadWrite.All (utilize a caixa de pesquisa, se necessário).
Selecione o botão Adicionar permissões .
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:
- Selecione Conceder consentimento ao administrador para <o seu nome> de inquilino e, em seguida, selecione Sim.
- 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
Inicializar uma aplicação de consola .NET e navegar para a respetiva pasta raiz
dotnet new console -o MyTestApp cd MyTestApp
Instale o MSAL para o ajudar a processar a autenticação ao executar o seguinte comando:
dotnet add package Microsoft.Identity.Client
Execute o projeto de API e anote a porta na qual está em execução.
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.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.