M365Con 2027 – כנס אונליין חינמי · 11–22 Jan 2027 · 120 sessions→ m365con.net

בלוג · Mirko Peters

מדוע מימוש עצמי של אימות וממשק משתמש שובר אפליקציות של M365

By ·

ברוכים השבים לבלוג! אם פעם בהיתם במסך ריק ותהיתם מדוע אפליקציה מותאמת אישית שבניתם עבור Microsoft 365 פתאום מציגה שגיאות אימות שקטות, או מטרידה את צוות הציות והאבטחה, אתם בהחלט לא לבד. בניית תוכנה ארגונית מודרנית קשה מספיק גם בלי לשוב ולהמציא את הגלגל בכל פעם שצריך לאמת משתמש, לחפש ב-Azure Active Directory או להציג ווידג'ט של לוח שנה. ובכל זאת, צוותי פיתוח ברחבי העולם ממשיכים ליפול במלכודת של בניי

Automatically translated with AI from the original post. Read the English original

▶ BLOGWhy DIY Auth and UXBreak M365 AppsM365.FM
Titelbild: Why DIY Auth and UX Break M365 Apps

ברוכים השבים לבלוג! אם פעם בהיתם במסך ריק ותהיתם מדוע אפליקציה מותאמת אישית שבניתם עבור Microsoft 365 פתאום מציגה שגיאות אימות שקטות, או מטרידה את צוות הציות והאבטחה, אתם בהחלט לא לבד. בניית תוכנה ארגונית מודרנית קשה מספיק גם בלי לשוב ולהמציא את הגלגל בכל פעם שצריך לאמת משתמש, לחפש ב-Azure Active Directory או להציג ווידג'ט של לוח שנה. ובכל זאת, צוותי פיתוח ברחבי העולם ממשיכים ליפול במלכודת של בניית זרימות OAuth מותאמות אישית ורכיבי ממשק מקומיים מאפס.

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

סקירה כללית

רוב אפליקציות Microsoft 365 מתפרקות בסופו של דבר בשלוש נקודות אינטגרציה קריטיות: אימות, חיפוש במדריך וחוויית המשתמש בלוח השנה. מעבר לשבירת הפונקציונליות, הן לרוב נראות גם רחוקות מאוד מזהות המותג בזמן שהן עושות זאת. למרבה המזל, יש דרך טובה יותר. ערכת הכלים Microsoft Graph Toolkit מספקת רכיבי React מתוחזקים עם מיתוג של Microsoft, שמתחברים ישירות ל-Microsoft Graph, מטפלים בטוקנים ובזרימות הסכמה מורכבות מהקופסה, ומספקים חוויית משתמש אמינה ותואמת לחלוטין – וכל זאת תוך מתן אפשרות לצוות שלכם להתאים אישית בבטחה כשצריך.

למי זה עוזר

בין אם אתם עמוק בשוחות של הנדסת קצה (front-end) ובין אם אתם מנהלים את הציות והאבטחה הארגונית, הבנה של דפוסי אינטגרציה מודרניים היא קריטית. המדריך הזה מיועד במיוחד עבור:

  • מפתחי קצה (front-end) ומובילי טכנולוגיה שבונים אפליקציות web המחוברות ל-M365
  • צוותי מוצר שזקוקים לאימות ולתכונות מדריך מהירות ותואמות ציות, בלי לנפח את מחזורי הספרינט שלהם
  • בעלי אבטחה וציות שנמאס להם לנהל מימושי OAuth מותאמים אישית מסוכנים וסטייה שרירותית בממשק המשתמש

מדוע מימוש עצמי שובר (ומסכן ציות)

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

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

