הגדרת OAuth2 ל-REST API של 1C-Bitrix: אינטגרציה מאובטחת

אינטגרציות עם Bitrix24 ו-1C נשברות בגלל הרשאה שגויה: הסנכרון נעצר, והרשאות דולפות. אנו מגדירים הרשאת OAuth2 באופן מלא — מתכנון הסכימה ועד לתיעוד שהצוות שלכם יבין. אנו מקצרים את זמן תיאום ההרשאות ומסלקים השבתות בהחלפת נתונים.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת OAuth2 ל-REST API של 1C-Bitrix: אינטגרציה מאובטחת
פשוט
~1 יום

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

שאלות נפוצות

אימות OAuth2 ב-1С-Битрикс: היכן האינטגרציה נשברת

אימות OAuth2 ב-Битрикс24 בנוי כהחלפה של קוד בזוג טוקנים: טוקן גישה קצר-מועד וטוקן רענון ארוך-מועד, שבאמצעותו מאריכים את הסשן ללא מעורבות אדם. כל עוד ההחלפה הזו פועלת אוטומטית, האינטגרציה עם 1С ושירותים חיצוניים אינה מורגשת לעסק.

היא נשברת באופן צפוי — בשלושה דברים: היכן מאחסנים את הטוקנים, מי מאריך אותם ומה קורה כאשר ההארכה לא עבדה.

צוואר הבקבוק הראשון — אחסון. את טוקן הגישה שמים בקונפיג, במשתנה סביבה או, וזה גרוע יותר, בקובץ פתוח על הדיסק. הוא חי שעות, אך בעת דליפה הוא מעניק גישה מלאה ל-REST API של Битрикс24 בשם המשתמש: קריאת עסקאות, ייצוא אנשי קשר, כתיבה ל-CRM. שלילת טוקן כזה באופן ידני — משמעה עצירה של האינטגרציה, עד שהמנהל מוצא היכן הוא נחשף.

השני — הנפקה מחדש ידנית של מפתחות. כאשר תוקף הטוקן פג ואין הארכה אוטומטית, הסנכרון עם 1С נעצר: החלפת פריטים, חשבוניות וסטטוסי הזמנות נעצרת בשקט, שגיאות מצטברות בלוגים, ונודע על כך רק לפי אי-התאמה ביתרות. ככל שמחליפים מפתחות ביד לעתים קרובות יותר, כך עולה הסיכוי שהטוקן החדש שוב ימצא במקום לא מאובטח.

השלישי — כשלים בצד 1С. אם הארכת הטוקן והבקשה החוזרת אינן מטופלות, כל עיכוב ברשת הופך לפעולה אבודה: חלק מהמסמכים עוברים, חלק לא, ואת שלמות הנתונים ניתן לשחזר רק באמצעות התאמה.

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

מה נותנת הגדרה נכונה של הרשאת OAuth2

הרשאת OAuth2 שהוגדרה כראוי מסירה מהאינטגרציות את המרכיב השביר ביותר — העברה ידנית ואחסון של מפתחות גישה סטטיים. במקום טוקן ארוך-טווח שמונח בקונפיג ושורד עזיבת עובד, כל אינטגרציה מקבלת טוקן קצר-טווח ומרעננת אותו אוטומטית. זוהי אוטומציה של הרשאה במובן הטהור: המהנדס אינו משתתף בהארכה שגרתית, ולכן גם אינו שוכח ממנה.

ההשפעה המדידה הראשונה — ירידה בכשלי האינטגרציה. טוקן עם תוקף מוגבל ומנגנון רענון תקין מפסיק "להתקלקל" ברגע שבו החלפת הנתונים נחוצה במיוחד: בעת ייצוא הזמנות, סנכרון הקטלוג, החלפה עם מערכת הנה"ח. כשלים שבעבר היה צריך לחפש בלוגים ולהנפיק מפתחות מחדש ידנית, עוברים לקטגוריה של נדירים ולא שגרתיים.

