Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Por Damien Bod
O Azure Ative Directory B2C (Azure AD B2C) é uma solução de gerenciamento de identidade na nuvem para aplicativos Web e móveis. O serviço fornece autenticação para aplicativos hospedados na nuvem e no local. Os tipos de autenticação incluem contas individuais, contas de redes sociais e contas empresariais federadas. Além disso, o Azure AD B2C pode fornecer autenticação multifator com configuração mínima.
Sugestão
Microsoft Entra ID, Microsoft Entra External ID e Azure AD B2C são ofertas de produtos separadas. Um locatário de ID do Entra geralmente representa uma organização, enquanto um locatário do Azure AD B2C ou um locatário de ID Externa do Microsoft Entra pode representar uma coleção de identidades a serem usadas com aplicativos de terceira parte confiável. Para saber mais, consulte Azure AD B2C: perguntas frequentes (FAQ).
Sugestão
O Microsoft Entra External ID for customers é a nova solução de gerenciamento de acesso e identidade do cliente (CIAM) da Microsoft.
Neste tutorial, você aprenderá a configurar um aplicativo ASP.NET Core para autenticação com o Azure AD B2C.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- SDK do .NET. Instale o SDK .NET mais recente para sua plataforma.
Preparação
Crie uma nova aplicação ASP.NET Core de páginas Razor :
dotnet new razor -o azure-ad-b2cO comando anterior cria uma aplicação de Razor páginas num diretório chamado azure-ad-b2c.
Sugestão
Você pode preferir usar o Visual Studio para criar seu aplicativo.
Crie um registro de aplicativo Web no locatário. Para URI de redireccionamento, use
https://localhost:5001/signin-oidc. Substitua5001pela porta usada pelo seu aplicativo ao usar as portas geradas pelo Visual Studio.
Modificar o aplicativo
Adicione os
Microsoft.Identity.Webpacotes eMicrosoft.Identity.Web.UIao projeto. Se você estiver usando o Visual Studio, poderá usar o Gerenciador de Pacotes NuGet.dotnet add package Microsoft.Identity.Web dotnet add package Microsoft.Identity.Web.UINa seção precedente:
-
Microsoft.Identity.Webinclui o conjunto básico de dependências para autenticação com a plataforma de identidade da Microsoft. -
Microsoft.Identity.Web.UIinclui a funcionalidade da interface do usuário encapsulada em uma área chamadaMicrosoftIdentity.
-
Adicione um
AzureADB2Cobjeto aoappsettings.json.Observação
Ao usar fluxos de usuário do Azure B2C, você precisa definir a Instância e o PolicyId do tipo de fluxo.
{ "AzureADB2C": { "Instance": "https://--your-domain--.b2clogin.com", "Domain": "[Enter the domain of your B2C tenant, e.g. contoso.onmicrosoft.com]", "TenantId": "[Enter 'common', or 'organizations' or the Tenant Id (Obtained from the Azure portal. Select 'Endpoints' from the 'App registrations' blade and use the GUID in any of the URLs), e.g. da41245a5-11b3-996c-00a8-4d99re19f292]", "ClientId": "[Enter the Client Id (Application ID obtained from the Azure portal), e.g. ba74781c2-53c2-442a-97c2-3d60re42f403]", // Use either a secret or a certificate. ClientCertificates are recommended. "ClientSecret": "[Copy the client secret added to the app from the Azure portal]", "ClientCertificates": [ ], // the following is required to handle Continuous Access Evaluation challenges "ClientCapabilities": [ "cp1" ], "CallbackPath": "/signin-oidc", // Add your policy here "SignUpSignInPolicyId": "B2C_1_signup_signin", "SignedOutCallbackPath": "/signout-callback-oidc" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" }- Para Domínio, use o domínio do locatário do Azure AD B2C.
- Para ClientId, use a ID do aplicativo (cliente) do registro do aplicativo que você criou em seu locatário.
- Por exemplo, use o domínio do seu locatário do Azure AD B2C.
- Para SignUpSignInPolicyId, use a política de fluxo de usuário definida no locatário B2C do Azure
- Use a configuração ClientSecret ou ClientCertificates . Os certificados de cliente são recomendados.
- Deixe todos os outros valores como estão.
Em Pages/Shared, crie um arquivo chamado
_LoginPartial.cshtml. Inclua o seguinte código:@using System.Security.Principal <ul class="navbar-nav"> @if (User.Identity?.IsAuthenticated == true) { <span class="navbar-text text-dark">Hello @User.Identity?.Name!</span> <li class="nav-item"> <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a> </li> } else { <li class="nav-item"> <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a> </li> } </ul>O código anterior:
- Verifica se o usuário está autenticado.
- Renderiza um link Sair ou Entrar conforme apropriado.
- O link aponta para um método de ação no
Accountcontrolador naMicrosoftIdentityárea.
- O link aponta para um método de ação no
Em Pages/Shared/_Layout.cshtml, adicione a linha realçada dentro do
<header>elemento :<header> <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3"> <div class="container"> <a class="navbar-brand" asp-area="" asp-page="/Index">azure_ad_b2c</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between"> <ul class="navbar-nav flex-grow-1"> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a> </li> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a> </li> </ul> <partial name="_LoginPartial" /> </div> </div> </nav> </header>Adicionar
<partial name="_LoginPartial" />renderiza a_LoginPartial.cshtmlvisualização parcial em cada solicitação de página que usa este layout.No Program.cs, faça as seguintes alterações:
Aditar as seguintes
usingdiretivas:using Microsoft.Identity.Web; using Microsoft.Identity.Web.UI; using Microsoft.AspNetCore.Authentication.OpenIdConnect;O código anterior resolve as referências usadas nas próximas etapas.
Atualize as
builder.Serviceslinhas com o seguinte código:builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureADB2C")); builder.Services.AddAuthorization(options => { // By default, all incoming requests will be authorized according to // the default policy options.FallbackPolicy = options.DefaultPolicy; }); builder.Services.AddRazorPages(options => { options.Conventions.AllowAnonymousToPage("/Index"); }) .AddMvcOptions(options => { }) .AddMicrosoftIdentityUI();No código anterior:
- Chamadas para os métodos
AddAuthenticationeAddMicrosoftIdentityWebAppconfiguram a aplicação para usar o Open ID Connect, especificamente configurado para a plataforma de identidade da Microsoft. -
AddAuthorizationinicializa a autorização do ASP.NET Core. - A
AddRazorPageschamada configura o aplicativo para que navegadores anônimos possam exibir a página Índice. Todas as outras solicitações exigem autenticação. -
AddMvcOptionseAddMicrosoftIdentityUIadicione os componentes de interface do usuário necessários para redirecionar de/para o Azure AD B2C.
- Chamadas para os métodos
Atualize a linha realçada para o
Configuremétodo:app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages();O código anterior permite a autenticação no ASP.NET Core.
Executar o aplicativo
Observação
Utilize o perfil que corresponde aos URIs de redirecionamento do registo de aplicação do Azure
Execute o aplicativo.
dotnet run --launch-profile httpsNavegue para o ponto de extremidade seguro da aplicação, por exemplo,
https://localhost:5001/.- A página Índice é renderizada sem nenhum desafio de autenticação.
- O cabeçalho inclui um link Entrar porque você não está autenticado.
Selecione o link Privacy.
- O navegador é redirecionado para o método de autenticação configurado do seu locatário.
- Depois de entrar, o cabeçalho exibe uma mensagem de boas-vindas e um link Sair .
Próximos passos
Neste tutorial, você aprendeu como configurar um aplicativo ASP.NET Core para autenticação com o Azure AD B2C.
Agora que o aplicativo ASP.NET Core está configurado para usar o Azure AD B2C para autenticação, o atributo Authorize pode ser usado para proteger seu aplicativo. Continue desenvolvendo seu aplicativo aprendendo a:
- Personalize a interface do usuário do Azure AD B2C.
- Configure os requisitos de complexidade de senha.
- Habilite a autenticação multifator.
- Configure provedores de identidade adicionais, como Microsoft, Facebook, Google, Amazon, Twitter e outros.
- Use a API do Microsoft Graph para recuperar informações adicionais do utilizador, como associação a grupos, do tenant do Azure AD B2C.
- Como proteger uma API Web criada com o ASP.NET Core usando o Azure AD B2C.
- Tutorial: Conceder acesso a uma API Web ASP.NET usando o Azure Ative Directory B2C.