Guia de início rápido: proteger uma API Web ASP.NET Core com a plataforma de identidade da Microsoft
Este início rápido usa um exemplo de código da API Web do ASP.NET Core para demonstrar como restringir o acesso a recursos para contas autorizadas. O exemplo usa ASP.NET Core Identidade que interage com a MSAL (Biblioteca de Autenticação da Microsoft) para lidar com a autenticação.
Pré-requisitos
- Conta do Azure com uma assinatura ativa. Se você ainda não tiver uma, Crie uma conta gratuita.
- Requisito mínimo de SDK do .NET 8.0
- Visual Studio 2022 ou Visual Studio Code
Registre o aplicativo e os identificadores de registro
Dica
As etapas neste artigo podem variar ligeiramente com base no portal onde você começa.
Para concluir o registro, forneça um nome ao aplicativo e especifique os tipos de conta com suporte. Uma vez registrada, a página Visão geral do aplicativo exibe os identificadores necessários no código-fonte do aplicativo.
Faça login no Centro de administração do Microsoft Entra como pelo menos um Desenvolvedor de aplicativos.
Se você tiver acesso a vários locatários, use o ícone de Configurações no menu superior para alternar para o locatário no qual deseja registrar o aplicativo no menu Diretórios + assinaturas.
Navegue até Identidade>Aplicativos>Registros de aplicativo.
Selecione Novo registro.
Insira um Nome para o aplicativo, como NewWebAPI1.
Para Tipos de contas com suporte, selecione Contas somente neste diretório organizacional. Para obter informações sobre diferentes tipos de conta, selecione a opção Ajudar-me a escolher.
Selecione Registrar.
O painel Visão geral do aplicativo é exibido quando o registro for concluído. Registre a ID do Diretório (locatário) e a ID do aplicativo (cliente) a ser usada no código-fonte do aplicativo.
Observação
Os Tipos de conta com suporte podem ser alterados referindo-se a Modificar as contas suportadas por um aplicativo.
Expor uma API
Depois que a API for registrada, você poderá configurar sua permissão definindo os escopos que a API expõe aos aplicativos cliente. Os aplicativos cliente solicitam permissão para executar operações passando um token de acesso junto com suas solicitações para a API Web protegida. A API Web executará a operação solicitada somente se o token de acesso recebido contiver os escopos necessários.
Em Gerenciar, selecione Expor uma API > Adicionar um escopo. Se solicitado, aceite o URI da ID do aplicativo
(api://{clientId})
proposto selecionando Salvar e continuar. O{clientId}
será o valor registrado na página Visão geral. Em seguida, insira as informações a seguir:- Para Nome do escopo, insira
Forecast.Read
. - Para Quem pode consentir, verifique se a opção Administradores e usuários está selecionada.
- Na caixa Nome de exibição do consentimento do administrador, insira
Read forecast data
. - Na caixa Descrição do consentimento do administrador, insira
Allows the application to read weather forecast data
. - Na caixa Nome de exibição do consentimento do usuário, insira
Read forecast data
. - Na caixa Descrição do consentimento do usuário, insira
Allows the application to read weather forecast data
. - Verifique se o Estado está definido como Habilitado.
- Para Nome do escopo, insira
Selecione Adicionar escopo. Se o escopo tiver sido inserido corretamente, ele será listado no painel Expor uma API.
Clone ou baixe o aplicativo de exemplo
Para obter o aplicativo de exemplo, você pode cloná-lo do GitHub ou baixá-lo como um arquivo .zip.
Para clonar o exemplo, abra um prompt de comando e navegue até onde deseja criar o projeto e insira o seguinte comando:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
Baixar o arquivo .zip. Extraia-o para um caminho de arquivo em que o comprimento do nome seja menor que 260 caracteres.
Configure o aplicativo de exemplo do ASP.NET Core
No IDE, abra a pasta do projeto, ms-identity-docs-code-dotnet/web-api, que contém o exemplo.
Abra o arquivo
appsettings.json
, que contém o seguinte trecho de código:{ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center", "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center", "Scopes": "Forecast.Read" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Localize o seguinte
key
:ClientId
– O identificador do aplicativo, também conhecido como cliente. Substitua o textovalue
entre aspas pela ID do aplicativo (cliente) que foi registrada anteriormente na página Visão geral do aplicativo registrado.TenantId
– O identificador do locatário em que o aplicativo está registrado. Substitua o textovalue
entre aspas pelo valor da ID do diretório (locatário) que foi registrado anteriormente na página Visão geral do aplicativo registrado.
Execute o aplicativo de exemplo
Execute o comando a seguir para iniciar o aplicativo:
dotnet run
É exibida uma saída como a seguinte amostra:
... info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:{port} ...
Registre o número da porta no URL
http://localhost:{port}
.Para verificar se o ponto de extremidade está protegido, atualize o URL base no seguinte comando cURL para corresponder ao que você recebeu na etapa anterior e execute o comando:
curl -X GET https://localhost:5001/weatherforecast -ki
A resposta esperada é 401 Não autorizado com saída semelhante a:
user@host:~$ curl -X GET https://localhost:5001/weatherforecast -ki HTTP/2 401 date: Fri, 23 Sep 2023 23:34:24 GMT server: Kestrel www-authenticate: Bearer content-length: 0
Próximas etapas
Prossiga para o próximo artigo para saber como chamar a API Web protegida usando cURL.