ההשפעה השנייה — מהירות חיבור שירותים חדשים. כאשר סכמת ההרשאה מתועדת ומשמשת מחדש, חיבור חדש ל-REST API אורך שעות ולא ימים: אין צורך להסכים מחדש היכן לאחסן את המפתח, מי רואה אותו וכיצד לבטל גישה. התבנית כבר קיימת, נותר להעניק את ההרשאות הנדרשות לאפליקציה הספציפית.

ההשפעה השלישית — אבטחת האינטגרציות. הגישה ניתנת לפי עקרון ההרשאות המינימליות הנדרשות, וביטול גישה הוא פעולה אחת ולא חיפוש מפתח בכל השרתים. אם קבלן או עובד עוזב, האפליקציה שלו מאבדת גישה מיד, ולא כאשר מישהו ייזכר במפתח הישן.

בסך הכל זה מעביר את האינטגרציות ממצב "עובד כל עוד אף אחד לא נוגע" למתאר צפוי: הגישות ניתנות לניהול, תוקפי הטוקנים ניתנים לשליטה, וכשלי הרשאה מפסיקים להיות סיבת השבתות בהחלפת הנתונים.

דרכי אימות: השוואת גישות

בפועל, ב-Bitrix24 קיימות במקביל שתי דרכים לתת למערכת חיצונית גישה לנתונים: webhook נכנס ויישום OAuth2. webhook הוא כתובת URL מוכנה עם טוקן מוטבע: די להכניס אותו לסקריפט, והבקשות ל-REST API יעברו מיד.

OAuth2 דורש רישום יישום, קבלת זוג מפתחות והחלפת קוד בטוקן עם רענון עוקב באמצעות refresh-טוקן. ההבדל מתבטא לא במהירות ההפעלה, אלא באופן שבו הפתרון מתנהג עם גידול במספר האינטגרציות והחלפת אחראים.

אפשרות מתי מתאימה מגבלות
webhook נכנס סקריפטים פנימיים, ייצוא חד-פעמי, אוטומציה בפורטל אחד ללא משתמשים חיצוניים הטוקן אינו פג ואינו מוגבל בזמן והוא נמצא בגלוי בקוד ובלוגים; ההרשאות נקבעות פעם אחת ואינן מופרדות לפי משתמשים; שלילת גישה — רק מחיקת ה-webhook באופן ידני
OAuth2, יישום שרת אינטגרציות עם מערכות חיצוניות, חילוף בין פורטלים, תרחישים עם גישה בשם עובד מסוים נדרשת כתובת ציבורית לקבלת קוד ההרשאה ואחסון refresh-טוקן; בעת שגיאה ברענון האינטגרציה נעצרת עד לאימות מחדש
OAuth2, יישום מקומי פעולות המוניות בתוך פורטל אחד, שבהן אין צורך במעגל חיצוני הטוקן חי זמן מוגבל, נדרש חילוף בזמן; הצמדות לפורטל מקשה על העברה למעגל אחר

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

OAuth2 מנפיק טוקן במסגרת ההרשאות המבוקשות, ויישום שרת פועל בשם משתמש שעבר אימות — עם פיטורי עובד, הגישה נשללת יחד עם חשבונו, ולא ממשיכה לחיות בסקריפט של מישהו אחר.

גם בתחזוקה ההבדל מורגש. ל-webhook אין במה להחליף סיבוב: החלפת טוקן משמעה עריכת כל המקומות שבהם הוא רשום. OAuth2 מתרענן אוטומטית באמצעות refresh-טוקן, ובמקרה של חשיפה די לשלול את היישום — שאר האינטגרציות ממשיכות לעבוד. עבור תרחישים עם קבלנים חיצוניים וחילוף בין פורטלים זהו האפשרות היחידה שעוברת בדיקת אבטחת מידע.

הבחירה מצטמצמת לכלל פשוט: אוטומציה פנימית חד-פעמית — webhook, חילוף קבוע וגישה בשם משתמש — OAuth2. להלן נבחן כיצד מוגדר אימות OAuth2 ומה יש להסדיר בצד השרת.

שלבי הטמעת OAuth2 בתשתית