מה Graph Toolkit נותן לכם

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

  • רכיבי React עם מיתוג Microsoft שמתחברים בצורה חלקה ו"פשוט עובדים" עם נתוני Microsoft Graph.
  • אימות וניהול הסכמה מובנים (טוקנים, מחזורי רענון והיקפי הרשאות מדויקים), כאשר MSAL פועל באופן אמין מאחורי הקלעים.
  • מטמון אוטומטי, הגבלת קצב חכמה ומצבי שגיאה סטנדרטיים שמטופלים עבורכם.
  • מראה ותחושה של Fluent UI, ותכונות נגישות מקיפות (ניווט מלא במקלדת, תמיכה בקוראי מסך והתאמה מוכנה לפריסת RTL).
  • נקודות התאמה אישית בטוחות (באמצעות props וחלקי CSS או מחלקות) שמאפשרות לעצב את האפליקציה מבלי לשבור רמזי ציות ואמון קריטיים.

רכיבי ליבה שתשתמשו בהם מהיום הראשון

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

  • Login: חוויית כניסה ויציאה מובנית של Microsoft שמנהלת פרופילי משתמש, טוקנים ואת כל זרימת ההסכמה, מבלי לדרוש קוד OAuth מסובך ומותאם אישית.
  • PeoplePicker: רכיב מהיר עם השהיית חיפוש (debounce) לחיפוש בספריית Azure AD, הכולל תמונות משתמש ואפשרות לבחירה מרובה, ומתוכנן בקפידה כדי להימנע ממגבלות קצב של ה-API ומלכודות של עימוד מורכב.
  • Agenda: אירועי לוח השנה של Outlook מוצגים בצורה נקייה, עם סימנים ויזואליים מוכרים של M365 (כגון סימני חזרתיות, עדכונים בזמן אמת וניהול אזורי זמן), בתמיכה במטמון מקומי חכם.

מתי להשתמש ב-Toolkit ומתי בקוד מותאם אישית

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

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

התחלה מהירה (מסלול ללא סיבוכים)

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

  1. צרו רישום אפליקציה ב-Entra ID בסביבות ה-Dev, ה-Test וה-Prod, הפעילו תמיכה ב-MSAL והעניקו את הרשאות Graph המינימליות לחלוטין הנדרשות.
  2. התקינו וחברו את ספק האימות באפליקציית React שלכם, תוך שילוב של ספק MSAL עם ספק Graph Toolkit.
  3. הוסיפו את הרכיבים המרכזיים לתצוגות שלכם: <Login />, <PeoplePicker /> ו-<Agenda />.
  4. הגדירו היקפים (scopes) מדויקים לכל עמוד (כגון User.Read, Calendars.Read ו-People.Read) ובדקו את התנהגות ההסכמה של המשתמשים.
  5. עצבו את המראה באופן בטוח באמצעות אסימוני עיצוב (theme tokens) וחלקי CSS מאושרים, תוך שמירה על דפוסי הוויזואליה המקוריים של Microsoft.
  6. שחררו גרסת פיילוט לקבוצת משתמשים קטנה ומוגבלת כדי לאסוף משוב חיוני על חוויית המשתמש וביצועים לפני הרחבת ההטמעה.

רשימת בדיקה לפני ייצור (אבטחה ואמינות)

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

  • יישמו היקפי הרשאות מינימליים והפרידו בקפידה בין הרשאות מואצלות על ידי משתמש לבין הרשאות של אפליקציה בלבד.
  • ודאו אחסון מאובטח של כל הסודות והאישורים באמצעות Azure Key Vault.
  • בדקו את הגדרות תוקף האסימונים, תהליכי הרענון והטיפול המסודר ב-backoff לשגיאות HTTP 429 ו-503.
  • בדקו מדיניות גישה מותנית (Conditional Access), כולל דרישות לאימות רב-שלבי ותאימות מכשירים, מול תהליכי העבודה שלכם עם ה-Toolkit.
  • הטמיעו טלמטריה מקיפה שרושמת מזהי בקשות, השהיית בקשות, יחסי פגיעה במטמון ושגיאות Graph נכנסות.
  • בצעו ביקורת נגישות יסודית הכוללת ניווט במקלדת, מבנה landmarks ויחסי ניגודיות צבעים תקינים.
  • בצעו סקירת מותג כדי לוודא שתקני העיצוב של Fluent UI ומעטפת המותג הארגוני שלכם מתיישבים זה עם זה.

הערות על ביצועים

