הגברת אבטחת API: הגדרת JWT ב-1C-Bitrix

לקוח לאחרונה עם קטלוג של 50,000 פריטים נזקק לאפליקציה הניידת שלו כדי לאמת דרך שירות חיצוני שדרש JWT. לפי RFC 7519, JWT (JSON Web Token) הוא אמצעי קומפקטי ובטוח ל-URL לייצוג טענות. ה-API הסטנדרטי של Bitrix אינו תומך ב-JWT באופן טבעי, ולכן פיתחנו c
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגברת אבטחת API: הגדרת JWT ב-1C-Bitrix
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1460
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1019
  • פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    764
  • פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    809
  • פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1165

לקוח לאחרונה עם קטלוג של 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 שלבים

  1. התקינו את הספרייה: composer require firebase/php-jwt ב-/local/. זה מאפשר אינטגרציית Firebase JWT Bitrix.
  2. צרו middleware: טפלו ב-header Authorization: Bearer. ה-JWT middleware Bitrix הזה יאמת טוקנים.
  3. פתחו את נקודת הקצה להתחברות: אמתו פרטי כניסה, הנפקו טוקני גישה ורענון. זה מהווה את הליבה של הגדרת JWT Bitrix.
  4. שלבו את מנגנון הרענון: חידוש טוקנים ללא אימות מחדש. מנגנון טוקן הרענון Bitrix מבטיח אבטחה.
  5. יישמו רוטציית מפתחות: שינוי סוד דו-שלבי ללא ביטול אימות משתמשים.

יישום אימות 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—קבלו ייעוץ והערכה ראשונית תוך יום. צרו קשר כדי לדון בפרטי הפרויקט שלכם.