تكرار السؤال: …
الإجابة المختصرة
بتفعيل التحقق الصارم من التوقيع (ValidateIssuerSigningKey)، والنطاق (ValidateIssuer)، والجمهور المستهدف (ValidateAudience)، وتعيين ClockSkew لصفر.
الشرح
حزمة JwtBearer توفر التحقق التلقائي من التوكن عبر Middleware. الأمان الصارم يتطلب تعيين ValidateLifetime: true وتخفيض ClockSkew الافتراضي (وهو 5 دقائق) إلى TimeSpan.Zero لمنع قبول التوكن بعد لحظة انتهاء صلاحيته الفعلية، وتحديد ValidateIssuer و ValidateAudience بدقة لمنع استخدام توكن مصدر لنظام آخر في نظامك.
مثال بالكود
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options => {
options.TokenValidationParameters = new TokenValidationParameters {
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key)),
ValidateIssuer = true,
ValidIssuer = "https://my-auth.com",
ValidateAudience = true,
ValidAudience = "my-api",
ValidateLifetime = true,
ClockSkew = TimeSpan.Zero // إلغاء مهلة السماح الإضافية
};
});أخطاء شائعة
- ترك ClockSkew بالقيمة الافتراضية (5 دقائق) في أنظمة تتطلب إبطالاً دقيقاً وسريعاً لصلاحية الجلسات.