GH GambleHub

אימות API: OAuth2, JWT, HMAC

TL; DR

OAuth2/OIDC + JWT הוא תקן ליישומים ושילוב שרתים עם אישור מורכב (סקופים/תפקידים/דיירים), SSO ואסימוני TTL קצרים.
חתימות HMAC הן הבחירה הטובה ביותר עבור קובצי אינטרנט ושותף פשוט מכנה ”שרת” (server ac server) עם אימות דטרמיניסטי והגנה חזקה מפני שידור חוזר.
לחזק את הביטחון: MTLS או DPoP (אסימונים מוגבלים), TTL קצר (5-15 דקות), סיבוב מפתח (JWKS), רענון אסימונים עם סיבוב/אנטי שימוש חוזר, אימות קפדני 'aud/esp/nbf/kid' ומדיניות-as-code על שער הכניסה.

1) מפת פתרון: מה ליישם היכן

תרחישאנחנו ממליצים
לקוחות חיצוניים (Web/iOS/Android), SSOOAuth2/OIDC: קוד הרשאה + PKCE
Server↔server (שילוב מכונה)OAuth2 הרשאות ללקוח (mTLS/DPoP במידת האפשר)
תקין מסלול שיחות שותףOAuth2 או HMAC (אם סקופים הם פשוטים)
Webhooks (PSP/אנטי הונאה/תשלומים)חתימת HMAC + חותמת זמן + אידמפוטנטיות
תנועה פנימית ממזרח למערבMTLS + קיצור JWT (או opaque + introspection)
עסקאות רגישות מאוד (תשלומים)OAuth2 + mTLS/DPoP, אם אפשר קפיצת מדרגה (SCA/3DS)

2) OAuth2/OIDC: זרימות ולקוחות

2. 1 זרימות

קוד אישור + PKCE (Web/Mobile) - מגן על קוד האישור מפני יירוט.
אישורי לקוח: server↔server ללא משתמש; סקופים - מינימום נדרש.
קוד התקן: עבור התקנים ללא דפדפן.
רענן טוקן: ללקוחות אמינים בלבד; לסובב ולאפשר גילוי שימוש חוזר.

2. 2 סוגי לקוח

סודי (שרתים, חב "ד): השתמש ב-mTLS.
Public (SPA/mobile): הסוד אינו ניתן לאחסון * PKCE, DPoP, TTL קצר וסקופים מוגבלים.

3) JWT: מבנה, תזמון, אימות

3. 1 שדות (טענות)

חובה: 'זה', 'תת', 'אוד', 'exp', 'iat', 'nbf', 'jti', 'היקף '/' הרשאות', 'דייר' (אם רב שכירות), 'ילד'.

3. 2 תקופות חיים

אסימון גישה: 5-15 דקות.
רענן אסימון: ימים/שבועות, להסתובב עם כל החלפה; כאשר מגישים מחדש את הישן, אנחנו חוסמים את המפגש.

שעון רזה: סובלנות על בסיס 60 אס

3. 3 JWKS ומפתחות

אחסון מפתחות בקמ "מ/כספת, 'ילד' נדרש.
שני מפתחות פעילים (מתגלגלים), הוצאו מחדש פעם ב-60-90 ימים או בתקרית.
מטמון JWKS בשער 5 דקות, עם נכות אוטומטית.

3. 4 אימות בשער/שירותים

סמן: חתימה, ”audd' (שירותים מאושרים),” iss', ”exp/nbf”, רשימת מנעולים (ביטול).
אל תסמוך על שדות מהגוף מבלי לאמת את החתימה; להתעלם 'alg = אף אחד'.

דוגמה לכותרת בקשה:

Authorization: Bearer <JWT>
X-Trace-Id: <uuid>

4) אסימון קשירה ללקוח: mTLS, DPoP

MTLS (תעודות לקוח): האסימון מונפק ומאושר רק אם קיימת תעודת לקוח.
DPoP (הדגמה של הוכחה-של-החזקה): הלקוח חותם על כל בקשה בהגנה חד-פעמית של מפתח, כנגד שידור חוזר וגניבת סמלים בלקוחות ציבוריים.
עבור מסלולים קריטיים (מוטציות תשלום) - דורש אחד המנגנונים.

