تمكين المصادقة في تطبيق الويب الخاص بك باستخدامAzure AD Microsoft Azure Active Directory B2C
توضح هذه المقالة كيفية إضافة مصادقةMicrosoft Azure Active Directory B2C (Microsoft Azure Active Directory B2C) إلى تطبيق ويب ASP.NET الخاص بك. تعرف على كيفية إنشاء ذاكرة أساسية لتطبيق الويب ASP.NET باستخدام الذاكرة الأساسية الوسيطة لـ ASP.NET التي تستخدم بروتوكول«OpenID Connect».
استخدم هذه المقالة بالاقتران مع تكوين المصادقة في نموذج تطبيق ويب، واستبدل تطبيق الويب النموذجي بتطبيق الويب الخاص بك.
المتطلبات الأساسية
من أجل مراجعة المتطلبات الأساسية وإرشادات التكامل، انظرتكوين المصادقة في نموذج تطبيق ويب.
الخطوة 1: قم بإنشاء مشروع تطبيق الويب
يمكنك استخدام مشروع تطبيق ويب ASP.NET الموجود لإنشاء نمط وعرض ومتحكم (MVC) أو إنشاء مشروع جديد. لإنشاء مشروع جديد، افتح الأمر «shell» ثم أدخل الأمر التالي:
dotnet new mvc -o mywebapp
ينتج عن الأمر السابق ما يلي:
- إنشاء تطبيق ويب MVC جديد.
-
-o mywebapp
تقوم المعلمة بإنشاء دليل يسمى mywebapp مع ملفات مصدر للتطبيق.
الخطوة 2: أضف مكتبات المصادقة
أضف مكتبة الويب لـ Microsoft Identity، وهي مجموعة من مكتبات تعليمات البرمجية الرئيسية لـ ASP.NET التي تبسط إضافة مصادقةMicrosoft Azure Active Directory B2C ودعم التخويل إلى تطبيق الويب الخاص بك. تقوم مكتبة الويب لـ Microsoft Identity بإعداد خط بنية أساسية للمصادقة باستخدام المصادقة المستندة إلى ملفات تعريف الارتباط. حيث تهتم بإرسال واستقبال رسائل مصادقة HTTP، والتحقق من صحة الرمز المميز، واستخراج المطالبات، وأكثر من ذلك.
لإضافة مكتبة Microsoft Identity Web، قم بتثبيت الحزم عن طريق تشغيل الأوامر التالية:
dotnet add package Microsoft.Identity.Web
dotnet add package Microsoft.Identity.Web.UI
الخطوة 3: بدء مكتبات المصادقة
يستخدم البرنامج الوسيط لـ Microsoft Identity Web فئة بدء التشغيل التي تعمل عند بدء تشغيل عملية الاستضافة. في هذه الخطوة، يمكنك إضافة التعليمات البرمجية الضرورية للبدء في مكتبات المصادقة.
افتح Startup.cs ثم أضف using
الإعلانات التالية في بداية الإعلان بالرابط:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
نظرًا إلى أن Microsoft Identity Web يستخدم المصادقة المستندة إلى ملفات تعريف الارتباط لحماية تطبيق الويب الخاص بك، تقوم التعليمات البرمجية التالية بتعيين إعدادات ملف تعريف الارتباط SameSite. بعد ذلك يقرأ AzureAdB2C
إعدادات التطبيق ويبدأ في وحدة تحكم البرنامج الوسيط مع طريقة العرض الخاصة به.
استبدل دالة ConfigureServices(IServiceCollection services)
بأكملها بالشفرة التالية:
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"));
}
التعليمات البرمجية التالية بإضافة نهج ملف تعريف الارتباط واستخدام طراز المصادقة. استبدل دالة Configure
بأكملها بالشفرة التالية:
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: أضف عناصر واجهة المستخدم
لإضافة عناصر واجهة المستخدم، استخدم طريقة عرض جزئية تحتوي على منطق للتحقق من معرفة ما إذا كان المستخدمون قد سجلوا الدخول أم لا. إذا لم يقم المستخدمون بتسجيل الدخول، فإن العرض الجزئي يعرض زر «تسجيل الدخول». إذا تم تسجيل الدخول، فإنه يعرض اسم العرض الخاص بالمستخدم وزر «تسجيل الخروج».
أنشئ ملفاً جديداً، _LoginPartial.cshtml، داخل المجلد /Views/Shared باستخدام القصاصة البرمجية التالية:
@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>
}
تعديل ملف /Views/Shared_Layout.cshtml لتضمين الملف _LoginPartial.cshtml الذي قمت بإضافته. يعتبرملف _Layout.cshtml بمثابة تخطيط شائع يمنح المستخدمين تجربة متناسقة في أثناء الانتقال من صفحة إلى أخرى. يتضمن التخطيط عناصر واجهة مستخدم شائعة، مثل عنوان التطبيق وتذييل الصفحة.
ملاحظة
استنادًا إلى الإصدار .NET Core الذي تقوم بتشغيله وما إذا كنت تقوم بإضافة تسجيل الدخول إلى تطبيق موجود، قد تبدو عناصر واجهة المستخدم مختلفة. إذا كان الأمر كذلك، فتأكد من إدراج _LoginPartial في الموقع المناسب داخل تخطيط الصفحة.
افتح الملف /Views/Shared/_Layout.cshtml، ثم قم بإضافة div
العنصر التالي.
<div class="navbar-collapse collapse">
...
</div>
استبدل هذا العنصر مع تعليمات Razor البرمجية التالية:
<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>
تتضمن تعليمات Razor البرمجية السابقة ارتباطًا Claims
بالعمل الذي ستقوم بإنشائه في الخطوة التالية.
الخطوة 5: أضف طريقة عرض المطالبات
لعرض مطالبات الرمز المميز للمعرف، من خلال المجلد «/Views/Home» إضافة طريقة العرض Claims.cshtml.
@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>
في هذه الخطوة، يمكنك إضافة Claims
الإجراء الذي يربط طريقة العرض Claims.cshtml بوحدة تحكم الصفحة الرئيسية. يستخدم الإجراءClaims
السمةAuthorize
، التي تحد من الوصول إلى الإجراء الخاص بالمستخدمين المصادق عليهم.
في وحدة تحكم /Controllers/HomeController.cs، قم بإضافة الإجراء التالي:
[Authorize]
public IActionResult Claims()
{
return View();
}
في بداية الفئة، أضف الإعلان بالربط using
التالي:
using Microsoft.AspNetCore.Authorization;
الخطوة 6: أضف إعدادات التطبيق
يتم تخزين إعدادات موفر هوية Microsoft Azure Active Directory B2C في ملفappsettings.js. قم بتحرير ملف appSettings.json لإضافة الإعدادات التالية:
"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>"
}
توصف المعلومات المطلوبة في مقالة تكوين المصادقة في نموذج تطبيق ويب. استخدام الإعدادات التالية:
- استبدل:الجزء الأول من
<your-tenant-name>
اسم المستأجرلـ Microsoft Azure Active Directory B2C الخاص بك(على سبيل المثال https://contoso.b2clogin.com
). - استبدل: المجال
<your-b2c-domain>
باسم المستأجر بالكامللـ Microsoft Azure Active Directory B2C الخاص بك (على سبيل المثال،contoso.onmicrosoft.com
). - استبدل معرف العميل:
<web-app-application-id>
بمعرف التطبيق الذي قمت بإنشائه فيالخطوة 2. - استبدل اسم النهج:
<your-sign-up-in-policy>
بتدفقات المستخدم التي قمت بإنشائها في الخطوة 1.
الخطوة 7: قم بتشغيل التطبيق الخاص بك
- إنشاء وتشغيل المشروع.
- انتقل إلى
https://localhost:5001
. - اخترتسجيل الدخول/الدخول.
- أكمل عملية التسجيل أو تسجيل الدخول.
بعد المصادقة بنجاح، ترى اسم العرض في شريط التنقل. لعرض المطالبات التي تقوم Microsoft Azure Active Directory B2C بإرجاعها إلى التطبيق، اختر TodoList.