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

בלוג · Mirko Peters

איך מיישמים אימות App-Only עבור Microsoft Viva API

By ·

אם בילית שעות בניסיון להתמודד עם שגיאות "Unauthorized" או "Forbidden" עקשניות בזמן בניית סקריפטים לתחזוקה אוטומטית עבור Microsoft Viva, אתם לא לבד. יותר מדי פריסות מודרניות של Microsoft 365 נתקעות בשלב הראשוני של "הפעל ותקווה שהמשתמשים יבינו בעצמם". כדי להשיג סקלביליות תפעולית אמיתית, בעלי הפלטפורמה והמנהלים צריכים להתרחק מממשק הניהול ולהיכנס לעומק ל-APIs. עם זאת, הפעלת אוטומציה ללא השגחה דורשת גי

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

▶ BLOGMastering App-OnlyAuthentication for…M365.FM
Titelbild: Mastering App-Only Authentication for Microsoft Viva APIs

אם בילית שעות בניסיון להתמודד עם שגיאות "Unauthorized" או "Forbidden" עקשניות בזמן בניית סקריפטים לתחזוקה אוטומטית עבור Microsoft Viva, אתם לא לבד. יותר מדי פריסות מודרניות של Microsoft 365 נתקעות בשלב הראשוני של "הפעל ותקווה שהמשתמשים יבינו בעצמם". כדי להשיג סקלביליות תפעולית אמיתית, בעלי הפלטפורמה והמנהלים צריכים להתרחק מממשק הניהול ולהיכנס לעומק ל-APIs. עם זאת, הפעלת אוטומציה ללא השגחה דורשת גישה מוקשחת לאימות באמצעות אפליקציה בלבד, טיפול מדויק בבקשות ובניית מבנה נתונים יציב לגוף הבקשה. המדריך הזה ילווה אתכם בהקמת Service Principals מאובטחים עם אישורי תעודה המאוחסנים ב-Azure Key Vault, בבקשת ההיקפים הספציפיים למשאב הנדרשים לסביבה שלכם, ובטיפול בתביעות (claims) של הטוקן כמו מפתח מנוסה.

כדי להעמיק באסטרטגיות הארכיטקטוניות האלה ולשמוע סיפורי יישום מהעולם האמיתי, הקפידו להאזין לפרק הפודקאסט המשלים שלנו, Automate Viva Connections, Topics, Learning, and News. עכשיו, בואו נפרק את ספר ההפעלה המדויק שנדרש כדי לכבוש את מכשולי האוטומציה של Viva שלכם.

פריצת מחסום האימות

נקודת החיכוך הנפוצה ביותר בעת בניית סקריפטים לאוטומציה היא קבלת תגובת "Unauthorized" גם כשאתם בטוחים שפעלתם לפי התיעוד הרשמי. המציאות היא שמערכת האקולוגיה של Microsoft Viva משתרעת על שילוב של Microsoft Graph ונקודות קצה ספציפיות למוצר, וההיקפים (permission scopes) שלהן יכולים להשתנות באופן משמעותי.

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

  • רשמו אפליקציית Entra ID ייעודית שתשמש כ-Service Principal שלכם.
  • העדיפו תמיד אישורי תעודה המאוחסנים ב-Azure Key Vault על פני Client Secrets סטטיים ופגיעים.
  • העניקו רק הרשאות Application הנדרשות. לדוגמה, Viva Topics דורש בדרך כלל את Topics.ReadWrite.All; Viva Learning דורש את LearningContent.ReadWrite.All ואת LearningProvider.ReadWrite.All; ו-Connections או SharePoint News נשענים בעיקר על Sites.ReadWrite.All יחד עם הרשאות לאתרי היעד.
  • ודאו שאישרתם במפורש את ההיקפים המבוקשים כמנהלים (admin consent).
  • טפלו במדיניות גישה מותנית (Conditional Access) על ידי הוצאת ה-Service Principal מהמדיניות, או על ידי יצירת מדיניות ייעודית שמאפשרת בבטחה Service Principals ללא אינטראקציה המגיעים מרשתות האוטומציה המהימנות שלכם.
  • בעת בקשת טוקנים, בקשו את ההיקף /.default במפורש עבור המשאב שאליו אתם מתכוונים לפנות. לעולם אל תשתמשו מחדש בטוקן Graph כללי כדי לפנות לנקודת קצה של משאב מקורי של המוצר.

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

תוכן מותאם אישית: אוטומציה של Viva Topics