הטמעת OAuth2 מתחילה לא בקוד, אלא במיפוי מלאי: אילו אינטגרציות כבר פונות ל-REST API של 1С-Битрикс, היכן מאוחסנים פרטי ההזדהות שלהן, מי ומתי מחליף אותם. בלי תמונה זו, כל סכימת הרשאה נשברת כבר בשירות הראשון שנשכח.

  1. ביקורת אינטגרציות. אוספים רשימה של כל צרכני REST API: שירותים פנימיים, אפליקציות מובייל, קבלנים חיצוניים, סקריפטים להחלפת נתונים עם 1С. עבור כל אחד מתעדים את שיטת ההרשאה הנוכחית, הרשאות הגישה, תדירות הקריאות והבעלים.
  2. תכנון סכימת ההרשאה. מגדירים סוגי grant לכל תרחיש: authorization code עם PKCE לאפליקציות משתמש, client credentials להחלפות שירות. מפרידים את תחומי הגישה לפי סקופים, כדי שאינטגרציה עם 1С לא תקבל הרשאות לניהול משתמשים.
  3. הגדרת האפליקציה ומאגר הסודות. רושמים את האפליקציה, מגדירים redirect URI, זמן חיים של access- ו-refresh-טוקנים. מוציאים את הסודות מהקוד ומהקונפיגים למאגר מאובטח, והגישה אליהם ניתנת לפי תפקידים.
  4. מימוש ומיגרציה. מעבירים את האינטגרציות לזרימה החדשה אחת-אחת, תוך שמירה על תפקוד השיטה הישנה בזמן המעבר. מטפלים בחידוש טוקנים, שלילת גישה ויציאה תקינה במקרה של פגיעה.
  5. בדיקות. בודקים את המחזור המלא: קבלת טוקן, חידוש, פקיעת תוקף, שלילה, סירוב גישה במקרה של סקופ שגוי. בנפרד — תרחישים של אי-זמינות שרת ההרשאה והתנהגות האינטגרציות באותו רגע.
  6. ניטור והגנה. מגדירים תיעוד של הנפקות ושלילות טוקנים, התראות על פעילות חשודה, הגבלת קצב בקשות לנקודות הקצה של ההרשאה.
  7. מסירת תיעוד. מוסרים את סכימת הזרימות, נוהל רוטציה של סודות, הנחיות למפתחים וסדר הפעולות במקרה של תקרית גישה.

לאחר המסירה, צוות הלקוח יכול לחבר אינטגרציות חדשות באופן עצמאי, בלי לשחזר את לוגיקת ההרשאה מאפס. תארו את האינטגרציות הנוכחיות שלכם — נחזור עם הערכה ותוכנית מעבר ל-OAuth2.

ארטיפקטים ותיעוד לאחר ההגדרה

הגדרת הרשאת OAuth2 אינה מסתיימת בעובדה ש"האינטגרציה עובדת", אלא במערכת של ארטיפקטים שלפיהם מהנדס אחר יוכל לתחזק אותה ללא המחבר. להלן מה שמועבר לידיים.

  • תצורת האפליקציה — הפרמטרים של האפליקציה הרשומה ב-1С-Битрикс: מערך ההרשאות המבוקשות, כתובות ההפניה המותרות, זמן החיים של access- ו-refresh-טוקנים, הצמדה לפורטל מסוים או להתקנה מקומית.
  • תרשים האינטגרציה — תרשים של זרימת ההרשאה: מי יוזם את הבקשה, היכן נשמרים client_id והסוד, באיזה רגע מתחדש הטוקן, אילו REST-מתודות נקראות ובאילו הרשאות.
  • מדיניות גישה — מטריצת "תפקיד → scope → מתודות מותרות", כללי אחסון סודות (משתני סביבה או מאגר סודות במקום קבצים במאגר הקוד), הגבלות לפי IP ותדירות פניות.
  • נוהל חידוש טוקנים — מה קורה כאשר ה-access-טוקן פג, כיצד פועל ה-refresh, כיצד המערכת מתנהגת בעת שלילת הרשאות או החלפת סיסמה של משתמש-הבעלים, והיכן נרשמות ניסיונות כושלים.
  • הוראות הפעלה — תיאור שלב-אחר-שלב: כיצד להנפיק מחדש את הסוד, כיצד להוסיף scope חדש, כיצד לשלול גישה מקבלן חיצוני או מעובד שפוטר, ולאן להסתכל בעת שגיאת הרשאה.
  • לוגים וניטור — אילו אירועים נרשמים, היכן הם נשמרים, לפי אילו סימנים התורן מבין שהטוקן הפסיק להתחדש, וכיצד להבחין בין בעיית הרשאות לבעיה ברשת.
  • צ'ק-ליסט קבלה — תרחישים שנבדקו לפני המסירה: כניסה ראשונה, חידוש טוקן מתוכנן, שלילת גישה, התנהגות בעת אי-זמינות הפורטל.

