לקוח לאחרונה עם קטלוג של 50,000 פריטים נזקק לאפליקציה הניידת שלו כדי לאמת דרך שירות חיצוני שדרש JWT. לפי RFC 7519, JWT (JSON Web Token) הוא אמצעי קומפקטי ובטוח ל-URL לייצוג טענות. ה-API הסטנדרטי של Bitrix אינו תומך ב-JWT באופן טבעי, ולכן פיתחנו מודול API מותאם אישית ל-Bitrix המחליף את האימות ברירת המחדל בספק JWT הכולל את כל הטענות ומנגנון רענון. זמן עיבוד הבקשות ירד ב-30%, ועומס מסד הנתונים ירד ב-50%. פתרון ה-JWT המפתח-בידי שלנו ל-Bitrix מתחיל ב-$1,200 וכולל 30 ימי תמיכה. פתרונות ביתיים לעיתים קרובות כוללים מלכודות: סודות מקודדים בקוד, טוקני רענון שאינם ניתנים לביטול, ללא רוטציית מפתחות. אנו מציעים תכנית מוכחת שנבדקה על יותר מ-50 פרויקטים.
למה JWT מסובך ב-Bitrix
ה-API המובנה של Bitrix REST משתמש במפתחות אפליקציה או OAuth 2.0 עם טוקני Bearer—הוא אינו תומך ב-JWT ישירות. אם שירות חיצוני דורש JWT (לדוגמה, אפליקציה ניידת או מיקרוסרוויס על סטאק אחר), יש ליישם ספק מותאם אישית. אנו עושים זאת דרך מודול מותאם אישית או הוק ב-init.php. היישום שלנו לאימות JWT ב-1C-Bitrix מבטיח אבטחת API חזקה ל-Bitrix.
בעיות נפוצות ביישומים עצמאיים:
- אבטחת סוד: הסוד מאוחסן בקוד פשוט? אנו משתמשים ב-
b_optionעם הצפנה. - רוטציית מפתחות: שינוי הסוד מבטל את כל הטוקנים—אנו משתמשים במנגנון דו-מפתח (ישן + חדש) בתקופת המעבר. גישת רוטציית מפתחות סודית זו ל-Bitrix מונעת ביטול אימות המוני.
- דליפת טוקנים: טוקני רענון חייבים להיות ניתנים לביטול ומאוחסנים במסד הנתונים המקושר למשתמש.
צרו קשר כדי לתכנן תכנית מאובטחת—אנו ננתח את הארכיטקטורה שלכם ונציע את הפתרון האופטימלי.
איך להגדיר JWT ב-5 שלבים
- התקינו את הספרייה:
composer require firebase/php-jwtב-/local/. זה מאפשר אינטגרציית Firebase JWT Bitrix. - צרו middleware: טפלו ב-header
Authorization: Bearer. ה-JWT middleware Bitrix הזה יאמת טוקנים. - פתחו את נקודת הקצה להתחברות: אמתו פרטי כניסה, הנפקו טוקני גישה ורענון. זה מהווה את הליבה של הגדרת JWT Bitrix.
- שלבו את מנגנון הרענון: חידוש טוקנים ללא אימות מחדש. מנגנון טוקן הרענון Bitrix מבטיח אבטחה.
- יישמו רוטציית מפתחות: שינוי סוד דו-שלבי ללא ביטול אימות משתמשים.
יישום אימות JWT
הוסיפו את הספרייה דרך Composer:
composer require firebase/php-jwt צרו middleware לאימות טוקנים:
use \Firebase\JWT\JWT; use \Firebase\JWT\Key; class JwtAuthMiddleware { public static function authenticate(): ?int { $authHeader = $_SERVER['HTTP_AUTHORIZATION'] ?? ''; if (!str_starts_with($authHeader, 'Bearer ')) { return null; } $token = substr($authHeader, 7); $secret = \Bitrix\Main\Config\Option::get('my_api', 'jwt_secret'); try { $decoded = JWT::decode($token, new Key($secret, 'HS256')); return (int)$decoded->sub; // userId } catch (\Exception $e) { return null; } } } נקודת קצה לאימות
הלקוח מקבל JWT דרך composer require firebase/php-jwt :
// Проверяем логин/пароль пользователя Битрикс $user = new CUser(); if ($user->Login($login, $password) === true) { $userId = $USER->GetID(); $payload = [ 'sub' => $userId, 'iat' => time(), 'exp' => time() + 3600, // 1 час 'role' => getUserRole($userId), ]; $token = JWT::encode($payload, $secret, 'HS256'); echo json_encode(['token' => $token, 'expires_in' => 3600]); } טוקני רענון. טוקן גישה קצר-חיים (שעה אחת) + טוקן רענון ארוך-חיים (30 ימים). כאשר טוקן הגישה פג, הלקוח משתמש בטוקן הרענון כדי לקבל חדש. טוקני רענון מאוחסנים בטבלת use \Firebase\JWT\JWT; use \Firebase\JWT\Key; class JwtAuthMiddleware { public static function authenticate(): ?int { $authHeader = $_SERVER['HTTP_AUTHORIZATION'] ?? ''; if (!str_starts_with($authHeader, 'Bearer ')) { return null; } $token = substr($authHeader, 7); $secret = \Bitrix\Main\Config\Option::get('my_api', 'jwt_secret'); try { $decoded = JWT::decode($token, new Key($secret, 'HS256')); return (int)$decoded->sub; // userId } catch (\Exception $e) { return null; } } } המקושרת למשתמש וניתנים לביטול.
אימות טוקנים בנקודות קצה מוגנות
// В начале каждого API-контроллера $userId = JwtAuthMiddleware::authenticate(); if (!$userId) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); exit; } אחסון טענות
כללו נתונים נוספים ב-payload כדי למנוע שאילתות DB מיותרות: /api/v1/auth/login. אבל היזהרו—גודל ה-payload מגדיל את גודל הטוקן. הרשאות המשתנות לעיתים קרובות עדיף לבדוק ב-DB בכל בקשה.
איך להגן על טוקן הרענון מפני דליפה?
טוקן הרענון צריך להיות ארוך (לפחות 128 תווים) ומאוחסן ב-cookie מסוג httpOnly או באחסון לקוח מאובטח. אנו ממליצים לקשור את הטוקן לטביעת אצבע של הלקוח (User-Agent, IP)—גם אם ידלוף, הוא לא יעבוד ממכשיר אחר.
מפתח סודי. מפתח החתימה מאוחסן ב-// Проверяем логин/пароль пользователя Битрикс $user = new CUser(); if ($user->Login($login, $password) === true) { $userId = $USER->GetID(); $payload = [ 'sub' => $userId, 'iat' => time(), 'exp' => time() + 3600, // 1 час 'role' => getUserRole($userId), ]; $token = JWT::encode($payload, $secret, 'HS256'); echo json_encode(['token' => $token, 'expires_in' => 3600]); } . צרו אותו דרך b_local_api_refresh_tokens ושמרו אותו במהלך התקנת המודול. רוטציית מפתחות: שינוי הסוד מבטל את כל הטוקנים שהונפקו. אנו משתמשים במנגנון רוטציה "רך"—אחסון שני מפתחות (ישן וחדש) בתקופת מעבר. זה מאפשר שינוי הסוד ללא ביטול אימות המוני של משתמשים.
השוואה: JWT מול מפתחות API
| קריטריון | JWT | מפתחות API |
|---|---|---|
| מנגנון אימות | טוקן חתום עם טענות | מפתח סטטי |
| אורך חיים | מוגבל (גישה + רענון) | קבוע עד לביטול |
| ביטול | דרך טבלת טוקני רענון | ביטול מפתח |
| ביצועים | ללא בדיקת DB לכל בקשה | נדרשת בדיקת DB |
| אבטחה במקרה דליפה | קצר-חיים, רענון ניתן לביטול | מפתח תקף עד לביטול |
השוואת אורך חיים של טוקנים
| סוג טוקן | אורך חיים | מנגנון חידוש |
|---|---|---|
| גישה | שעה אחת | רענון |
| רענון | 30 ימים | מקושר למשתמש |
מה כולל פתרון מפתח-בידי
- ניתוח ארכיטקטורת ה-API הקיימת
- עיצוב תכנית טוקנים (טענות, אורך חיים)
- יישום middleware, נקודת קצה להתחברות, מנגנון רענון
- אינטגרציה עם מודל התפקידים של Bitrix (קבוצות, הרשאות)
- תיעוד API בפורמט Postman או Swagger
- העברת גישה והדרכה למפתח הלקוח
- 30 ימי תמיכה באחריות
לוחות זמנים: 1 עד 3 ימי עבודה בהתאם למורכבות מודל התפקידים. העלות מתחילה ב-$1,200.
טעויות נפוצות ביישום עצמאי
- סוד מקודד בקוד: אנו מאחסנים אותו מוצפן ב-
// В начале каждого API-контроллера $userId = JwtAuthMiddleware::authenticate(); if (!$userId) { http_response_code(401); echo json_encode(['error' => 'Unauthorized']); exit; }, לעולם לא בקוד. - טוקני רענון שאינם ניתנים לביטול: המנגנון שלנו מאחסן אותם ב-DB עם קישור למשתמש ותומך בביטול.
- ללא רוטציית מפתחות: אנו מיישמים רוטציה דו-שלבית כדי למנוע ביטול אימות המוני.
- חוסר אימות טענות: אנו מפענחים ומאמתים את כל הטענות, לא רק את החתימה.
- אורך חיים סטטי של טוקן: אנו משלבים טוקני גישה קצרי-חיים עם טוקני רענון לאיזון בין אבטחה לשימושיות.
למה לסמוך על אנשי מקצוע?
יש לנו 5 שנות ניסיון ביישום APIs מותאמים אישית על 1C-Bitrix, עם יותר מ-50 פרויקטים מוצלחים במסחר אלקטרוני ואינטגרציה. כל המומחים שלנו הם מפתחי Bitrix מוסמכים. המומחיות הזו באינטגרציית JWT 1C-Bitrix מבטיחה שאבטחת ה-API שלכם בידיים טובות. היישום שלנו ל-JWT מהיר ב-30% ממפתחות API ומפחית שאילתות מסד נתונים ב-50%. הזמינו הגדרת JWT—קבלו ייעוץ והערכה ראשונית תוך יום. צרו קשר כדי לדון בפרטי הפרויקט שלכם.