כשל נפוץ בעבודה עם Viva Topics הוא קבלת תגובה מוצלחת 201 Created מה-API, ובכל זאת לגלות שאף נושא לא מופיע בממשק המשתמש. זה כמעט תמיד נגרם מחסר בשדות חובה, ממצב פרסום שגוי שנותר במצב טיוטה, או ממטא-דאטה דלה מדי.

ה-payload שלכם חייב לכלול אלמנטים קריטיים כמו כותרת ברורה, תקציר או תיאור מקיף, שמות חלופיים או ראשי תיבות, הפניות אמינות לקבצים, לדפים או לאנשים, מצב מוגדר של "published", ובעלים או מומחים מוקצים שיעניקו לנושא אמינות ארגונית.

כדי להרחיב את התהליך בצורה יעילה, בדקו את מקורות המידע החיצוניים שלכם — כגון ויקי ארגוני, רשימות SharePoint או רישומי פרויקטים — והמירו את הנתונים האלה ל-JSON מובנה. יישמו אסטרטגיית batching עם רמת מקביליות מבוקרת, ותמיד כבדו תגובות הגבלת קצב מסוג HTTP 429 על ידי קריאה לכותרת Retry-After והמתנה לפיה. יישמו אידמפוטנטיות באמצעות upsert של רשומות לפי מפתח חיצוני, כדי למנוע כפילויות, ותמיד בצעו שאילתת אימות לאחר הפרסום כדי לוודא שהנושא אכן עבר את צינור הפרסום.

שיטות עבודה מומלצות תפעוליות לניהול ידע

בעת הרצת משימות פרסום אוטומטיות, רישום לוגים מקיף הוא הכלי החשוב ביותר שלכם. תמיד תעדו את הבקשות הנכנסות לצד מזהי המעקב (correlation IDs) של התגובות המתאימות. יש להתייחס לכל קוד סטטוס מסוג 4xx כבעיית אימות של נתונים או הרשאות, ואילו שגיאות 5xx והגבלות קצב של 429 יש לנתב לתור ייעודי של backoff אקספוננציאלי וניסיונות חוזרים.

ממערכות LMS מבודדות ל-Viva Learning

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

כדי להשיג הטמעה חלקה, מטען ה-learningContent חייב לכלול externalId יציב, כותרת נקייה, תיאור מפורט, webUrl פעיל, thumbnailUrl תקין, משך זמן בפורמט ISO 8601, תגיות או כישורים רלוונטיים, ולוקאל הנכון. המרת ייצואי ה-CSS של מערכת ה-LMS הישנה שלכם ל-JSON קפדני ומאומת אינה ניתנת לוויתור.

צינור ה-batching שלכם — בין אם נכתב ב-PowerShell ובין אם נפרס כ-Azure Function — צריך לייבא את נתוני המקור, לאמת עמודות חובה, לבנות את מטעני ה-JSON עם מנגנוני הגנה מובנים לערכים ריקים, לבצע בקשות POST עם הטוקנים הנכונים, ולהוסיף השהיות מחושבות או שלבי backoff. תמיד תעדו קודי סטטוס HTTP שאינם מצליחים לצד מספרי השורות והסיבות שלהם, כדי לבנות רשימת ניסיון חוזר לתיקון אוטומטי.

אוטומציה של חדשות Viva Connections

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

פוסט חדשות אמין דורש כותרת וסיכום מקושרים, מחבר שהוגדר במפורש, קהל שמועבר כמערך של מזהי קבוצות Microsoft Entra ID, כתובת תמונה מאומתת, קישורים עמוקים שנפתחים ישירות בתוך אפליקציית Teams, וכן עדיפויות ותאריכי תפוגה מוגדרים. יש לוודא שכל שמות המאפיינים משתמשים ב-camelCase תקין ומאומתים לפני השליחה.

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

דפוסים ברמת ייצור

בניית אוטומציה עמידה דורשת אימוץ של דפוסי הנדסה ברמת ארגון. אל תסתמכו לעולם על הרצה ידנית של סקריפטים במחשב מקומי. במקום זאת, בנו, בדקו ופרסו את צינורות האוטומציה שלכם באמצעות GitHub Actions או Azure DevOps. אחסנו את כל הסודות התפעוליים בבטחה בתוך הפניות ל-Azure Key Vault, ולא כקידוד קשיח בתוך הסקריפטים.

