מודול התחברות ורישום מותאם אישית עבור 1C-Bitrix
אנחנו צוות עם ניסיון של למעלה מ-10 שנים בפיתוח Bitrix, וביצענו יותר מ-50 פרויקטים של התאמת התחברות. אנו נתקלים לעיתים קרובות בבקשות שחורגות מהרכיב הסטנדרטי bitrix:system.auth.form. עסקים דורשים התחברות עם מספר טלפון ו-OTP, התחברות דרך Gosuslugi (ESIA), אימות דו-שלבי, כניסה יחידה למספר אתרים (SSO), ושדות רישום מותאמים אישית עם אימות. עלות פיתוח מודול התחברות תלויה במערך התכונות, אבל תמיד אפשר לפנות לקבלת הערכת פרויקט. אנו מיישמים את המודול תוך 1–10 שבועות. רוצים לדעת יותר? צרו קשר לייעוץ.
מדוע הרכיב הסטנדרטי להתחברות אינו מספיק
הרכיב הסטנדרטי מטפל במשימות בסיסיות אך אינו תומך באימות OTP, אינטגרציית ESIA, 2FA גמיש או SSO. פרויקטים אמיתיים דורשים תרחישים מותאמים אישית: רישום חברה עם אימות INN, קישור רך לרשתות חברתיות, מכסות ניסיונות התחברות. פיתוח מודול משלך נותן שליטה מלאה בלוגיקה ובאבטחה. החיסכון בעמלות רישוי בעת שימוש במודול מותאם אישית יכול להגיע ל-50% בשנה.
כיצד פועלת ההתחברות ב-Bitrix
Bitrix מספקת מספר נקודות הרחבה למערכת ההתחברות. סיסמה חד-פעמית (OTP) היא מנגנון מפתח לאישור מספר טלפון.
התחברות חברתית מיושמת דרך המודול socialservices. ספקים מורחבים באמצעות מחלקה שיורשת \Bitrix\SocialServices\Base. עבור ספקים לא סטנדרטיים (Telegram, Gosuslugi), נוצרת מחלקה מותאמת אישית. ראו תיעוד Bitrix על שירותים חברתיים לפרטים.
אימות טוקן/מפתח API — דרך מטפל האירועים OnBeforeUserLogin או middleware ב-OnPageStart.
מודל אירועים: אירועים מרכזיים להרחבת התחברות:
-
OnBeforeUserLogin— לפני התחברות (יכול לחסום) -
OnAfterUserLogin— לאחר התחברות מוצלחת -
OnUserLoginAttempt— עבור כל ניסיון (רישום, הגבלת קצב) -
OnBeforeUserRegister— לפני רישום -
OnAfterUserRegister— לאחר רישום מוצלח
כיצד ליישם התחברות עם מספר טלפון ו-OTP
הבקשה הנפוצה ביותר. תהליך עבודה:
- המשתמש מזין מספר טלפון.
- השרת יוצר קוד OTP (6 ספרות), שומר אותו בסשן או בקאש עם TTL של 5 דקות.
- שולח SMS דרך ספק (SBOL, Infobip, SMS.ru).
- המשתמש מזין את הקוד.
- השרת מאמת את הקוד, מוצא את המשתמש לפי שדה
UF_PHONEאוPERSONAL_PHONE, ומתחבר דרךCUser::Authorize($userId).
// Верификация OTP и авторизация
public function verifyOtp(string $phone, string $code): bool
{
$session = Application::getInstance()->getSession();
$stored = $session->get('otp_' . md5($phone));
if (!$stored || $stored['code'] !== $code || $stored['expires'] < time()) {
return false;
}
$session->delete('otp_' . md5($phone));
// Найти пользователя по телефону
$user = UserTable::getRow([
'filter' => ['=PERSONAL_PHONE' => $phone, '=ACTIVE' => 'Y'],
'select' => ['ID'],
]);
if ($user) {
CUser::Authorize($user['ID']);
return true;
}
// Авторегистрация если нужно
return $this->autoRegister($phone);
} שיקולי אבטחה נוספים
חשוב להגדיר הגבלת קצב: לא יותר מ-3 ניסיונות OTP לכל IP תוך 10 דקות. השתמשו ב-CAPTCHA לאחר 2 ניסיונות כושלים.אינטגרציה עם Gosuslugi (ESIA)
התחברות דרך Gosuslugi משתמשת ב-ESIA (מערכת זיהוי ואימות אחידה) עם פרוטוקול OAuth 2.0 + OpenID Connect. מאפיינים:
- נדרשת רישום של מערכת המידע במרשם משרד הפיתוח הדיגיטלי.
- נדרשת חתימה PKCS#7/GOST-R על בקשות (Cryptopro או OpenSSL עם אלגוריתמים רוסיים).
- סביבת הבדיקה של ESIA זמינה בכתובת URL נפרדת.
האינטגרציה מיושמת כספק אימות שיורש // Верификация OTP и авторизация public function verifyOtp(string $phone, string $code): bool { $session = Application::getInstance()->getSession(); $stored = $session->get('otp_' . md5($phone)); if (!$stored || $stored['code'] !== $code || $stored['expires'] < time()) { return false; } $session->delete('otp_' . md5($phone)); // Найти пользователя по телефону $user = UserTable::getRow([ 'filter' => ['=PERSONAL_PHONE' => $phone, '=ACTIVE' => 'Y'], 'select' => ['ID'], ]); if ($user) { CUser::Authorize($user['ID']); return true; } // Авторегистрация если нужно return $this->autoRegister($phone); } או כמטפל נפרד עם URI הפניה.
כניסה יחידה (SSO) למספר אתרים
בתצורת ריבוי אתרים, Bitrix תומכת ב-SSO דרך מנגנון "Session Storage". עבור אתרים בדומיינים שונים, זה מיושם דרך:
- דומיין שניוני משותף (
\Bitrix\SocialServices\Base) עם עוגיות באותו דומיין. - שרת OAuth2 באתר הראשי + לקוחות באתרי משנה.
- טוקני JWT בפרמטרי URL למעבר בין דומיינים.
אימות דו-שלבי (2FA)
סיסמה חד-פעמית מבוססת זמן (TOTP) — אלגוריתם סטנדרטי תואם Google Authenticator, Yandex.Key. 2FA מיושם דרך מטפל .example.ru:
public static function onAfterUserLogin(array &$params): void {
$userId = $params['USER_ID'];
if (self::is2FAEnabled($userId)) {
// Сохранить флаг "требуется 2FA" в сессии
$session = Application::getInstance()->getSession();
$session->set('2fa_required', true);
$session->set('2fa_user_id', $userId);
// Выйти из текущей сессии и перенаправить на страницу ввода кода
CUser::Logout();
LocalRedirect('/auth/2fa/');
}
} שדות רישום מותאמים אישית
שדות טופס הרישום מורחבים דרך שדות משתמש OnAfterUserLogin של המודול public static function onAfterUserLogin(array &$params): void { $userId = $params['USER_ID']; if (self::is2FAEnabled($userId)) { // Сохранить флаг "требуется 2FA" в сессии $session = Application::getInstance()->getSession(); $session->set('2fa_required', true); $session->set('2fa_user_id', $userId); // Выйти из текущей сессии и перенаправить на страницу ввода кода CUser::Logout(); LocalRedirect('/auth/2fa/'); } } . משימות ספציפיות:
- אימות INN/OGRN לרישום חברה — דרך API של שירות המס הפדרלי או dadata.ru.
- אישור דוא"ל דרך קישור ייחודי — מנגנון Bitrix סטנדרטי בתוספת התאמה אישית של דוא"ל.
- העלאת מסמכים במהלך רישום — דרך שדות
UF_*מסוג קובץ עם ניהול תוכן.
השוואת שיטות התחברות
| שיטה | אבטחה | חוויית משתמש | מורכבות יישום |
|---|---|---|---|
| סיסמה סטנדרטית | נמוכה | בינונית | נמוכה |
| OTP דרך SMS | גבוהה | גבוהה | בינונית |
| 2FA (TOTP) | גבוהה מאוד | בינונית | בינונית |
| SSO | גבוהה | גבוהה | גבוהה |
| ESIA | גבוהה מאוד | גבוהה | גבוהה מאוד |
אימות OTP מותאם אישית מפחית את עומס השרת פי 3 בהשוואה להפניות חוזרות לשירותים חיצוניים. מודול מותאם אישית מהיר פי 2–3 לתרחישים ספציפיים מהפתרון הסטנדרטי.
לוחות זמנים אופייניים לפיתוח
| פונקציונליות | לוח זמנים |
|---|---|
| אימות OTP עם טלפון | 1–2 שבועות |
| התחברות חברתית (2–3 ספקים) | 1–2 שבועות |
| 2FA (TOTP) | שבוע אחד |
| התחברות דרך Gosuslugi (ESIA) | 3–5 שבועות |
| SSO למספר אתרים | 2–4 שבועות |
| מודול מקיף (הכל יחד) | 6–10 שבועות |
המודול נבדק לעמידה בדרישות אבטחה: הגנה מפני ניחוש סיסמאות (הגבלת קצב), הגנת CSRF, סיום סשן תקין, אחסון טוקנים בצורה מהופכת.
מה מקבלים כתוצאה
- מודול התחברות ורישום פונקציונלי מלא ומוכן לשימוש.
- קוד מקור עם הערות.
- תיעוד התקנה ותצורה.
- הוראות מנהל לאתר.
- אחריות תמיכה ל-30 יום ממועד המסירה.
צרו קשר להערכת פרויקט — נציע את הפתרון האופטימלי למשימות שלכם. בקשו פיתוח מודול התחברות וקבלו ייעוץ.

