التوثيق والإذن
حلقة AuthN/AuthZ الموثوقة هي نقطة حقيقة واحدة حول هويتك (المصادقة) وما يُسمح لك بفعله (التفويض). في منصة بها العديد من العلامات التجارية والمناطق والتكامل والمتطلبات التنظيمية العالية، يجب أن يكون هذا المحيط معياريًا ويراقبه ويديره السياسيون، وليس «تشتتًا بين الخدمات».
1) المصطلحات والأدوار الأساسية
تحديد الهوية: تحديد الهوية (المستخدم، الخدمة، مقدم الخدمة).
التوثيق (AuthN): إثبات الهوية (كلمة السر، MFA، الشهادة).
التفويض (AuthZ) - يمكن/لا يمكن اتخاذ قرار بشأن السياسة والسياق.
PDP/PEP: Policy Decision Point/Policy Enforcement Point.
IdP: Identity Provider (OIDC).
الموضوع/الموارد/العمل/السياق: من/ماذا/ماذا يفعل/تحت أي شروط.
2) بنية الحلقة الشاملة
[ IdP (OIDC) ]
│ OIDC/OAuth 2. 1 (PKCE, JAR/JARM)
[ Token Service / JWKS / KMS ]
│klyuchi (rotate)
│ JWT/Access/Refresh, mTLS
[API Gateway (PEP)] Solution/Policy ──kesh
│ authN/CSRF/CORS/rate-limit
[ Microservices (PEP)]──PDP (OPA/cedar) ──Policy Store (GitOps)
│audit/metriki
[ Data/Providers ]── service-to-service (mTLS+JWT/Spiffe)
المبادئ: مركزية توليد الرموز والسياسات، والتطبيق المحلي ؛ «الحد الأدنى من الامتيازات» والوفود الصريحة.
3) مصادقة المستخدم (OIDC/OAuth 2. 1)
الأنماط:- رمز الترخيص + PKCE (دائمًا لـ SPA/Mobile).
- SSO: دعم IdP الخارجي (SAML/OIDC) لـ b2b/المشغلين.
- MFA: TOTP/WebAuthn/SMS (WebAuthn وTOTP الموصى بهما ؛ SMS - احتياطي).
- الارتقاء على أساس المخاطر: بالنسبة للإجراءات الحساسة (سحب الأموال، تغيير التفاصيل) يتطلب MFA/pe-Auth.
- Refresh Token Rotation + RT registry with reuse detectored.
- Nonce/State + PKCE، CORS/CSRF صارم لتدفقات المتصفح.
- رموز الوصول قصيرة العمر (5-15 мин) + التحديث الصامت/RT.
- ربط الجهاز (DPoP/mtls-bound tokens) للعمليات الحرجة.
json
{
"iss": "https://auth. example. com",
"sub": "user_9f12",
"aud": ["wallet","catalog"],
"exp": 1730385600,
"iat": 1730384700,
"tenant": "brand_eu",
"region": "EE",
"amr": ["pwd, ""webauthn"] ,//authentication methods
"scp": ["wallet:read","bets:place","kyc:status. read"],
"sid": "sess_a1b2c3", // session id
"acr": "urn: mfa: strong "//warranty level
}
4) مصادقة الخدمة (mTLS، SPIFFE، JWT)
MTLS بين الخدمات + SPIFFE/SPIRE لمعرفات عبء العمل المستقرة.
خدمة JWT بفترة قصيرة (≤5 دقيقة)، موقعة من HSM/KMS ؛ مراجعة الإصدار.
نطاق الجمهور: JWT مناسب فقط لخدمة/نطاق معين.
المناطق الاستئمانية: خدمات من منطقة/مستأجر آخر - مرافق وسياسات منفصلة للمفاتيح العمومية.
5) نماذج الترخيص: RBAC، ABAC، ReBAC
RBAC (الأدوار → الأذونات): بسيط وشفاف (مناسب للوحات الإدارة والمشغلين).
ABAC (خصائص الموضوع/الموارد/السياق): مرن لـ "المستأجر =... والمنطقة =... kyc_tier≥2"
ReBAC (العلاقات): مفيد للمقتنيات المعقدة («من يمتلك علامة تجارية/مجلد/حملة»).
التوصية: هجين - سياق RBAC + الأساسي شروط ABAC + نقطة علاقات ReBAC.
6) السياسات والإنفاذ (PDP/PEP)
PEP على البوابة وفي الخدمات: يسترجع السياق (JWT، التذاكر، IP/ASN، الوقت، المنطقة، طبقة KYC)، يشكل طلبًا إلى PDP.
PDP (على سبيل المثال OPA/cedar) يتلقى:json
{
"subject": { "sub":"user_9f12", "roles":["support"], "kyc":2, "tenant":"brand_eu" },
"action": "bets. place",
"resource": { "game_id":"g_42", "provider":"pr_x" },
"context": { "region":"EE", "ip_asn":"AS12345", "time":"2025-10-31T12:34:56Z" }
}
ويعيد تفسير «السماح/DENY» +.
مخبأ محلول PEP (TTL 30-120 c) يقلل من زمن الوصول ؛ الإعاقة من خلال أحداث «تغيير الأدوار/السياسات».
سياسة مثال (Pseudo-Rego):rego package bets
default allow = false
allow {
input. action == "bets. place"
input. subject. kyc >= 2 input. subject. tenant == input. context. tenant not blocked_region within_limits
}
blocked_region { input. context. region == "NL" }
within_limits { input. context. bet_amount <= data. limits. max_bet[input. subject. tenant] }
7) النطاقات والقرارات
التسمية:- المصدر: الإجراء - "المحفظة: اقرأ"، "المحفظة: النقل"، "الرهانات: المكان"، "kyc: الحالة. يقرأ '.
- للمسؤولين - «المشرف:» في مجال مستقل.
- لمقدمي الخدمة - "المزود: تقرير. اقرأ «،» مقدم الخدمة: الأحداث. دفع '.
مبدأ الامتيازات الدنيا: نحن نحدد فقط النطاقات اللازمة ؛ «التصعيد» (تمديد مؤقت للحقوق) - بالتذكرة ومع TTL.
8) متعدد المستأجرين والمناطق (الإقامة)
تحتوي الرموز على «مستأجر» و «منطقة» و «رخصة» ؛ يقوم PDP بفحص المراسلات مع المورد.
الأدوار/السياسات - مساحات الأسماء لكل مستأجر («الدور: العلامة التجارية _ الاتحاد الأوروبي/الدعم»).
فصل مفاتيح التوقيع وقوائم الإلغاء حسب المنطقة ؛ الطلبات عبر الأقاليم - فقط من خلال بوابات موثوقة.
9) إدارة الجلسات والأجهزة
مخزن جلسة جانب الخادم للويب (ربط الجهاز/المتصفح، دوران المعرف).
مهلة خاملة/مطلقة (على سبيل المثال 30 دقيقة/24 ساعة) ؛ إجراءات حساسة - إعادة أوث/وزارة الخارجية.
قائمة الأجهزة النشطة، «الخروج من الجميع».
الحالات الشاذة: مدخلات متزامنة من مناطق مختلفة، انخفاضات متكررة في MFA - إشارات مخاطر.
10) التفويض والموافقة (الموافقة)
نيابة عن (OBO): تعمل الخدمة نيابة عن المستخدم (رمز بالوكالة مع «قانون فرعي »/« منفصل»).
الموافقة: شاشة صريحة لوصول الشريك إلى البيانات، وسجل الموافقة مع الاستدعاء.
تفويضات الوصول المؤقت: تنتهي تلقائيًا الحقوق الخاصة بساعات العمل/الأيام.
11) المفاتيح والتوقيعات والتناوب
JWKS مع «طفل»، التناوب التلقائي، تخزين المفاتيح الخاصة في KMS/HSM.
الخوارزميات: ES256/EdDSA لـ JWT ؛ TLS 1. 2 +/mTLS.
فترة المفتاح المزدوج: قبل «الأطفال» قبل اكتمال ترقية العميل.
يتذكر RT و Token Introspection الحوادث الخطيرة.
12) أمان طلب العميل
SPA: رمز التفويض + PKCE، ليس «ضمنيًا»، строгий CORS/Content-Security-Policy.
الهاتف المحمول: شهادة التطبيق/فحص الجهاز، تخزين RT آمن، حماية الجذر/كسر السجن.
سطح المكتب: متصفح النظام لتسجيل الدخول (بدون مشاهدات مدمجة للويب)، PKCE.
13) عقود SDK المريحة
تقييم واجهة برمجة التطبيقات (AuthZ):http
POST /authz/evaluate
Authorization: Bearer <access_jwt>
Body: { "action":"bets. place", "resource":{"game_id":"g_42"}, "context":{"bet_amount":5. 0} }
→ 200 { "decision":"ALLOW", "ttlMs":60000, "explain":"kyc>=2, limit ok" }
تبادل الرموز (OBO):
http
POST /oauth/token grant_type=urn:ietf:params:oauth:grant-type:token-exchange subject_token=<user_jwt>&actor_token=<service_jwt>&audience=wallet
14) قابلية الملاحظة ومراجعة الحسابات
المقاييس:- 'authn _ success _ rate '/' mfa _ challenge '/' mfa _ fail _ rate'
- "authz _ p95 _ ms'،" authz _ densed _ rate {reason} "
- "invalid _ token _ rate"، "jwks _ skew _ ms'،" rt _ reuse _ detected "
- شذوذ المدخلات (جهاز جديد، سرعة جغرافية)، نطاقات مشبوهة.
- «من/ماذا/متى/أين/لماذا»، «قرار»، «سياسة _ نسخة»، «رمز _ طفل»، «عميل _ هوية».
- التصدير من أجل الامتثال (المنظم/البائع - مراجعة الحسابات).
15) حماية المحيط والعملاء
البوابة PEP: حد السعر، فحص الروبوت/التوقيع، حماية CSRF، CORS الصارمة، HSTS.
حركة المرور الداخلية: mTLS + خدمة JWT + شبكات محدودة.
خطوط الويب/التراكمات الخارجية: توقيعات الجسم (HMAC/JWS)، النوافذ الزمنية، مكافحة إعادة التشغيل.
16) أخطاء نموذجية
رموز الوصول طويلة العمر → التسريبات.
تدفق OAuth الضمني في SPA.
لا يوجد دوران رئيسي وفترة مفتاح مزدوج.
أدوار متشددة بدلاً من السياسات (من المستحيل مراجعة/شرح القرارات).
مزج المستأجرين/المناطق في «دور» واحد أو «مفتاح».
لا يوجد تكثيف لوزارة الخارجية بشأن الإجراءات الحساسة.
تخفي حلول AuthZ دون تغيير دور الإعاقة.
17) كتب اللعب (كتب التشغيل)
1. تسوية مفتاح توقيع JWT
الإلغاء الفوري لـ «طفل»، نشر JWKS الجديد، إعاقة RT/sessions الإجبارية، تقرير مراجعة الحسابات.
2. Bulk 'invalid _ token'
تحقق من اختلال محاذاة الساعة/العمر، أهمية JWKS، تحطم ذاكرة التخزين المؤقت.
3. شذوذ المدخلات
تمكين زيادة تقييم المخاطر، وتطلب زيادة، وإخطار المستخدم، والحد من المدفوعات مؤقتًا.
4. فشل IdP
قم بالتبديل إلى ذاكرة التخزين المؤقت للجلسة/جهاز الأدوار، وحد من عمليات تسجيل الدخول الجديدة، وعقد جلسات نشطة إلى TTL.
18) قائمة مرجعية قبل البيع
- OIDC/OAuth 2. 1 مع PKCE، قصير AT، دوران RT، جهاز ملزم للعمليات الحرجة.
- MFA (WebAuthn/TOTP) وزيادة الناتج/تغيير التفاصيل/تصعيد الأدوار.
- الخدمة إلى الخدمة: mTLS + SPIFFE، خدمة قصيرة الأجل JWTs.
- سياسات AuthZ (RBAC + ABAC/ReBAC) في PDP المركزي ؛ PEP على البوابة وفي الخدمات.
- مخبأ حلول الإعاقة ؛ غير قابل للتغيير.
- متعدد المستأجرين/المناطق: عزل المفتاح/السياسة/السجل، محاسبة الترخيص.
- JWKS/keys in KMS/HSM, dual-key duration, monitoring 'kid'.
- مرشحات CSRF/CORS/HSTS/Rate-limite/bot على المحيط.
- كتب تشغيل الحوادث، أزرار تشغيل الإلغاء/الدوران/الإغلاق.
- مجموعة الاختبارات: الوحدة (السياسات)، العقد (SDK/التدفقات)، الفوضى (IdP، JWKS)، e2e (تصعيد، OBO، إلغاء).
19) نماذج تكوين مصغرة
سجل النطاق:yaml scopes:
wallet: read: {desc: "Reading balance"}
wallet: transfer: {desc: "Transfer of funds," sensitive: true, step_up: true}
bets: place: {desc: "Bet"}
kyc:status. read: {desc: "KYC status"}
roles:
support:
allow: [wallet:read, kyc:status. read]
finance:
allow: [wallet:read, wallet:transfer]
player:
allow: [bets:place]
سياسة PDP (حالة المنطقة):
yaml deny:
- when: { region: ["NL","BE"] }
actions: ["bets."]
استنتاج
حلقة المصادقة والترخيص ليست مكتبة، ولكنها قدرة على المنصة: رموز قصيرة الأجل ومفاتيح مُدارة، وسياسات مركزية وتطبيقاتها المحلية، ومتعددة العوامل والتكثيف، وعزل صارم للمستأجرين/المناطق، ومراجعة الحسابات والقياس عن بُعد. يجعل هذا التصميم التغييرات آمنة ويمكن تفسيرها للجهة التنظيمية وشفافة للمنتج - ويصبح التوسع حسب السوق والأمر عملية روتينية وليست إنجازًا.