Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste início rápido, você criará um aplicativo Web ASP.NET Core que conectará usuários com Microsoft Entra ID usando Microsoft. Identity.Web. Você pode estruturar um novo projeto de um modelo ou adicionar autenticação a um aplicativo existente.
Se você não tiver um tenant do Microsoft Entra, crie uma conta gratuita antes de começar.
Pré-requisitos
- .NET 9 SDK
- Um tenant Microsoft Entra ID
- Um registro de aplicativo em seu locatário do Microsoft Entra. Se você precisar criar um, consulte Registrar seu aplicativo.
Criar um projeto com base no modelo
A maneira mais rápida de começar é criar um novo projeto com a autenticação pré-configurada.
Execute os seguintes comandos para criar um novo aplicativo Web com autenticação de organização única e navegue até o diretório do projeto:
dotnet new webapp --auth SingleOrg --name MyWebApp
cd MyWebApp
O modelo gera um projeto com Microsoft. Identity.Web já configurado. Você só precisa fornecer os detalhes do registro do aplicativo.
Abra appsettings.json e substitua os valores do espaço reservado pelo ID do aplicativo (cliente) e pelo ID do diretório (locatário) do registro do aplicativo:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"CallbackPath": "/signin-oidc"
}
}
Inicie o aplicativo para verificar se o login funciona:
dotnet run
Navegue até https://localhost:5001 e selecione Entrar. Se um prompt de entrada Microsoft for exibido, a configuração estará correta.
Adicionar autenticação a um aplicativo Web existente
Se você tiver um aplicativo ASP.NET Core existente, siga estas etapas para integrar o login do Microsoft Entra.
Instalar os pacotes NuGet
Adicione as bibliotecas Microsoft.Identity.Web. O pacote Microsoft.Identity.Web manipula a autenticação e Microsoft.Identity.Web.UI fornece componentes de interface do usuário de entrada e saída predefinidos:
dotnet add package Microsoft.Identity.Web
dotnet add package Microsoft.Identity.Web.UI
Configurar serviços de autenticação
Abra Program.cs e adicione os serviços de autenticação. O código a seguir registra a autenticação do OpenID Connect com Microsoft Entra, habilita a aquisição de token para chamadas à API downstream e adiciona a interface do usuário de entrada/saída:
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
var builder = WebApplication.CreateBuilder(args);
// Add authentication
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration, "AzureAd")
.EnableTokenAcquisitionToCallDownstreamApi() // Optional: if calling APIs
.AddInMemoryTokenCaches(); // For production, use distributed cache
// Add Razor Pages or MVC
builder.Services.AddRazorPages()
.AddMicrosoftIdentityUI(); // Adds sign-in/sign-out UI
var app = builder.Build();
// Configure middleware
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication(); // Add authentication middleware
app.UseAuthorization();
app.MapRazorPages();
app.MapControllers();
app.Run();
Adicionar configuração do Microsoft Entra
Abra appsettings.json e adicione a AzureAd seção. Substitua os valores de espaço reservado pela ID do Aplicativo (cliente) do registro do aplicativo. Defina TenantId para o público-alvo apropriado para seu aplicativo:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "common",
"ClientId": "your-client-id-from-app-registration",
"CallbackPath": "/signin-oidc"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Identity.Web": "Information"
}
}
}
O TenantId valor determina quais contas podem entrar:
| Valor | Contas aceitas |
|---|---|
common |
Contas Microsoft de trabalho/escola e pessoais |
organizations |
Somente contas corporativas/de estudante |
consumers |
Somente contas Microsoft pessoais |
<your-tenant-id> |
Locatário único – somente sua organização |
Proteger suas páginas
Adicione o [Authorize] atributo a páginas ou controladores que exigem entrada.
Para o Razor Pages, o [Authorize] atributo redireciona usuários não autenticados para a página de entrada. Após o login, as declarações do usuário, como Name e preferred_username, estão disponíveis através do objeto User:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;
[Authorize] // Require authentication
public class IndexModel : PageModel
{
public void OnGet()
{
var userName = User.Identity?.Name;
var userEmail = User.FindFirst("preferred_username")?.Value;
}
}
Para controladores MVC, o mesmo [Authorize] atributo se aplica no nível do controlador ou da ação:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
[Authorize] // Require authentication
public class HomeController : Controller
{
public IActionResult Index()
{
var userName = User.Identity?.Name;
return View();
}
}
Adicionar links de entrada e de saída
Adicione links de navegação ao layout para que os usuários possam entrar e sair. As rotas de área MicrosoftIdentity são fornecidas pelo pacote Microsoft.Identity.Web.UI. A marcação razor a seguir renderiza condicionalmente Sair ou Entrar com base no estado de autenticação do usuário:
<ul class="navbar-nav">
@if (User.Identity?.IsAuthenticated == true)
{
<li class="nav-item">
<span class="nav-link">Hello @User.Identity.Name!</span>
</li>
<li class="nav-item">
<a class="nav-link" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
</li>
}
</ul>
Executar e testar
Inicie o aplicativo para verificar se a autenticação funciona:
dotnet run
Navegue até https://localhost:5001. Você deve ver um link Entrar. Selecione-o para confirmar se o fluxo de entrada do Microsoft foi concluído com êxito.
Registre seu aplicativo
Se você ainda não tiver um registro de aplicativo, siga estas etapas para criar um no portal do Azure.
- Entre no portal do Azure.
- Navegue até Microsoft Entra ID>registros de aplicativo>Nova inscrição.
- Insira um nome de exibição (por exemplo, "Meu Aplicativo Web").
- Selecione os tipos de conta com suporte:
- Tenant único – Somente usuários na sua organização
- Multi-tenant – Usuários em qualquer organização
- Multi-tenant + personal — Todas as contas Microsoft
- Em URI de Redirecionamento, defina a plataforma como Web e insira
https://localhost:5001/signin-oidc. - Selecione Registrar.
- Na página de visão geral, copie a ID do Aplicativo (cliente) e a ID do Diretório (inquilino). Você precisa desses valores para os campos
ClientIdTenantIdemappsettings.json.
Configurar definições opcionais
Seu cenário pode exigir essas configurações adicionais.
Habilitar a emissão de token de ID — alguns cenários de autenticação híbrida exigem que os tokens de ID sejam emitidos diretamente do ponto de extremidade de autorização. O fluxo de código de autorização (usado por Microsoft. Identity.Web) é a abordagem recomendada. Habilite essa configuração somente se o cenário exigir especificamente:
- No registro do aplicativo, vá para Autenticação.
- Em Concessão implícita e fluxos híbridos, selecione Tokens de ID.
- Clique em Salvar.
Note
O fluxo de concessão implícita é um fluxo herdado. Microsoft recomenda o fluxo de código de autorização com PKCE para todos os novos aplicativos. Para obter mais informações, consulte a documentação plataforma de identidade da Microsoft.
Configurar URL de logoff de front-channel — garante que os usuários sejam desconectados de sua aplicação quando saírem do Microsoft Entra.
- No registro do aplicativo, vá para Autenticação.
- Na URL de logout do front-channel, insira
https://localhost:5001/signout-oidc. - Clique em Salvar.
Solucionar erros comuns
Se você encontrar problemas durante a entrada, verifique esses erros comuns.
| Erro | Motivo | Solução |
|---|---|---|
| AADSTS50011: Nenhum endereço de resposta registrado | Divergência de URI de redirecionamento entre o código e o registro do aplicativo | Verifique se o URI de redirecionamento no registro do aplicativo corresponde CallbackPath (/signin-oidc por padrão) |
| AADSTS700016: Aplicativo não encontrado | Erro ClientId na configuração |
Confirme se a ID do aplicativo (cliente) corresponde ao appsettings.json registro do aplicativo |
| Erro de configuração de autoridade | Ausente ou inválido Instance ou TenantId |
Definir Instance como https://login.microsoftonline.com/ e confirmar TenantId é válido |