תצפיתיות היא קריטית. שלבו את משימות האוטומציה שלכם עם Application Insights או Log Analytics כדי לעקוב אחר הצלחות ריצה, זינוקים בזמני השהייה ואירועי הגבלת קצב (throttling). יישמו אלגוריתמי backoff אקספוננציאלי עם jitter אקראי, כבדו בקפדנות כותרות Retry-After, והשתמשו במפתחות אידמפוטנטיות כדי להבטיח שניסיון חוזר של משימה שנכשלה לעולם לא יוביל ליצירת תוכן כפול.

מלכודות ופתרונות מהירים

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

  • קבלת שגיאות 401 או 403 למרות קוד נקי בדרך כלל אומרת שה-audience של הטוקן אינו תואם למשאב ה-API היעד. תמיד בקשו טוקן חדש המותאם לנקודת הקצה הספציפית שאתם קוראים לה.
  • אם נושא נוצר בהצלחה אך אינו מופיע בממשק המשתמש, בדקו את מאפיין ה-state שלו כדי לוודא שהוא מסומן כמפורסם ולא נשאר במצב טיוטה, וודאו שהמטא-דאטה שלכם אינו דל מדי.
  • תוכן למידה שמועלה ואז נעלם באופן מסתורי נובע בדרך כלל מאי-התאמה בסוג הנתונים או משדות חובה חסרים במטען הסכמה.
  • פוסטים של חדשות ב-Connections שאינם מופיעים לרוב נובעים מכך שמאפיין הקהל מעוצב בצורה שגויה כמחרוזת במקום כמערך, או מקישורי תמונה לא תקינים וסיכומים ארוכים מדי.
  • כשלונות אקראיים שפוגעים במשימות שלכם בקנה מידה גדול הם סימן ברור לכך שאתם חוצים מגבלות קצב. הקטינו את גודל האצוות שלכם והטמיעו שגרות המתנה (backoff) מתאימות.

מדדי KPI להוכחת התוצאות

כדי להצדיק את מאמץ ההנדסה שהושקע באוטומציה של פלטפורמת Microsoft Viva, עליכם לעקוב אחר מדדי ביצוע (KPI) ברורים. מדדו את משך הזמן מרגע יצירת קובץ ה-CSV ועד לפרסומו באוויר. עקבו אחר שיעורי ההצלחה לכל מאה קריאות API בכל יכולת נפרדת, עקבו אחר שיעורי שגיאות ההגבלה 429 ו-5xx לפני ואחרי יישום שגרות ההמתנה, הערכו את כיסוי הנושאים על ידי חישוב אחוז הפרויקטים והראשי התיבות של החברה שיש להם נושאים פעילים ומשודרים, השוו את שלמות קטלוג הלמידה מול נתוני המאסטר של ה-LMS שלכם, ומדדו את מדדי ההעברה של Viva Connections, כולל אחוז הפרסומים שבוצעו בזמן וסך טווח ההגעה לקהל.

התחלה מהירה (השבוע)

אם אתם מוכנים לפעול השבוע, פעלו לפי תוכנית ההטמעה הפשוטה הבאה:

  1. צרו Service Principal ייעודי המגובה באישור, הענקו את מינימום ההרשאות הנדרשות של האפליקציה, והבטיחו הסכמת מנהל מפורשת.
  2. הקימו Azure Function קל משקל או סקריפט אוטומציה מקומי ב-PowerShell, המוגדר למשוך את הסודות שלו בצורה מאובטחת מ-Azure Key Vault.
  3. אוטמטו תהליך עבודה אחד מקצה לקצה – למשל, פרסום אצווה של עשרים וחמישה Viva Topics כולל טיפול בשגיאות, ניסיונות חוזרים ובדיקות לאחר הפרסום.
  4. שלבו רישום יומנים (logging) and בנו לוח בקרה בסיסי לניטור באמצעות Application Insights.
  5. תעדו את ספר ההפעלה התפעולי שלכם, הגדירו את אנשי הקשר לתמיכה, ותזמנו את המשימות האוטומטיות שלכם לפעול ללא השגחה.

על ידי מעבר מהזנה ידנית לאימוץ אוטומציה חזקה של API המגובה באימות מאובטח של אפליקציה בלבד, תוכלו להפוך את סביבת Microsoft Viva שלכם לפלטפורמה ארגונית חיה ותוססת. למעמקים נוספים, טיפים מומחים ופירוקים ארכיטקטוניים, צפו בפרק הפודקאסט המלא, Automate Viva Connections, Topics, Learning, and News!

Entities in this article

Microsoft Viva Azure Key Vault Automation Service principal Viva Connections Viva Topics JSON Viva Learning Microsoft Entra ID Application Insights

Related articles

RSS