انتقل إلى المحتوى

API — المصادقة والهوية وRBAC

الغرض

المصادقة (تسجيل الدخول، تغيير كلمة المرور)، والملف الشخصي/السجل الخاص بالمستخدم المُسجَّل دخوله (/api/me)، والإدارة الإدارية للمستخدمين والأدوار وكتالوج الصلاحيات.

المصادقة والأدوار

  • نقاط نهاية تسجيل الدخول موسومة بـ [AllowAnonymous]؛ وكل ما عداها يحتاج Bearer JWT.
  • /api/me/* هي [Authorize] فقط — لا سياسة صلاحية؛ يقصر الخادم النطاق على المُستدعي.
  • المستخدمون / الأدوار / الصلاحيات إدارية — مُقيَّدة على admin.users / admin.roles (يحملها SYS_ADMIN؛ وهذه صلاحيات على نطاق admin — انظر مصفوفة RBAC).

نقاط النهاية

Auth — القاعدة /api/auth

Method Path Purpose Gate
POST /api/auth/login اسم المستخدم/كلمة المرور ← JWT لمدة 8 ساعات AllowAnonymous
POST /api/auth/change-password تغيير كلمة المرور الخاصة [Authorize]
POST /api/auth/login-dev تسجيل دخول للتطوير للتيسير AllowAnonymous
POST /api/auth/dev-token سكّ رمز للتطوير AllowAnonymous

Me — القاعدة /api/me

Method Path Purpose
GET /api/me/profile الملف الشخصي الخاص
PATCH /api/me/profile تحديث الملف الشخصي الخاص
GET /api/me/login-history سجل تسجيل الدخول الخاص

Users — القاعدة /api/users · القيد admin.users

Method Path Purpose
GET / POST /api/users سرد / إنشاء مستخدمين
GET / PATCH / DELETE /api/users/{id} قراءة / تحديث / إزالة مستخدم
POST /api/users/{id}/lock · /unlock قفل / فتح قفل حساب
POST /api/users/{id}/reset-password إعادة تعيين كلمة المرور إداريًا
GET /api/users/{id}/login-history سجل تسجيل دخول مستخدم
POST /api/users/{userId}/roles منح دور
DELETE /api/users/{userId}/roles/{userRoleId} إلغاء منح دور

Roles & permissions

Method Path Purpose Gate
GET / POST /api/roles سرد / إنشاء أدوار admin.roles
GET / PATCH / DELETE /api/roles/{id} قراءة / تحديث / حذف دور admin.roles
GET /api/permissions كتالوج الصلاحيات العام admin.roles

الأشكال والأخطاء

يُرجع تسجيل الدخول الـ JWT + الانتهاء (ExpiresAt). تحمل منح الأدوار نطاق قسم اختياريًا + تواريخ سريان (انظر بنية المصادقة وRBAC). ProblemDetails القياسي عند الإخفاق؛ يُرجع قفل الحساب 4xx مع سبب القفل.

المزالق

  • login-dev / dev-token مساعِدان للتطوير — مصادقة تيسيرية، وليست مسارًا إنتاجيًا.
  • حماية الحساب حقيقيةfailed_login_count + lockout_until يقودان القفل.
  • لا رمز تجديد — عند انتهاء الـ 8 ساعات يعيد العميل تسجيل الدخول.
  • كتالوج الصلاحيات عام (لا نطاق BU)؛ والأدوار على نطاق المستأجر.

ذات صلة