5) אישור: סקופים, תפקידים, ABAC

scopes - פעולות מינימום (”תשלומים: לכתוב”, ”תשלומים: מצב: קריאה”).
תפקידים - יחידות לניהול; אל תשתמש בהם ישירות ללא סקופים.
ABAC - תכונות בסימן ("דייר", "קאנטרי", "kyc _ level", "סיכון _ דגלים") * מדיניות על שער/אופ "א.
מדיניות ברמת המסלול/שדה (GraphQL) וברמת הפעלת התחום (REST/gRPC).

6) חתימות HMAC: קובצי אינטרנט ושותפים

6. 1 קונספט

לכל אינטגרציה יש סוד משלה.

כותרת מעל הקו הקנוני: "חותמת זמן + "\n" + "+ "\n" + "\n "+ sha256 (גוף)"

כותרים:

X-Signature: v1=base64(hmac_sha256(secret, canonical_string))
X-Timestamp: 2025-11-03T12:34:56Z
X-Event-Id: 01HF...

חלון זמן: 300 שניות; לדחות בקשות עם פג תוקף 'X-Timestamp'.
Idempotence: Store 'X-Event-ID' on TTL (24H) - ביטול כפילויות.

6. 2 המנהגים הטובים ביותר

סודות בקמ "מ/כספת, מסתובבים כל 90 יום.
עבור לקוחות ציבוריים, HMAC אינו מתאים (ההדלפות הסודיות); תשתמש OAuth2/DPoP.

7) הגנה מפני שידור חוזר, כוח גס ודליפות

Nunce/' jti 'עבור פעולות רגישות; רשימה שחורה של מזהים משומשים.
קצב/מכסות: על ידי מפתח/לקוח/דייר/מסלול; פעולות ”יקרות” הן מכסות נפרדות.
IP/ASN/Geo מאפשרים רשימות לשותפים וחוברות אינטרנט.
התוכן-סוג מאפשר (”application/json”), הגבלת גודל הגוף.
PII מסווה ביומנים; איסור רישום אסימונים/סודות.

8) שגיאות ותשובות (תבנית יחידה) ‏

מבנה שגיאה:
json
{
"error": "invalid_token",
"error_description": "expired",
"trace_id": "4e3f-..."
}
סטטוסים:
  • '401 - אסימון לא תקף (WWW-אותנטי).
  • '403 - זכויות מספיקות (היקף/ABAC).
  • '429 - גבולות/מכסות.
  • GRPC: 'Unauthented '/' Espire _ נדחה '/' משאב _ מותש'.

9) מדיניות מונח וישיבה

גישה רשומה 15 דקות; רענון - סיבוב + שימוש חוזר בזיהוי (recover - session ישן).
Webhooks HMAC: TTL חתימות של 5 דקות; משלוח חוזר עם גיבוי מעריכי.
Session/Key Disputation # כניסה מיידית לרשימת שלילת התפקידים (מטמון על השער, דק '1).

10) יכולת תצפית וביקורת

Correlation by ”trace _ id'/” span _ id'.
מטריצות: שיעור הצלחה אוטומטי, '401/403/429', OIDC/JWKS LATENCY, תדר סיבוב, רענון שימוש חוזר, שיתוף של DPoP/mTLS.
יומן ביקורת: ”מי, מתי, ואיתו 'משנה/דייר/היקף' גרם למה,” שינויים במפתח/סוד, נכשל בחתימות HMAC.

11) הטבעה בשער API

אימות JWT (JWKS cache) ואופ "א/ABAC על השער.
פרופילי MTLS ללקוחות/שותפים מהימנים.
אימות HMAC של האינטרנט על הקצה (לפני השירותים הפנימיים).
מדיניות Rate/Quate, מפסק מעגל על ספק OIDC (מטמון JWK).
דגלי תכונה: ניתוק מהיר של הלקוח/מפתח, שינוי אלגוריתם החתימה.

12) קטעים קטנים

אימות JWT

pseudo jwks = cache. getOrFetch(iss + "/.well-known/jwks. json")
key = jwks[kid]
assert verify_signature(jwt, key)
assert aud in ALLOWED_AUDIENCES and iss in TRUSTED_ISSUERS assert now in [nbf-60s, exp+60s]

