הערה: כאשר יש לך יותר משלושה מיקרוסרוויסים, שכפול לוגיקת אימות הטוקן בכל אחד מהם הופך לכאב ראש. כל שירות פונה למסד הנתונים או ל-IdP חיצוני כדי לאמת JWT, מה שמוסיף 20–50 אלפיות שנייה של חביון לכל בקשה ומסבך ביקורות אבטחה. אתה מקבל N+1 בדיקות, שטח תקיפה מוגדל, וביטול טוקן דורש סנכרון בין כל השירותים. אנו מציעים להעביר את האימות וההרשאה לשכבת ה-API Gateway. הבקשה נבדקת פעם אחת, והשירותים מקבלים נתונים מאומתים דרך כותרות HTTP. גישה זו מפחיתה את החביון עד פי חמישה, מפשטת את התחזוקה, ומספקת נקודת ביקורת אחת. היא מקצצת בעלויות תשתית האבטחה בעד 40% באמצעות ריכוזיות. החיסכון הממוצע בעלויות תפעול הוא 35%. הניסיון שלנו: למעלה מ-5 שנים, יותר מ-30 פרויקטים של API Gateway. אנו מספקים שירות סוהר עם אחריות ל-6 חודשים. קבל אימות סוהר—צור קשר לייעוץ.
כיצד API Gateway פותר את בעיית האימות הכפול?
ה-Gateway הופך לנקודת הכניסה היחידה: הלקוח שולח בקשה, ה-Gateway בודק את הטוקן (JWT/OAuth2/API Key), מחלץ את ה-claims, ומעביר אותם לשירותי ה-upstream דרך כותרות. השירותים סומכים לחלוטין על ה-Gateway ואינם מאמתים טוקנים בעצמם. גישה ישירה לשירותים נחסמת על ידי מדיניות רשת. אימות מרכזי מפשט ביקורות אבטחה פי שלושה בהשוואה לתכנית מבוזרת.
Client → [API Gateway: validate JWT, extract claims] → Service ↑ X-User-ID, X-Role, X-Tenant headers איך זה עובד
עבור כל בקשה, ה-Gateway מבצע: אימות חתימה ותפוגה, חילוץ claims, בדיקת בקרת גישה (ACL), והעברת כותרות ל-upstream. האימות אורך פחות מ-5 אלפיות שנייה.
אילו פרוטוקולי אימות נתמכים?
אנו מגדירים את כל התכניות הפופולריות. השוואת זמני הטמעה:
| פרוטוקול | תרחיש | זמן הטמעה |
|---|---|---|
| JWT (RS256/HS256) | APIs פנימיים, מובייל | 2–3 ימים |
| OAuth2 (קוד הרשאה) | לקוחות חיצוניים, אינטגרציות | 3–4 ימים |
| OIDC | כניסה אחידה, ארגוני | 3–5 ימים |
| mTLS | שירות-לשירות, B2B | 4–5 ימים |
לכל פרוטוקול יש ניואנסים משלו—נכסה אותם עם דוגמאות.
אימות JWT ב-Kong
דוגמה לתצורת תוסף JWT ב-Kong
הגדרת אימות JWT בסיסי ב-Kong אורכת מספר דקות:
# Включить JWT плагин
curl -X POST http://localhost:8001/plugins \
-d "name=jwt"
# Создать consumer и credentials
curl -X POST http://localhost:8001/consumers \
-d "username=frontend-app"
curl -X POST http://localhost:8001/consumers/frontend-app/jwt \
-d "algorithm=RS256" \
-d "rsa_public_key=$(cat /keys/public.pem)"הלקוח שולח Client → [API Gateway: validate JWT, extract claims] → Service ↑ X-User-ID, X-Role, X-Tenant headers . Kong מאמת את החתימה והתפוגה—בשגיאה מחזיר 401. ראה תוסף JWT של Kong לפרטים.
OIDC ב-APISIX עם Keycloak
לאינטגרציה עם Keycloak, אנו משתמשים בתוסף openid-connect:
{
"plugins": {
"openid-connect": {
"client_id": "api-gateway",
"client_secret": "secret",
"discovery": "https://keycloak.company.com/realms/myapp/.well-known/openid-configuration",
"scope": "openid profile",
"token_signing_alg_values_expected": ["RS256"],
"set_access_token_header": true,
"set_userinfo_header": true
}
}
}לאחר התצורה, ה-Gateway מאמת אוטומטית את ה-ID token ומעביר את פרטי המשתמש ל-upstream.
כיצד להגדיר RBAC ו-Lambda Authorizer?
כדי להגביל גישה לנקודות קצה לפי תפקיד, אנו משתמשים ב-RBAC; ללוגיקה מורכבת, ב-authorizers מותאמים אישית.
תצורת RBAC על ה-Gateway
ב-Kong, RBAC מיושם דרך תוסף ACL. צור קבוצות והקצה צרכנים:
# ACL плагин для сервиса admin-api
curl -X POST http://localhost:8001/services/admin-api/plugins \
-d "name=acl" \
-d "config.allow[]=admin-group" \
-d "config.hide_groups_header=true"
# Назначить consumer alice в группу admin-group
curl -X POST http://localhost:8001/consumers/alice/acl \
-d "group=admin-group" Lambda Authorizer מותאם אישית
עבור משאבים עם הרשאות גמישות (למשל, גישה מבוססת דיירים), אנו משתמשים ב-AWS Lambda Authorizer. הוא מקבל את ה-JWT, מחלץ claims, ומחזיר מדיניות IAM עם הקשר.
כיצד מועברים Claims ומטופל Refresh Token?
לאחר האימות, ה-Gateway מוסיף כותרות—השירותים מקבלים את הקשר המשתמש. כדי למנוע הפרעות בסשן, אנו מיישמים חידוש טוקן אוטומטי.
-- Kong plugin: извлечение claims из JWT
local jwt_decoder = require "kong.plugins.jwt.jwt_parser"
local function execute(conf)
local token = kong.request.get_header("authorization")
if token then
token = token:gsub("Bearer ", "")
local jwt_obj = jwt_decoder:new(token)
local claims = jwt_obj.claims
kong.service.request.set_header("X-User-ID", claims.sub)
kong.service.request.set_header("X-Tenant-ID", claims.tenant_id)
kong.service.request.set_header("X-User-Role", claims.role)
end
end השוואת ביצועים: עם ובלי Gateway
| תרחיש | חביון ממוצע לבקשה | בדיקות טוקן | ביקורת אבטחה |
|---|---|---|---|
| ללא Gateway | 20–50 אלפיות שנייה לכל שירות | N+1 (כל שירות) | מורכבת, מבוזרת |
| עם Gateway | 5–10 אלפיות שנייה (בדיקה אחת) | 1 | נקודה אחת |
ה-Gateway מפחית את החביון פי 2–5 ומפשט את הביקורת.
תהליך הטמעה שלב-אחר-שלב
- ניתוח ארכיטקטורה—סקירת תכנית האימות הנוכחית, זיהוי פרוטוקולים ו-IdP.
- בחירת Gateway—בחירת פתרון (Kong, APISIX, AWS API Gateway, Traefik, Nginx) לפי עומס ותקציב.
- הגדרת אימות—חיבור JWT/OAuth2/OIDC/mTLS, אינטגרציה עם IdP (Keycloak, Auth0, Okta).
- יישום הרשאה—הגדרת RBAC/ABAC, מדיניות מותאמת אישית דרך Lambda Authorizer.
- בדיקות ופריסה—בדיקת תרחישים (תוחלת חיים של טוקן, חידוש, ביטול) ופריסה ל-staging/production.
מה כלול בהטמעה?
- ניתוח הארכיטקטורה הנוכחית ובחירת תכנית (JWT/OAuth2/OIDC/mTLS).
- תצורת Gateway (Kong, APISIX, AWS API Gateway, Traefik, Nginx).
- אינטגרציה עם ספק זהויות (Keycloak, Auth0, Okta, IdP מותאם אישית).
- העברת claims בכותרות, יישום RBAC/ABAC.
- פיתוח Lambda Authorizer מותאם אישית במידת הצורך.
- תיעוד למפתחים והדרכת צוות.
- תמיכה למשך שבועיים לאחר המסירה.
לוחות זמנים
אימות JWT/OIDC בסיסי עם RBAC: 2 עד 3 ימי עסקים. עם Lambda Authorizer מותאם אישית ו-mTLS: עד 5 ימים. להערכת עלות וזמן אישית לפרויקט שלך, צור קשר. הזמן הטמעה עכשיו—קבל ייעוץ.







