חבר OAuth2/OpenID בגרעין
OIDC over OAuth2 היא דרך סטנדרטית להוכיח מיהו המשתמש/לקוח ולתת גישה ל-API קצר ימים. בליבת הפלטפורמה, היא הופכת ליכולת מרכזית: שלט יחיד ללקוחות, מפעילים ושירותים; מינימום זכויות; סיכון מדיד; ציות לתקנות האזוריות והרישוי.
1) מטרות ועקרונות
הפרדה "presploye vs. impress': לגלגל את הקוד בנפרד, לאפשר גישה עם דגלים/מדיניות.
אסימונים קצרי ימים + עדכון מאובטח: לצמצם נזקים מדליפות.
רב-דייר/אזור: כל החפצים מכונים ”דייר/אזור/רישיון”.
מדיניות על גבי אסימונים: פתרונות נעשים על ידי PDP (RBAC/ABAC), PEP על שער/שירותים.
הגנה קישור: TLS1. 2 +, mTLS/DPoP במידת האפשר, COURS/CSRF קפדני.
תצפית וביקורת: ראות אחר זרם, על ידי לקוח, על ידי אזור.
2) זורמים ומתי ליישם אותם
קוד הרשאה + PKCE (SPA/Mobile/Web) - ברירת מחדל לכניסת משתמשים.
אישור התקן (קונסולות/TV/CLI) - כאשר אין דפדפן.
תעודות לקוח (מכונה אל מכונה) - שילוב שירות ללא משתמש.
Token Exchange (RFC 8693, OBO) - השירות פועל בשם המשתמש.
CIBA/Back-Channel (אופציונלי) - דחוף אימות ללא כיוון מחדש.
- פרמטרים של אישור מועברים דרך ערוץ שרת מאובטח.
- אישור מאובטח JWT - פרמטרים בקשה חתומים/מוצפנים.
- תגובת אישור מוגנת JARM (JWT), עמידה בפני זיוף.
- RAR (בקשות הרשאה עשירות) - בקשות עתירות זכויות גישה (הרשאות מפורטות).
3) אסימונים ובולים
סוגים:- טוקן מזהה (OIDC) - שנכנס (להראות רק ללקוח/חזית).
- גישה טוקן (AT) - זכות פעולה (חיים קצרים).
- רענן טוקן (RT) - עדכונים AT; מאוחסן רק בסביבה אמינה.
- ב: 5-15 דקות (web/mobile), 2-5 דקות (שירות לשירות).
- RT: 7-30 (web/mobile) דיסרוטציה + שימוש חוזר בזיהוי.
- תעודת זהות: 5 דקות.
json
{
"iss":"https://auth. core",
"sub":"user_42",
"aud":["wallet","catalog"],
"exp":1730388600,"iat":1730388000,
"tenant":"brand_eu","region":"EE","licence":"EE-A1",
"scp":["wallet:read","bets:place"], // scopes
"sid ": "sess _ abcd, ""amr": [" pwd,"" webauthn"] ,//login methods
"act":{"sub":"svc. catalog" }//if OBO
}
חתימה: ES256/EdDSA, מפתחות ציבוריים - JWKS עם 'ילד' וסבב.
4) מתווה הפעלה והתחברות
Server-Side Session thieve Web (Cookie 'Reside Site = Lax/Strict', 'HttpOnly', 'Secure').
Logout/Back-Channel + Front-Channel Logout (OIDC) - סיום סינכרוני של כל הלקוחות.
Step-Up MFA: עם פעולות רגישות - בדיקה חוזרת ונשנית ('acr' ruping).
ביטול & אינטרוספקציה: ביטול מיידי של RT/AT על ידי תקרית.
5) ביטחון לקוחות
Web/LID: קוד הרשאה + PKCE, ללא מרומז; נוקשה CORS/Content-Security-Policy.
מובייל: דפדפן מערכת (AppAuth), בדיקת שלמות (App Attestation/SymplyCheck), אחסון RT מאובטח.
שולחן עבודה/CLI/TV: Flow התקן; חנות RT בחנויות סודיות של מערכת ההפעלה.
אסימונים של DPoP או mTLS כדי לקשור את AT למכשיר/חיבור.
6) שירות לשירות
שירות MTLS + קצר JWT (aud-scoped), מוציא STS עם KMS/HSM.
זהויות של עומסי עבודה: SPIFE/SPIRE.
מדיניות מצומצמת ורחבה: קהל ספציפי וסקופים במקום "
7) היקף-רישום והסכמה
שם: "משאב: פעולה" - "ארנק: קרא", "ארנק: העברה", "הימורים: מקום", "קיק: מצב. לקרוא '.
הגדרת הראות והרגישות של הסקופים.
מסך הסכמה הורכב מ ־ RAR/Scopes; לשמור היסטוריה הסכמה ולאפשר משוב.
json
{
"type":"wallet. transfer",
"actions":["create"],
"locations":["https://api. core/wallet"],
"datatypes":["payment"],
"resources":[{"wallet_id":"w_123","currency":"EUR","amount_max":1000}]
}
8) אינטגרציה הרשאה (PDP/PEP)
PEP על שער API נותן תוקף AT/DPOP/mTLS, מעשיר את ההקשר (IP/ASN/region/terant), ומגיש בקשה ל-PDP.
PDP (OPA/cedar) מיישם את מדיניות RBAC/ABAC/REBAC ומחזיר את 'LOW/DETRE' עם הסבר ו-TTL.
מטמון הפתרון ב- PEP (TTL 30-120 S) עם נכות לפי אירוע (שינוי תפקיד/חוק).
9) רב ־ דיירים ואזורים
כל האסימונים והפגישות מתויגים ”דייר/אזור/רישיון”; PDP מאמת את ציות המשאבים.
הפרד את JWKS/Keys ורשימות החזרה לפי אזור; דרך שערים אמינים.
מגבלות תושבות נתונים: אינטרוספקטיבה/שלילה מבוצעת באזור המוצא.
10) הגברה פרוטוקול
PAR + JARM - הגן על פרמטרים ותגובות.
Nonce/State/PKCE - לכל הלקוחות הציבוריים.
אישור התקן דחוף (בסיכון גבוה).
JWT Access Tokens עם בולים מינימליים + Opaque אפשרות לאינטגרציה חיצונית באמצעות introspection.
פרקטיקות כמו FAPI: אלגוריתמי חתימה קפדנית, דרישות TLS/redirect_uri/PKCE.
11) שגיאות ומדיניות החזרה
תגובות סטנדרטיות:json
{ "error":"invalid_grant", "error_description":"refresh token reused", "error_code":"RT_REUSE" }
Cultem: "inflid _ request'," inflid _ client "," inflid _ grant', "inflid _ scope", "unformed _ client", "access'," access _ dispended "," באופן זמני _ לא זמין ".
מגבלת קצב לנקודות קצה רגישות ('/token ', '/introspict', '/ביטול '), גיבוי מעריכי.
12) יכולת תצפית וביקורת
מדדים:- 'auth _ code _ possion _ rate', 'pkce _ missing _ rate', 'mfa _ challage/fall _ rate',
- 'token _ issuance _ p95 _ ms',' jwks _ skew _ ms', 'invalid _ token _ rate', 'rt _ reuse _ guided',
- PETIPI: "authz _ p95 _ ms'," dember _ rate _ rate "," dpop _ match _ rate "," mtls _ fall _ rate ".
Second _ id ”, grant _ type”, ”kid',” acr/amr ”,” terant/region ”,” decision ”,” policy _ version ”,” aud', ”scp”, ”sid',” trace _ id'.
ביקורת (בלתי ניתנת לשינוי): הוצאת אסימונים, הסלמת הזכויות, משיכת הסכמים, סיבוב מפתח.
13) ניהול מפתח וסבב
חתימת JWT: KMS/HSM, פרסום JWKS עם ”ילד”.
זמן מפתח כפול: סימן IDP חדש, המבקרים מקבלים ישן + חדש לפני ההחלפה.
סבב רגיל וביטול חירום; ניטור צריכת ”ילד”.
14) ספרי משחק (ספרי הפעלה)
1. פשרת מפתח חתימה
מיד לבטל "ילד", להוציא חדש, נכה בכוח RT/הפעלות, דו "ח ביקורת.
2. מסה ”לא תקפה _ token ”/גידול 401
בדוק יישור השעון, פג תוקפו, מטמון JWKS שבור; הגדל זמנית את הסובלנות של שעון _ סקיו.
3. RT שימוש חוזר
לחסום את ההפעלה ("sid'), להודיע למשתמש, לדרוש צעד למעלה עבור התחברות חדשה, לחקור.
4. טיפת IDP
הפעל מצב ”הרשאה לקריאה בלבד”: שמור על ATTL פעיל עד TTL, הגביל לוגנים חדשים, קנה מידה למטמון האינטרוספקציה.
5. התקפה על '/אסימון &ft
לחזק מסנני rate-limit/bot, לאפשר mTLS/DPoP ללקוחות רגישים, להעביר RTs קרים לקטע נפרד.
15) בדיקה
חוזה: תגלית OIDC, JWKS, הגדרת ספקית OpenID.
אבטחה: PKCE/nunce/state נדרש; Sets שלילי (החלפות 'reprect _ uri', RT).
Interoperability: לקוחות (web/mobile/CLI), אזורי זמן/מקומות שונים.
כאוס: כשל נקוב/JARM, עיכוב JWKS, סובב ”ילד” על לטוס.
E2E: שלב למעלה MFA, OBO (החלפת אסימונים), התחברות (חזית/ערוץ אחורי), ביטול/סיבוב.
16) דוגמאות הגדרות
שרת ההרשאה/OIDC (מקטע YAML):yaml issuer: https://auth. core jwks:
rotation_days: 30 alg: ES256 tokens:
access_ttl: 10m refresh_ttl: 14d id_ttl: 5m policies:
require_pkce: true require_par: true require_jarm: true dpop_enabled: true mfa_step_up:
actions: ["wallet:transfer","payout:initiate"]
tenancy:
include_claims: ["tenant","region","licence"]
jwks_per_region: true
רישום היקף:
yaml scopes:
wallet: read: {desc: "Reading balance"}
wallet: transfer: {desc: "Transfer of funds," sensitive: true, step_up: true}
bets: place: {desc: "Betting"}
kyc:status. read: {desc: "KYC status"}
roles:
player: { allow: [bets:place] }
support: { allow: [wallet:read, kyc:status. read] }
finance: { allow: [wallet:read, wallet:transfer] }
17) רשימת בדיקות לפני המכירה
[ ] PKCE/nunce/state מופעל; PAR/JAR/JARM פעילים.
[ ] AT/RT/TTL; RT סיבוב + שימוש חוזר זיהוי מופעל.
[ ] DPoP או mTLS-מחייב ללקוחות/מבצעים רגישים.
[ ] JWKS c 'ילד "; סיבוב אוטומטי וניטור צריכת מפתח.
[ ] הסכמה/RAR ורישום היקף; שלב למעלה MFA לפעילויות רגישות.
[ ] PDP/PEP משולב, מטמון פתרונות נכות.
[ ] Tokens מכיל 'דייר/אזור/רישיון'; תושבות נצפית.
[ ] יכולת תצפית: מדדים, יומנים, איתור; מתריע ”לא תקף _ token”, ”rt _ reuse”, ”jwks _ skew”.
[ ] ספרי משחק על ביטול/סיבוב/נעילה; כפתור יציאת חירום.
[ ] קבוצה של מבחני E2E/chaos/interop הועברה על הדוכנים.
סיכום
על ידי הטמעת OAuth2/OIDC כיכולת פלטפורמה, אתה מקבל זרימות אישור צפויות, אסימונים מנוהלים, מדיניות גישה אחידה, וסיכון מדיד. AT קצר מוגן על ידי RT, סיבוב מפתח, PAR/JARM/DPoP, הסכמה, ועלייה מדרגה הם פרקטיקות שהופכות את הביטחון לברירת המחדל, ואבולוציה מהירה ונטולת כאבים עבור צוותים ושותפים.