Cloudové ověřování pomocí Azure Active Directory B2C v ASP.NET Core
Od Damien Bod
Azure Active Directory B2C (Azure AD B2C) je řešení pro správu cloudu identity pro webové a mobilní aplikace. Služba poskytuje ověřování pro aplikace hostované v cloudu a v místním prostředí. Typy ověřování zahrnují jednotlivé účty, účty sociálních sítí a federované podnikové účty. Azure AD B2C navíc může poskytovat vícefaktorové ověřování s minimální konfigurací.
Tip
Microsoft Entra ID, Microsoft Entra Externí ID a Azure AD B2C jsou samostatné nabídky produktů. Tenant Entra ID obecně představuje organizaci, zatímco tenant Azure AD B2C nebo Microsoft Entra Externí ID tenant může představovat kolekci identit, které se mají použít s aplikacemi předávající strany. Další informace najdete v tématu Azure AD B2C: Nejčastější dotazy.
Tip
Microsoft Entra Externí ID pro zákazníky je řešení Microsoftu pro správu přístupu a zákazníka identity (CIAM).
V tomto kurzu se dozvíte, jak nakonfigurovat aplikaci ASP.NET Core pro ověřování pomocí Azure AD B2C.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- .NET SDK. Nainstalujte nejnovější sadu .NET SDK pro vaši platformu.
Příprava
Vytvořte tenanta Azure Active Directory B2C.
Vytvořte novou aplikaci ASP.NET core Razor pages:
dotnet new razor -o azure-ad-b2c
Předchozí příkaz vytvoří Razor aplikaci stránek v adresáři s názvem azure-ad-b2c.
Tip
K vytvoření aplikace můžete raději použít Visual Studio.
Vytvořte registraci webové aplikace v tenantovi. Pro identifikátor URI přesměrování použijte
https://localhost:5001/signin-oidc
. Nahraďte5001
port používaný vaší aplikací při použití portů generovaných sadou Visual Studio.
Úprava aplikace
Přidejte do
Microsoft.Identity.Web
projektu balíčky aMicrosoft.Identity.Web.UI
balíčky. Pokud používáte Visual Studio, můžete použít Správce balíčků NuGet.dotnet add package Microsoft.Identity.Web dotnet add package Microsoft.Identity.Web.UI
V předchozím příkladu:
Microsoft.Identity.Web
obsahuje základní sadu závislostí pro ověřování s platformou Microsoftu identity .Microsoft.Identity.Web.UI
zahrnuje funkce uživatelského rozhraní zapouzdřené v oblasti s názvemMicrosoftIdentity
.
AzureADB2C
Přidat objekt doappsettings.json
.Poznámka:
Při používání toků uživatelů Azure B2C musíte nastavit instanci a ID zásad typu toku.
{ "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": "*" }
- Pro doménu použijte doménu vašeho tenanta Azure AD B2C.
- Pro ClientId použijte ID aplikace (klienta) z registrace aplikace, kterou jste vytvořili ve svém tenantovi.
- Například použijte doménu vašeho tenanta Azure AD B2C.
- Pro SignUpSignInPolicyId použijte zásadu toku uživatele definovanou v tenantovi Azure B2C.
- Použijte konfiguraci ClientSecret nebo ClientCertificates. Doporučuje se certifikáty ClientCertificates.
- Všechny ostatní hodnoty nechte tak, jak jsou.
Ve složce Pages/Shared vytvořte soubor s názvem
_LoginPartial.cshtml
. Zahrňte následující kód:@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>
Předchozí kód:
- Zkontroluje, jestli je uživatel ověřený.
- Vykreslí odkaz pro odhlášení nebo přihlášení podle potřeby.
- Odkaz odkazuje na metodu akce na
Account
kontroleru vMicrosoftIdentity
oblasti.
- Odkaz odkazuje na metodu akce na
V souboru Pages/Shared/_Layout.cshtml přidejte zvýrazněný řádek v elementu
<header>
:<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>
Přidání
<partial name="_LoginPartial" />
vykreslí_LoginPartial.cshtml
částečné zobrazení v každém požadavku na stránku, který toto rozložení používá.V Program.cs proveďte následující změny:
Přidejte následující
using
direktivy:using Microsoft.Identity.Web; using Microsoft.Identity.Web.UI; using Microsoft.AspNetCore.Authentication.OpenIdConnect;
Předchozí kód vyřeší odkazy použité v dalších krocích.
builder.Services
Aktualizujte řádky následujícím kódem: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();
V předchozím kódu:
AddAuthentication
Volání aAddMicrosoftIdentityWebApp
metody konfigurují aplikaci tak, aby používala Open ID Connect, konkrétně nakonfigurovanou pro platformu Microsoftuidentity.AddAuthorization
inicializuje autorizaci ASP.NET Core.- Volání
AddRazorPages
nakonfiguruje aplikaci tak, aby anonymní prohlížeče mohly zobrazit indexovou stránku. Všechny ostatní požadavky vyžadují ověření. AddMvcOptions
aAddMicrosoftIdentityUI
přidejte požadované komponenty uživatelského rozhraní pro přesměrování do a z Azure AD B2C.
Aktualizujte zvýrazněnou čáru na metodu
Configure
:app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages();
Předchozí kód umožňuje ověřování v ASP.NET Core.
Spustit aplikaci
Poznámka:
Použijte profil, který odpovídá identifikátorům URI pro přesměrování registrace Aplikace Azure.
Spustit aplikaci.
dotnet run --launch-profile https
Přejděte do zabezpečeného koncového bodu aplikace,
https://localhost:5001/
například .- Stránka Index se vykreslí bez výzvy ověřování.
- Záhlaví obsahuje odkaz pro přihlášení , protože nejste ověřeni.
Vyberte odkaz Privacy.
- Prohlížeč se přesměruje na nakonfigurovanou metodu ověřování vašeho tenanta.
- Po přihlášení se v záhlaví zobrazí uvítací zpráva a odkaz Pro odhlášení .
Další kroky
V tomto kurzu jste zjistili, jak nakonfigurovat aplikaci ASP.NET Core pro ověřování pomocí Azure AD B2C.
Teď, když je aplikace ASP.NET Core nakonfigurovaná tak, aby k ověřování používala Azure AD B2C, můžete k zabezpečení aplikace použít atribut Authorize. Pokračujte v vývoji aplikace tím, že se naučíte:
- Přizpůsobení uživatelského rozhraní Azure AD B2C
- Konfigurace požadavků na složitost hesel
- Povolte vícefaktorové ověřování.
- Nakonfigurujte další identity poskytovatele, například Microsoft, Facebook, Google, Amazon, Twitter a další.
- Pomocí rozhraní Microsoft Graph API načtěte další informace o uživateli, jako je členství ve skupinách, z tenanta Azure AD B2C.
- Jak zabezpečit webové rozhraní API vytvořené pomocí ASP.NET Core pomocí Azure AD B2C.
- Kurz: Udělení přístupu k webovému rozhraní API ASP.NET pomocí Azure Active Directory B2C