כל מסמך מקושר לתצורה עובדת, ולא נכתב "ברוח הדברים": התרשימים והמדיניות נבדקים מול ההגדרות בפועל לפני ההעברה. אם הצוות שלכם יתחזק את האינטגרציה, המערכת מסירה את התלות באדם אחד — מהנדס חדש נכנס להקשר באמצעות המסמכים, ולא באמצעות התכתבות.

מקרה בוחן: טיפול בכשלי סנכרון עם 1С

מה היה

אצל הלקוח — חברת ייצור עם חנות אינטרנטית על 1С-Битрикс — החלפת מוצרים, מלאי והזמנות עם 1С התנהלה דרך מודול בהתאמה אישית. פרטי הגישה ל-REST API נשמרו ישירות בקונפיגורציית ההחלפה, והסשן הוארך ידנית: בעת החלפת סיסמה ב-1С או עדכון מתוכנן של חשבון המשתמש, ההחלפה נעצרה בשקט.

במהלך הרבעון הצטברו 40+ אירועים, מהם שליש לא הבחינו בהם מיד — המלאי בחלון הראווה לא תאם את המלאי בפועל, מנהלים אישרו הזמנות על מוצר שאינו קיים. זמן ההתאוששות הממוצע — כשלוש שעות, מכיוון שבכל פעם היה צורך לחפש היכן בדיוק נפסקה ההזדהות.

מה שינו

העבירו את האינטגרציה ל-OAuth2: האפליקציה קיבלה הרשאות נפרדות לקריאת קטלוג ולכתיבת הזמנות, הטוקנים נשמרים במאגר מאובטח ולא בקבצי ההחלפה.

הוספה הארכה אוטומטית באמצעות refresh-token עם טיפול בשגיאות — אם 1С מחזירה סירוב, המשימה לא נופלת, אלא חוזרת על הבקשה עם טוקן חדש ורושמת אירוע ביומן. הוגדר ניטור: החלפה ללא מחזור מוצלח לפרק זמן מוגדר מעלה התראה לפני שהנתונים מתפצלים.

מה נהיה

מספר כשלי הסנכרון ירד מ-40+ למקרים בודדים ברבעון, וכמעט כולם — בצד שירותים חיצוניים, ולא בהזדהות. זמן ההתאוששות הממוצע הצטמצם משלוש שעות ל-10-15 דקות: המערכת要么 מתאוששת בעצמה,要么 המהנדס רואה מיד את הסיבה ביומן.

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

במה OAuth2 שונה מ-webhooks ומתי לבחור במה

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

ההבדל מתגלה לא ברגע ההפעלה, אלא בתחזוקה: webhook שדלף יש להחליף כולו — לתקן את התצורה, להנפיק מחדש קישורים, לחפש הי�יכן עוד שמור הכתובת הישנה.

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

ברגע שמופיעה כניסה בשם עובד, הפרדת הרשאות או גישה למדורים סגורים, ה-webhook הופך לצוואר בקבוק: הוא אינו מבחין מי בדיוק יזם את הפעולה.

