Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste guia inicial, irá criar uma aplicação web ASP.NET Core que permite aos utilizadores iniciar sessão com Microsoft Entra ID usando a Microsoft.Identity.Web. Podes ou estruturar um novo projeto a partir de um template ou adicionar autenticação a uma aplicação existente.
Se não tiver um tenant Microsoft Entra, crie uma conta gratuita antes de começar.
Pré-requisitos
- .NET 9 SDK
- Um inquilino Microsoft Entra ID
- Um registo de aplicação no seu locatário Microsoft Entra. Se precisar de criar uma, consulte Registar a sua candidatura.
Crie um projeto a partir do modelo
A forma mais rápida de começar é estruturar um novo projeto com autenticação pré-configurada.
Execute os seguintes comandos para criar uma nova aplicação web com autenticação de uma única organização e navegue para o diretório do projeto:
dotnet new webapp --auth SingleOrg --name MyWebApp
cd MyWebApp
O modelo gera um projeto com a Microsoft. Identity.Web já configurado. Só precisa de fornecer os detalhes de registo da sua aplicação.
Abra appsettings.json e substitua os valores provisórios pelo ID da Aplicação (cliente) e ID do Diretório (inquilino) do registo da sua aplicação:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"CallbackPath": "/signin-oidc"
}
}
Inicie a aplicação para verificar se o login funciona:
dotnet run
Navegue até https://localhost:5001 e selecione Iniciar sessão. Se aparecer um prompt para iniciar sessão da Microsoft, a configuração está correta.
Adicionar autenticação a uma aplicação web existente
Se tem uma aplicação ASP.NET Core existente, siga estes passos para adicionar login no Microsoft Entra.
Instalar pacotes NuGet
Adicionar as bibliotecas Microsoft.Identity.Web. O pacote Microsoft.Identity.Web trata da autenticação, e o Microsoft.Identity.Web.UI fornece componentes pré-construídos para iniciar e sair de sessão:
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 seguinte código regista a autenticação OpenID Connect com a Microsoft Entra, permite a aquisição de tokens para chamadas API a jusante e adiciona a interface de log-in/log-out:
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
Abre appsettings.json e adiciona a AzureAd secção. Substitua os valores provisórios pelo ID de Aplicação (cliente) do registo da sua aplicação. Defina TenantId para o público apropriado para a sua aplicação:
{
"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 que contas podem iniciar sessão:
| Valor | Contas aceites |
|---|---|
common |
Trabalho/escola e contas pessoais da Microsoft |
organizations |
Apenas contas de trabalho/escola |
consumers |
Apenas contas pessoais da Microsoft |
<your-tenant-id> |
Sistema de inquilino único — apenas a sua organização |
Proteja as suas páginas
Adicione o [Authorize] atributo a páginas ou controladores que exijam iniciar sessão.
Para as Razor Pages, o [Authorize] atributo redireciona os utilizadores não autenticados para a página de iniciação de sessão. Após iniciar sessão, as reivindicações do utilizador como Name e preferred_username estão disponíveis através do User objeto:
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 aplica-se ao nível do controlador ou 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 para iniciar sessão e sair
Adicione links de navegação ao seu layout para que os utilizadores possam iniciar e desconectar. As rotas da área MicrosoftIdentity são fornecidas pelo pacote Microsoft.Identity.Web.UI. A seguinte marcação Razor apresenta condicionalmente Logout ou Login com base no estado de autenticação do utilizador:
<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 a aplicação para verificar se a autenticação funciona:
dotnet run
Navegue até https://localhost:5001. Deverá ver um link Iniciar sessão. Selecione-o para confirmar que o fluxo de início de sessão da Microsoft foi concluído com sucesso.
Registe a aplicação
Se ainda não tem um registo de aplicação, siga estes passos para criar um no portal do Azure.
- Inicie sessão no portal do Azure.
- Navegue atéMicrosoft Entra ID>Registos de aplicações>Novo registo.
- Insira um nome de exibição (por exemplo, "A Minha Aplicação Web").
- Selecione os tipos de conta suportados:
- Inquilino único — Apenas utilizadores na sua organização
- Multi-inquilino — Utilizadores em qualquer organização
- Multi-locatário + pessoal — Todas as contas Microsoft
- Em Redirecionar URI, defina a plataforma para Web e introduza
https://localhost:5001/signin-oidc. - Selecione Register.
- Na página de visão geral, copie o ID da Aplicação (cliente) e o ID do Diretório (inquilino). Precisas destes valores para os campos
ClientIdeTenantIdemappsettings.json.
Configurar definições opcionais
O seu cenário pode exigir estas definições adicionais.
Permitir a emissão de ID token — Alguns cenários de autenticação híbrida exigem que os ID tokens sejam emitidos diretamente a partir do endpoint de autorização. O fluxo de código de autorização (utilizado pela Microsoft. Identity.Web) é a abordagem recomendada. Ative esta definição apenas se o seu cenário a exigir especificamente.
- No registo da sua aplicação, vá a Autenticação.
- Em Concessão implícita e fluxos híbridos, selecione tokens ID.
- Selecione Guardar.
Note
O fluxo implícito de concessão é um fluxo legado. A Microsoft recomenda o fluxo de código de autorização com PKCE para todas as novas aplicações. Para mais informações, consulte a documentação plataforma de identidades da Microsoft.
Configurar o URL de logout da interface principal — Garante que os utilizadores ficam desconectados da sua aplicação quando saem da Microsoft Entra:
- No registo da sua aplicação, vá a Autenticação.
- Em URL de logout do canal dianteiro, introduza
https://localhost:5001/signout-oidc. - Selecione Guardar.
Solucionar erros comuns
Caso encontre problemas durante o login, verifique estes erros comuns.
| Erro | Motivo | Solução |
|---|---|---|
| AADSTS50011: Sem endereço de resposta registado | Redirecionar a incompatibilidade de URI entre o código e o registo da aplicação | Verifique se o URI de redirecionamento no registo da aplicação corresponde a CallbackPath (/signin-oidc por defeito) |
| AADSTS700016: Aplicação não encontrada | Configuração incorreta ClientId |
Confirme se o ID appsettings.json corresponde ao registo da sua aplicação |
| Erro de configuração de autoridade | Desaparecida ou inválida Instance ou TenantId |
Configurar Instance para https://login.microsoftonline.com/ e confirmar se TenantId é válido |