בדיקת HMAC webhook

pseudo canonical = timestamp + "\n" + method + "\n" + path + "\n" + sha256(body)
sig = base64(hmac_sha256(secret, canonical))
assert abs(now - timestamp) <= 300 assert not seen(event_id)
assert timingSafeEqual(sig, header["X-Signature"].split("v1=")[1])
markSeen(event_id, ttl=86400)

דוגמה-מדיניות היקף (רעיון אופ "א/רגו)

rego allow {
input. jwt. scope[_] == "payments:write"
input. jwt. tenant == input. route. tenant
}

13) חוברות משחק תקריות

דליפת מפתח פרטית/JWT-חותם: חידוש מפתח, עדכון JWKS, ביטול מיידי של הכחיש הישן ('ילד'), רענון נכות, התחברות כפויה.
החלפה של חוברות אינטרנט: סיבוב של סודות, IP Low-List, הגברה של חלון X-Timestamp, מסירה חוזרת של אירועים שלא נענו.
שידור חוזר/כוח גס: אפשר DPoP/mTLS במסלולים קריטיים, מכסות צרות, בלוקים זמניים על ידי IP/ASN, אפשר רשימת jti '-בלוק.
OUFAGE OIDC: השפלה של אסימונים מקולקלים (חסד), ספק מפסק מעגל חשמלי, הודעת לקוחות.

14) בדיקת יישומים

אימות (מינימום):
[ ] OAuth2: קוד + PKCE (Web/Mobile), אישור לקוח (שרת אל שרת)
[ ] TTL: גישה ל-15 דקות, רענון עם סיבוב ואיתור שימוש חוזר
[ ] JWKS: שני מפתחות פעילים, 'ילד', מטמון 5 דקות
[ ] Webhooks: HMAC v1, ”X-Timestamp”, ”X-Event-ID”, חלון על 300 שניות, אידמפוטנטיות
[ ] מוגבלת: mTLS/DPoP במסלולים קריטיים
[ ] ABAC/OPA: סקופים + דייר/סיכון במדיניות שער
[ ] Rate/Quote Brother429; רשימת הרשאות IP/ASN לשותפים
[ ] ביקורת והתראה (401/403/429, להשתמש מחדש רענון, חתימות HMAC)
פרטיות/רישום:
[ ] אל תרשום אסימונים/סודות/גופי קלפים מלאים
[ ] מסווה PII; תמיכה ב ־ DSAR; חיי המדף של בולי העץ מוגבלים

15) אנטי דפוסים

'alg = אף אחד' או לסמוך אסימון ללא אימות חתימה/JWKS.
אסימוני גישה ארוכים (שעות/יום).
סוד משותף אחד לכל השותפים.
אינטרנט ללא חותמת זמן/אידמפוטנטיות.
רענן אסימונים ללא סיבוב וללא שימוש חוזר בזיהוי.
חוסר אימות ו ”ילד” סיבוב.
שמירת סודות במשתני סביבה ללא KMS/Vault.

16) NFT/SLO (ציוני דרך)

זמינות OIDC/JWKS 99. 95% (מטמון קצה מפחית את התלות).
תוסף אימות JWT בשער 2-5 ms p95.
שגיאות אימות ('401') בקוטר 0. 5% מהתנועה הכוללת (לא כולל רובוטים).
פנקסי אינטרנט חתומים: נתח מאומת בהצלחה ב-99. 9%, עיכוב מסירה ממוצע 3 s.

תקציר

שילוב מנגנונים: OAuth2/OIDC + JWT עבור משתמשים ותסריטי שרת עשירים, HMAC עבור חוברות אינטרנט/שותפים פשוטים, וכן עבור פעולות קריטיות - mTLS/DPoP. שמור על TTLs קצרים, סבבי מפתח (JWKS), מדיניות ABAC/OPA קפדנית, הגן על לולאות מהילוך חוזר ודליפות, אז האימות יהפוך לבלתי צפוי, ניתן לחיזוי ולביטחון ללא פשרות עבור UX וכסף.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.