OAuth2 מוסיף שכבה שמחזירה את ההשקעה בתחזוקה. האפליקציה מקבלת מזהה וסוד, המשתמש מאשר גישה, וההחלפה מתבצעת על טוקן קצר-מועד עם מנגנון refresh — ההארכה מתרחשת באופן בלתי מורגש עבור הלוגיקה העסקית. ההרשאות מונפקות לפי תחומים: האינטגרציה רואה רק את מה שהותר לה, ולא את כל הפורטל. ביטול גישה — פעולה אחת, ללא כניסה לקוד ובנייה מחדש של התצורה.

בפועל הבחירה לעתים רחוקות היא "או-או". החלפות פנימיות בין מערכות, שבהן שני הצדדים נשלטים, נשארות לעתים קרובות על webhooks — קל יותר לנטר אותן. אינטגרציות חיצוניות, אפליקציות מובייל וכל מה שעובד עם נתוני עובדים, מעבירים ל-OAuth2.

בתחזוקה זה נותן תמונה צפויה: רואים איזו אפליקציה כמה בקשות ביצעה, איזו גישה פגה, מה ניתן לנתק ללא סיכון להפיל תרחישים סמוכים.

שאלה נפרדת — מיגרציה. מעבר מ-webhook ל-OAuth2 אינו דורש לכתוב מחדש את הלוגיקה: שכבת ההרשאה משתנה, אך קריאות המתודות נשארות זהות. אנחנו בדרך כלל מרימים את שני הערוצים במקביל, מעבירים תרחישים אחד-אחד ורק לאחר בדיקה מכבים את ה-webhook הישן — כך האינטגרציה אינה מושבתת אף יום.

ספקות טכניים נפוצים בעת ההגדרה

הגדרת הרשאות OAuth2 מעוררת שאלות צפויות בקרב מהנדסים שכבר התמודדו עם אינטגרציות: מה יקרה כאשר הטוקן יפוג ברגע הכי לא מתאים, כמה מהר ניתן לסגור גישה לעובד שפוטר והאם אין דרך להסתפק במפתח סטטי. מפרקים כל תרחיש באופן ממוקד.

תפוגת טוקן

טוקן גישה (Access-token) חי זמן מוגבל, וזה לא באג אלא מנגנון להגבלת הנזק במקרה של דליפה. אפליקציית הלקוח מקבלת טוקן רענון (refresh-token) ומרעננת את הגישה אוטומטית, ללא מעורבות אדם.

אם הרענון לא עבד — האינטגרציה לא "נופלת בשקט", אלא מחזירה שגיאת הרשאה מובנת, שאותה הקוד שלנו מיירט ורושם בלוג. מגדירים את הטיפול כך שהבקשה החוזרת תישלח לאחר רענון הטוקן, ולא תציף את התור בסירובים.

שלילת גישה

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

האם אפשר להסתדר בלי OAuth2

אפשר — למשימות פנימיות, שבהן האפליקציה פועלת בסביבה מהימנה ולא יוצאת מחוץ לפרימטר. אז משתמשים ב-webhooks או בטוקנים נכנסים, שפשוטים יותר בהגדרה, אך לא נותנים הרשאות גרנולריות ולא מפרידים גישה לפי משתמשים.

ברגע שהאינטגרציה יוצאת החוצה או דורשת עבודה בשם עובד ספציפי, OAuth2 הופך לא לבחירה, אלא לדרישת אבטחה.

מה יקרה אם טוקן הרענון הודלף?

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

האם OAuth2 תואם לאינטגרציות ישנות על מפתחות סטטיים?

כן, הם מתקיימים במקביל. את המיגרציה עושים בשלבים: תרחישים חדשים בונים מיד על OAuth2, וישנים מעבירים בהדרגה עם השלמת הפיתוח, בלי לעצור את החלפות הנתונים הנוכחיות.

בואו נדון במשימת האינטגרציה שלכם

כדי לחזור עם הערכה ותוכנית עבודה, ולא עם מילים כלליות, אנחנו צריכים מינימום של נתוני פתיחה לגבי האינטגרציה. הרשאת OAuth2 עוסקת בשאלה מי מקבל גישה לאילו נתונים וכיצד הגישה הזו נשללת, ולכן מתחילים מגבולות המערכת, ולא מבחירת הספרייה.

מה שעוזר לנו להעריך את המשימה במדויק:

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

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

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