הגבל את הגישה ל- Microsoft Teams כאשר עובדים בחזית המשמרת
זמן עבודה הוא תכונה המאפשרת למנהלי מערכת להגביל את הגישה ל- Microsoft Teams עבור עובדי משמרות במכשירים ניידים של Android ו- iOS. פקדים אלה מיועדים לתרחישי מכשיר ייעודי בבעלות החברה (BYOD) ומביאים את המכשיר שלך (BYOD) לעובדים בחזית העסק. קבל מידע נוסף על תרחישים של מכשירים חזיתיים.
תכונה זו מאפשרת לך לחסום גישה ל- Teams או להציג הודעת אזהרה כאשר עובדים בחזית המשמרת פותחים את Teams. שקול לאפשר זמן עבודה עבור כוח העבודה בחזית אם:
- אתה חושש שעובדים בחזית העסק מבקשים תשלום מחוץ לשעות העבודה אם הם ניגשים לאפליקציות עבודה.
- חוקים ותקנות מקומיים מחייבים אותך להגביל את הגישה לאפליקציות עבודה כאשר עובדים אינם משמרת.
כאשר עובד בקו החזית משעון למשמרת שלו ופתח את Teams, האפליקציה בודקת אם העובד נמצא במשמרת או לא.
- אם העובד נמצא במשמרת, הוא יכול לגשת ל- Teams.
- אם העובד נמצא מחוץ למשמרת כאשר Teams פתוח, העובד רואה מסך של חסימה או אזהרה.
- אם קבעת את התצורה של מסך חסימה, העובד לא יוכל לגשת ל- Teams עד שהוא יבדוק את המשמרת שלו.
- אם קבעת את התצורה של מסך אזהרה, העובד יכול לבטל אותו ולבחור אם להשתמש ב- Teams לפי שיקול דעתו.
- אם עובד משתמש ב- Teams בעת יציאה, העובד רואה מסך של חסימה או אזהרה עבור האפליקציה לאחר שהוא יוצא לשעון.
יחד עם זמן עבודה, מומלץ להגדיר גם זמן שקט להשתיק באופן אוטומטי הודעות Teams כאשר העובדים לא עובדים במשמרת.
בצע שלבים אלה כדי לאפשר זמן עבודה עבור החזית שלך.
השתמש Microsoft Intune הגנה של אפליקציות כדי לקבוע את התצורה של זמן עבודה כדי לחסום או להזהיר את הגישה ל- Teams במכשירי Android ו- iOS. לקבלת מידע נוסף אודות הגדרות מדיניות, ראה:
- הגדרות מדיניות הגנה של אפליקציית Android - הפעלה מותנית
- הגדרות מדיניות הגנה של אפליקציית iOS - הפעלה מותנית
צור יישום ב- Microsoft Entra עבור ה- API של Graph של workingTimeSchedule.
בעת רישום היישום, הקפד לבחור באפשרות חשבונות במדריך כתובות ארגוני זה בלבד (דייר יחיד) כך שרק משתמשים בדייר שלך יוכלו להשתמש ביישום. לקבלת מידע נוסף, ראה רישום יישום באמצעות פלטפורמת הזהויות של Microsoft.
הוסף את הרשאת היישום המוסתרת עבור קריאה ל- Graph API באמצעות הטווח הנדרש,
Schedule-WorkingTime.ReadWrite.All
.היכנס לאישום שלך בפורטל Azure.
עבור אל הכרטיסיה מניפסט . תראה JSON המכיל את ההגדרה המלאה של היישום שלך.
בסוף המניפסט, הוסף את המאפיין
requiredResourceAccess
.מאפיין זה מציין את קבוצת ההרשאות שהיישום שלך דורש גישה אליהם. במילים אחרות, הוא מכיל את כל ממשקי ה- API שניתן לקרוא ליישום שלך. אם מאפיין זה כבר קיים במניפסט, ל- API שלך יש כבר כמה הרשאות שהוענקו לו.
בתוך המערך
requiredResourceAccess
, הוסף אובייקט עם מזהה של כדי00000003-0000-0000-0000-c000-0000000000000000
לציין הרשאות של יישום Graph.אם כבר יש לך אובייקט בעל מזהה זהה בתוך המערך
requiredResourceAccess
, עליך להוסיף רק את הפריטים הבאים בתוך המערךresourceAccess
:- אובייקט עם המזהה של ההרשאה המוסתרת החדשה,
0b21c159-dbf4-4dbb-a6f6-490e412c716e
. - סוג ההרשאה. במקרה זה,
Role
.
להלן דוגמה של המראה של סוף המניפסט:
{ ... "preAuthorizedApplications": [], "publisherDomain": "microsoft.onmicrosoft.com", "replyUrlsWithType": [ { "url": "https://localhost:44321/signin-oidc", "type": "Web" }, { "url": "https://localhost:44321/", "type": "Web" } ], "requiredResourceAccess": [ { "resourceAppId": "00000003-0000-0000-c000-000000000000", "resourceAccess": [ { "id": "0b21c159-dbf4-4dbb-a6f6-490e412c716e", "type": "Role" } ] } ], "samlMetadataUrl": null, "signInUrl": null, "signInAudience": "AzureADMyOrg", "tags": [], "tokenEncryptionKeyId": null }
- אובייקט עם המזהה של ההרשאה המוסתרת החדשה,
שמור את השינויים.
עליך להיות מנהל דיירים כדי לבצע שלב זה.
- בדפדפן, עבור אל https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={ClientAppId}& response_type=code&scope=https://graph.microsoft.com/.default.
- בכתובת ה- URL, החלף
ClientAppId
במזהה היישום שלך. - בתיבת הדו-שיח של ההסכמה, בחר קבל כדי להעניק הרשאת מנהל מערכת ברחבי הדייר ההרשאה המוסתרת החדשה עבור היישום.
כך ניתן לקרוא ל נקודות קצה של Graph מהיישום באמצעות קוד לדוגמה ב- C#.
צור פרוייקט מסוף חדש באמצעות SDK של .NET 6 או .NET 7
התקן את חבילת
Microsoft.Identity.Client
NuGet.פתח את program.cs הקובץ, והעתק והדבק בו את הקוד לדוגמה הבא:
using System.Text; using Microsoft.Identity.Client; var userId = "928bf23a-81e8-47c9-ad54-2c0206248afe"; var path = Path.Combine(Path.GetTempPath(), "workingTimeTokenGenerator.txt"); string? accessToken; if (!File.Exists(path) || (DateTime.UtcNow - new FileInfo(path).LastWriteTimeUtc).TotalMinutes > 59) { var clientId = "00001111-aaaa-2222-bbbb-3333cccc4444"; var clientSecret = "Aa1Bb~2Cc3.-Dd4Ee5Ff6Gg7Hh8Ii9_Jj0Kk1Ll2"; var tenantId = "cad3e174-69d3-4707-abd2-f527f45c367a"; var scopes = new string[] { "00000003-0000-0000-c000-000000000000/.default" }; var app = ConfidentialClientApplicationBuilder.Create(clientId) .WithClientSecret(clientSecret) .Build(); var result = await app.AcquireTokenForClient(scopes) .WithAuthority(AzureCloudInstance.AzurePublic, tenantId) .ExecuteAsync(); accessToken = result.AccessToken; File.WriteAllText(path, accessToken); } else { accessToken = File.ReadAllText(path); } int number; while (true) { Console.WriteLine("Press 1 for startWorkingTime, 2 for endWorkingTime."); var choice = Console.ReadLine(); if (!Int32.TryParse(choice, out number) || !new[] { 1, 2}.Contains(number)) { Console.WriteLine("Out-of-range election."); continue; } break; } Console.WriteLine("Performing request..."); var httpClient = new HttpClient(); var message = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri($"https://graph.microsoft.com/beta/users/{userId}/solutions/schedule/{(number == 1 ? "startWorkingTime" : "endWorkingTime")}") }; message.Headers.Add("Authorization", $"Bearer {accessToken}"); message.Content = new StringContent("", Encoding.UTF8, "application/json"); var response = await httpClient.SendAsync(message); if (!response.IsSuccessStatusCode) { string? content = null; try { content = await response.Content?.ReadAsStringAsync(); } catch { } Console.WriteLine($"Graph returned a non success status code: {response.StatusCode}. Reason phrase: {response.ReasonPhrase}." + (content is null ? "Unable to get the response body." : $"Content: {content}")); } else { Console.WriteLine($"Graph returned a success status code: {response.StatusCode}."); } Console.WriteLine("Press any key to exit."); _ = Console.ReadKey();
בקוד, שנה את האפשרויות הבאות:
-
tenantId
: החלף עם מזהה הדייר שלך. -
clientId
: החלף בהמזהה של היישום שלך. -
clientSecret
: עליך להוסיף סוד לקוח במקטע האימות של היישום שלך. באפשרותך גם לבחור להשתמש באישור אבטחה ולשנות את הקוד בהתאם. -
userId
: החלף את המשתמש שעליו ברצונך להחיל את המדיניות inWorkingTime או outOfWorkingTime.
-
שלב זה הוא אופציונלי אך מומלץ.
קבע תצורה של מדיניות זמן שקט ב- Intune כדי להשתיק באופן אוטומטי הודעות Teams עבור עובדים בחזית העסק במהלך שעות שאינן שעות עבודה. קבל מידע נוסף על יצירת מדיניות זמן שקטה.
האם עליי להשתמש באפליקציית Shifts ב- Teams כדי לנצל תכונה זו?
לא, תכונה זו מסתמכת על אות הכניסה/היציאה של השעון WFM.
האם ניתן להשתמש בזמן עבודה אם אין לי מערכת כניסה/יציאה של שעון?
לא, נדרש אות כניסה/יציאה של שעון כדי להשתמש בתכונה זו.