Guia de início rápido: proteja uma API Web ASP.NET Core com a plataforma de identidade da Microsoft
Este guia de início rápido usa um exemplo de código de API da Web do ASP.NET Core para demonstrar como restringir o acesso a recursos a contas autorizadas. O exemplo usa ASP.NET identidade principal que interage com a Microsoft Authentication Library (MSAL) para manipular a autenticação.
Pré-requisitos
- Conta do Azure com uma assinatura ativa. Se ainda não tiver uma, crie uma conta gratuitamente.
- Um requisito mínimo do SDK do .NET 8.0
- Visual Studio 2022 ou Visual Studio Code
Registar a aplicação e os identificadores de registo
Para concluir o registro, forneça um nome ao aplicativo e especifique os tipos de conta suportados. Uma vez registrada, a página Visão geral do aplicativo exibe os identificadores necessários no código-fonte do aplicativo.
Entre 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 Configurações no menu superior para alternar para o locatário no qual deseja registrar o aplicativo no menu Diretórios + assinaturas.
Navegue até Registros do aplicativo Identity>
Selecione Novo registo.
Insira um Nome para o aplicativo, como NewWebAPI1.
Em Tipos de conta suportados, selecione Contas somente neste diretório organizacional. Para obter informações sobre diferentes tipos de conta, selecione Ajude-me a escolher a opção.
Selecione Registar.
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.
Nota
Os tipos de conta suportados podem ser alterados consultando 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 da Web protegida. Em seguida, a API da Web executa a operação solicitada somente se o token de acesso que recebe contiver os escopos necessários.
Em Gerenciar, selecione Expor uma API > Adicionar um escopo. Aceite o URI
(api://{clientId})
selecionando Salvar e continuar. O{clientId}
é o valor registrado na página Visão geral . Em seguida, insira as seguintes informações:- Em Nome do escopo, digite
Forecast.Read
. - Para Quem pode consentir, verifique se a opção Administradores e usuários está selecionada.
- Na caixa Nome para exibição do consentimento do administrador, digite
Read forecast data
. - Na caixa Descrição do consentimento do administrador, digite
Allows the application to read weather forecast data
. - Na caixa Nome de exibição do consentimento do usuário, digite
Read forecast data
. - Na caixa Descrição do consentimento do utilizador, introduza
Allows the application to read weather forecast data
. - Verifique se o Estado está definido como Habilitado.
- Em Nome do escopo, digite
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 digite o seguinte comando:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
Transfira o ficheiro .zip. Extraia-o para um caminho de arquivo onde o comprimento do nome é inferior a 260 caracteres.
Configurar o aplicativo de exemplo ASP.NET Core
No IDE, abra a pasta do projeto, ms-identity-docs-code-dotnet/web-api, que contém o exemplo.
Abrir
appsettings.json
arquivo, 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": "*" }
Encontre o seguinte
key
:-
ClientId
- O identificador da aplicação, também referido como o cliente. Substitua ovalue
texto entre aspas pelo ID do aplicativo (cliente) que foi gravado anteriormente na página Visão geral do aplicativo registrado. -
TenantId
- O identificador do inquilino onde a aplicação está registada. Substitua ovalue
texto entre aspas pelo valor de ID do diretório (locatário) que foi registrado anteriormente na página Visão geral do aplicativo registrado.
-
Executar o exemplo de aplicação
Execute o seguinte comando para iniciar o aplicativo:
dotnet run
Uma saída como a seguinte amostra é exibida:
... info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:{port} ...
Registre o número da
http://localhost:{port}
porta no URL.Para verificar se o ponto de extremidade está protegido, atualize a 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óximos passos
Prossiga para o próximo artigo para saber como chamar a API da Web protegida usando cURL.