למשתמשים בארגונים אין סבלנות לתוכנה איטית. כדי לשמור על מהירות היישום שלכם:

  • נצלו במלואו רכיבים שמשתמשים בטעינת נתונים עצלה (lazy loading) ובמטמון חכם בצד הלקוח, כדי לשמור על ממשק משתמש מהיר ותגובתי.
  • הימנעו מקריאות API יקרות מסוג N+1 על ידי העדפת רשימות ורכיבים מרובי פריטים מובנים של ה-Toolkit, בכל מקום שניתן.
  • אגדו חיפושי משתמשים בקבוצות בעת העשרת תוצאות החיפוש, ותמיד בצעו עימוד נכון לרשימות ארגוניות ארוכות.

התאמה אישית ללא פגיעה באמון

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

  • השתמשו בפרופס סטנדרטיים של הרכיבים (כגון טווחי תאריכים ומסנני שאילתות) במקום לשכפל ולשנות את קוד המקור של הליבה.
  • עצבו את היישום באמצעות אסימוני העיצוב של Fluent וממשתני CSS, תוך שמירה על דפוסי Microsoft מוכרים שנשארים קלים לזיהוי.
  • הרחיבו פונקציונליות בצורה נקייה באמצעות hooks של אירועים מובנים (כגון onSelect או onSignIn) כדי להפעיל את תהליכי העבודה הבאים בבטחה.

מלכודות נפוצות (ותיקונים)

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

  • "עובד מקומית, נכשל בייצור": בדרך כלל נגרם מאי-התאמה ב-redirect URI או ב-scopes. בדקו שוב את הגדרות רישום האפליקציה בפורטל Azure.
  • חיפוש אנשים מציג תוצאות ריקות: בדרך כלל נגרם מהיעדר ההרשאות People.Read או User.ReadBasic.All, או ממגבלות נראות מחמירות בספרייה.
  • וידג'ט היומן נשאר ריק: בדקו אם ניתנה הסכמה מפורשת ל-Calendars.Read, או אם סוג תיבת הדואר של המשתמש אינו נתמך.
  • בקשות התחברות אינסופיות: לרוב נגרמות כתוצאה מחסימת עוגיות של צד שלישי או מבקרות סשן מחמירות ב-Conditional Access. בדקו בחלון גלישה פרטית ועברו על מדיניות ה-CA שלכם.

רעיונות ל-KPI להוכחת ההצלחה

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

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

מסלול מעבר (החלפת הרכיבים המסוכנים ביותר קודם)

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

  1. החליפו את יישום ה-OAuth המותאם אישית והשביר שלכם ברכיב Login הסטנדרטי.
  2. החליפו את לוגיקת החיפוש המותאמת והמוגבלת בקצב בספריה ברכיב PeoplePicker האיתן.
  3. שדרגו את וידג'ט היומן הידני לשימוש ברכיב Agenda המוכן מראש.
  4. הוסיפו יכולות משניות כמו Files, Tasks ומחווני Presence בהתאם לצרכי מפת הדרכים של המוצר.

סיכום

הפסיקו לבזבז שעות הנדסה יקרות על בניית Microsoft מחדש מאפס. שימוש בכלים כמו Microsoft Graph Toolkit מעניק לכם רכיבי בניין מאובטחים של M365 שמתאימים למותג, ומשתמשי הארגון נותנים בהם אמון מלכתחילה, ומבקרי אבטחה מקבלים אותם בברכה. כך צוות הפיתוח יכול להתמקד בפיצ'רים הייחודיים של המוצר ובלוגיקה העסקית שבאמת מבדלת אתכם מהמתחרים.

כדי להעמיק עוד בנושא ולשמוע מהשטח אסטרטגיות יישום מעשיות, הקשיבו לפרק הפודקאסט הנלווה שלנו: Build Consistent M365 Apps with Microsoft Graph Toolkit.

Entities in this article

Microsoft Graph Microsoft Entra ID Compliance React Caching Microsoft Microsoft 365 Application registration Conditional Access Fluent UI

Related articles

RSS