Hitelesítés engedélyezése a saját webalkalmazásban Azure AD B2C használatával
Ez a cikk bemutatja, hogyan adhat hozzá Azure Active Directory B2C-hitelesítést (Azure AD B2C-hitelesítést saját ASP.NET webalkalmazásához. Megtudhatja, hogyan hozhat létre ASP.NET Core webalkalmazást ASP.NET Core OpenID Connect protokollt használó köztes szoftverrel.
Használja ezt a cikket a Hitelesítés konfigurálása minta webalkalmazásban című témakörben, és cserélje le a minta webalkalmazást a saját webalkalmazására.
Előfeltételek
Az előfeltételek és az integrációs utasítások áttekintéséhez lásd: Hitelesítés konfigurálása minta webalkalmazásban.
1. lépés: Webalkalmazás-projekt létrehozása
Használhat egy meglévő ASP.NET modellnézet-vezérlő (MVC) webalkalmazás-projektet, vagy létrehozhat egy újat. Új projekt létrehozásához nyisson meg egy parancshéjat, majd írja be a következő parancsot:
dotnet new mvc -o mywebapp
Az előző parancs a következőket hajtja végre:
- Létrehoz egy új MVC-webalkalmazást.
- A
-o mywebapp
paraméter létrehoz egy mywebapp nevű könyvtárat az alkalmazás forrásfájljaival.
2. lépés: A hitelesítési kódtárak hozzáadása
Adja hozzá a Microsoft Identity webtárat, amely ASP.NET Core kódtárak készlete, amely leegyszerűsíti Azure AD B2C-hitelesítés és -engedélyezés támogatását a webalkalmazáshoz. A Microsoft Identity webtár cookie-alapú hitelesítéssel állítja be a hitelesítési folyamatot. Gondoskodik a HTTP-hitelesítési üzenetek küldéséről és fogadásáról, a jogkivonatok érvényesítéséről, a jogcímek kinyeréséről és egyebekről.
A Microsoft Identity Web Library hozzáadásához telepítse a csomagokat az alábbi parancsok futtatásával:
dotnet add package Microsoft.Identity.Web
dotnet add package Microsoft.Identity.Web.UI
3. lépés: Hitelesítési kódtárak kezdeményezése
A Microsoft Identity Web köztes szoftver egy indítási osztályt használ, amely az üzemeltetési folyamat indításakor fut. Ebben a lépésben hozzáadja a hitelesítési kódtárak elindításához szükséges kódot.
Nyissa meg a Startup.cs fájlt, majd az osztály elején adja hozzá a következő using
deklarációkat:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
Mivel a Microsoft Identity Web cookie-alapú hitelesítést használ a webalkalmazás védelméhez, az alábbi kód a SameSite cookie-beállításokat állítja be. Ezután beolvassa az AzureAdB2C
alkalmazásbeállításokat, és elindítja a köztes szoftvervezérlőt a nézetével.
Cserélje le a függvényt ConfigureServices(IServiceCollection services)
a következő kódrészletre:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.Unspecified;
// Handling SameSite cookie according to https://learn.microsoft.com/aspnet/core/security/samesite?view=aspnetcore-3.1
options.HandleSameSiteCookieCompatibility();
});
// Configuration to sign-in users with Azure AD B2C
services.AddMicrosoftIdentityWebAppAuthentication(Configuration, "AzureAdB2C");
services.AddControllersWithViews()
.AddMicrosoftIdentityUI();
services.AddRazorPages();
//Configuring appsettings section AzureAdB2C, into IOptions
services.AddOptions();
services.Configure<OpenIdConnectOptions>(Configuration.GetSection("AzureAdB2C"));
}
Az alábbi kód hozzáadja a cookie-szabályzatot, és a hitelesítési modellt használja. Cserélje le a függvényt Configure
a következő kódrészletre:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
// Add the Microsoft Identity Web cookie policy
app.UseCookiePolicy();
app.UseRouting();
// Add the ASP.NET Core authentication service
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
// Add endpoints for Razor pages
endpoints.MapRazorPages();
});
};
4. lépés: A felhasználói felület elemeinek hozzáadása
Felhasználói felület elemeinek hozzáadásához használjon részleges nézetet, amely logikát tartalmaz annak ellenőrzéséhez, hogy a felhasználók bejelentkezve vannak-e. Ha a felhasználók nincsenek bejelentkezve, a részleges nézet megjeleníti a bejelentkezési gombot. Ha be vannak jelentkezve, az megjeleníti a felhasználó megjelenítendő nevét és a kijelentkezés gombot.
Hozzon létre egy új fájlt a _LoginPartial.cshtml fájlban a /Views/Shared mappában a következő kódrészlettel:
@using System.Security.Principal
@if (User.Identity.IsAuthenticated)
{
<ul class="nav navbar-nav navbar-right">
<li class="navbar-text">Hello @User.Identity.Name</li>
<!-- The Account controller is not defined in this project. Instead, it is part of Microsoft.Identity.Web.UI nuget package and
it defines some well known actions such as SignUp/In, SignOut and EditProfile-->
<li class="navbar-btn">
<form method="get" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="EditProfile">
<button type="submit" class="btn btn-primary" style="margin-right:5px">Edit Profile</button>
</form>
</li>
<li class="navbar-btn">
<form method="get" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">
<button type="submit" class="btn btn-primary">Sign Out</button>
</form>
</li>
</ul>
}
else
{
<ul class="nav navbar-nav navbar-right">
<li class="navbar-btn">
<form method="get" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">
<button type="submit" class="btn btn-primary">Sign Up/In</button>
</form>
</li>
</ul>
}
Módosítsa a /Views/Shared_Layout.cshtml fájlt úgy, hogy tartalmazza a hozzáadott _LoginPartial.cshtml fájlt. A _Layout.cshtml fájl egy gyakori elrendezés, amely egységes felületet biztosít a felhasználóknak, miközben lapról lapra haladnak. Az elrendezés tartalmazza a felhasználói felület gyakori elemeit, például az alkalmazás élőfejét és élőlábát.
Megjegyzés
A futó .NET Core-verziótól és attól függően, hogy egy meglévő alkalmazáshoz ad-e be bejelentkezést, a felhasználói felület elemei eltérőek lehetnek. Ha igen, ügyeljen arra, hogy _LoginPartial szerepeljen a lapelrendezés megfelelő helyén.
Nyissa meg a /Views/Shared/_Layout.cshtml fájlt, majd adja hozzá a következő div
elemet.
<div class="navbar-collapse collapse">
...
</div>
Cserélje le ezt az elemet a következő Razor-kódra:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
<li><a asp-area="" asp-controller="Home" asp-action="Claims">Claims</a></li>
</ul>
<partial name="_LoginPartial" />
</div>
Az előző Razor-kód tartalmaz egy hivatkozást a Claims
következő lépésben létrehozandó műveletre.
5. lépés: A jogcímnézet hozzáadása
Az azonosítójogkivonat-jogcímek megtekintéséhez a /Views/Home mappában adja hozzá a Claims.cshtml nézetet .
@using System.Security.Claims
@{
ViewData["Title"] = "Claims";
}
<h2>@ViewData["Title"].</h2>
<table class="table-hover table-condensed table-striped">
<tr>
<th>Claim Type</th>
<th>Claim Value</th>
</tr>
@foreach (Claim claim in User.Claims)
{
<tr>
<td>@claim.Type</td>
<td>@claim.Value</td>
</tr>
}
</table>
Ebben a lépésben hozzáadja azt a Claims
műveletet, amely a Claims.cshtml nézetet a Kezdőlap vezérlőhöz kapcsolja. A Claims
művelet az Authorize
attribútumot használja, amely a hitelesített felhasználók számára korlátozza a művelethez való hozzáférést.
A /Controllers/HomeController.cs vezérlőben adja hozzá a következő műveletet:
[Authorize]
public IActionResult Claims()
{
return View();
}
Az osztály elején adja hozzá a következő using
deklarációt:
using Microsoft.AspNetCore.Authorization;
6. lépés: Az alkalmazásbeállítások hozzáadása
Azure AD B2C identitásszolgáltató beállításai az appsettings.json fájlban vannak tárolva. Nyissa meg az appsettings.json fájlt, majd adja hozzá a következő beállításokat:
"AzureAdB2C": {
"Instance": "https://<your-tenant-name>.b2clogin.com",
"ClientId": "<web-app-application-id>",
"Domain": "<your-b2c-domain>",
"SignedOutCallbackPath": "/signout-oidc",
"SignUpSignInPolicyId": "<your-sign-up-in-policy>"
}
A szükséges információkat a Hitelesítés konfigurálása egy minta webalkalmazásban című cikk ismerteti. Használja a következő beállításokat:
- Példány: Cserélje le a elemet
<your-tenant-name>
a Azure AD B2C-bérlő nevének első részére (példáulhttps://contoso.b2clogin.com
). - Tartomány: Cserélje le a elemet
<your-b2c-domain>
a Azure AD B2C teljes bérlőnevére (példáulcontoso.onmicrosoft.com
). - Ügyfélazonosító: Cserélje le
<web-app-application-id>
a 2. lépésben szereplő alkalmazásazonosítóra. - Szabályzat neve: Cserélje le a elemet
<your-sign-up-in-policy>
az 1. lépésben létrehozott felhasználói folyamatokra.
7. lépés: Az alkalmazás futtatása
- Hozza létre és futtassa a projektet.
- Nyissa meg a következőt:
https://localhost:5001
. - Válassza a Regisztráció/Bejelentkezés lehetőséget.
- Fejezze be a regisztrációt vagy a bejelentkezési folyamatot.
A sikeres hitelesítés után megjelenik a megjelenítendő név a navigációs sávon. Ha meg szeretné tekinteni azokat a jogcímeket, amelyeket a Azure AD B2C-jogkivonat visszatér az alkalmazáshoz, válassza a Jogcímek lehetőséget.
Következő lépések
- Megtudhatja, hogyan szabhatja testre és javíthatja a webalkalmazás Azure AD B2C-hitelesítést.