تهيئة مصادقة JWT Bearer
أعدّوا التحقق من الرموز المميّزة ضمن مسار المعالجة
تهيئة مصادقة JWT Bearer درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.
معالج JWT Bearer
يتحقق ASP.NET Core من صحة JWTs الواردة باستخدام معالج مصادقة JWT Bearer من الحزمة Microsoft.AspNetCore.Authentication.JwtBearer.
يقرأ المعالج الرمز من الترويسة Authorization: Bearer ...، ويتحقق من صحته، ثم ينشئ ClaimsPrincipal.
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearerAddAuthentication
يبدأ التسجيل باستخدام AddAuthentication. وتحدّدون المخطط الافتراضي لكي يعرف إطار العمل المعالج الذي ينبغي استخدامه عند عدم تحديد مخطط.
إن JwtBearerDefaults.AuthenticationScheme هو السلسلة النصية "Bearer".
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer();خيارات AddJwtBearer
يأخذ التحميل الزائد لـ AddJwtBearer مفوّض خيارات تُعدّون فيه كيفية التحقق من صحة الرموز.
الخاصية الأهم هي TokenValidationParameters.
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
// configured below
};
});التحقق من جهة الإصدار والجمهور
اضبطوا ValidateIssuer وValidateAudience للتأكد من أن الرمز صادر عن الجهة الموثوقة الخاصة بكم، وأنه موجه إلى واجهة API الخاصة بكم.
يجب أن تتطابق قيمتا ValidIssuer وValidAudience مع مطالبتي iss وaud في الرمز.
var tvp = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidateAudience = true,
ValidAudience = builder.Configuration["Jwt:Audience"]
};التحقق من مفتاح التوقيع
هذا هو الفحص الأهم أمنيًا: استخدموا ValidateIssuerSigningKey مع IssuerSigningKey. فهذا يؤكد أن التوقيع أُنشئ باستخدام السر الخاص بكم.
بالنسبة إلى التوقيع المتماثل (HS256)، أنشئوا SymmetricSecurityKey من بايتات السر.
var key = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!));
tvp.ValidateIssuerSigningKey = true;
tvp.IssuerSigningKey = key;التحقق من مدة الصلاحية
يرفض ValidateLifetime = true الرموز المنتهية الصلاحية من خلال التحقق من مطالبتي exp وnbf.
تضيف ClockSkew هامشًا للتفاوت بين ساعات الخوادم. والقيمة الافتراضية هي 5 دقائق؛ لذا قلّلوها للرموز قصيرة العمر.
tvp.ValidateLifetime = true;
tvp.ClockSkew = TimeSpan.FromSeconds(30);تجميع الإعدادات
يجمع الإعداد الكامل بأسلوب مناسب للإنتاج جميع معلمات التحقق في مكان واحد.
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidateAudience = true,
ValidAudience = builder.Configuration["Jwt:Audience"],
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!)),
ValidateLifetime = true,
ClockSkew = TimeSpan.FromSeconds(30)
};
});ترتيب البرامج الوسيطة
لا تكفي الإعدادات وحدها. يجب إضافة برمجيتَي المصادقة والتفويض الوسيطتين إلى مسار المعالجة، كما أن الترتيب مهم.
يجب أن تأتي UseAuthentication قبل UseAuthorization.
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();حماية نقاط النهاية
بعد الإعداد، ضعوا [Authorize] على نقاط النهاية، سواء كانت وحدات تحكم، أو استخدموا .RequireAuthorization() مع واجهات API المصغّرة لفرض طلب رمز صالح.
app.MapGet("/me", (ClaimsPrincipal user) =>
new { id = user.FindFirstValue(ClaimTypes.NameIdentifier) })
.RequireAuthorization();استخدام جهة موثوقة
إذا كانت الرموز الخاصة بكم صادرة عن موفر هوية خارجي، مثل Microsoft Entra ID أو Auth0، فاضبطوا Authority بدلًا من استخدام مفتاح ثابت.
بعد ذلك، ينزّل المعالج مفاتيح التوقيع من مستند الاكتشاف الخاص بالموفر تلقائيًا.
.AddJwtBearer(options =>
{
options.Authority = "https://login.myidp.com/";
options.Audience = "my-api";
// Keys are fetched from the OpenID configuration endpoint
});قراءة حالات فشل التحقق
يصدر JWT Bearer أحداثًا يمكنكم ربطها بالتسجيل أو بالاستجابات المخصصة، مثل OnAuthenticationFailed وOnChallenge.
options.Events = new JwtBearerEvents
{
OnAuthenticationFailed = ctx =>
{
logger.LogWarning(ctx.Exception, "JWT validation failed");
return Task.CompletedTask;
}
};اختبار سريع
اختبروا مدى استيعابكم لإعداد مسار المعالجة.
مراجعة
أعددتم مصادقة JWT Bearer:
- يسجّل
AddAuthentication(...).AddJwtBearer(...)المعالج. - تتحكم
TokenValidationParametersفي عمليات التحقق من جهة الإصدار والجمهور ومفتاح التوقيع ومدة الصلاحية. - يجب أن تسبق
UseAuthentication()الدالةUseAuthorization(). - استخدموا
Authorityمع موفري الهوية الخارجيين.
بعد ذلك: كيفية إصدار الرموز الخاصة بكم.
تعلم C# مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 93
- الدروس
- 346
الأسئلة الشائعة
هل درس «تهيئة مصادقة JWT Bearer» مجاني؟
نعم — نص درس «تهيئة مصادقة JWT Bearer» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.
ماذا ستتعلم في «تهيئة مصادقة JWT Bearer»؟
أعدّوا التحقق من الرموز المميّزة ضمن مسار المعالجة تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تهيئة مصادقة JWT Bearer»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بنية JWT والمطالبات
- تهيئة مصادقة JWT Bearer
- إصدار الرموز المميّزة
- الرموز المميّزة للتحديث وانتهاء الصلاحية