Begränsa åtkomsten till Microsoft Teams när medarbetare i frontlinjen är lediga
Översikt
Arbetstid är en funktion som gör det möjligt för administratörer att begränsa åtkomsten till Microsoft Teams för skiftarbetare på mobila Android- och iOS-enheter. Dessa kontroller är utformade för BYOD (Bring Your Own Device) eller företagsägda dedikerade enhetsscenarier för medarbetare i frontlinjen. Läs mer om scenarier för enheter i frontlinjen.
Med den här funktionen kan du blockera åtkomst till Teams eller visa ett varningsmeddelande när medarbetare i frontlinjen som inte är lediga öppnar Teams. Överväg att aktivera arbetstid för personalen i frontlinjen om:
- Du är bekymrad över att medarbetare i frontlinjen ber om lön utanför arbetstid om de får åtkomst till arbetsappar.
- Lokala lagar och förordningar kräver att du begränsar åtkomsten till arbetsappar när anställda inte är lediga.
Så här fungerar det
När en medarbetare i frontlinjen klockar in på sitt skift och öppnar Teams kontrollerar appen om arbetaren är på eller av skift.
- Om arbetaren är i skift kan de komma åt Teams.
- Om arbetaren är avstängd när Teams är öppet ser arbetaren en block- eller varningsskärm.
- Om du har konfigurerat en blockeringsskärm kan arbetaren inte komma åt Teams förrän de klockar in till sitt skift.
- Om du har konfigurerat en varningsskärm kan arbetaren stänga den och välja om du vill använda Teams efter eget gottfinnande.
- Om en arbetare använder Teams när han eller hon stämplar ut ser arbetaren en block- eller varningsskärm för appen när de har klockat ut.
Tillsammans med arbetstiden rekommenderar vi att du även ställer in tyst tid för att automatiskt stänga av Teams-meddelanden när arbetare är lediga.
Konfigurera arbetstid
Följ de här stegen för att aktivera arbetstid för din frontlinje.
Konfigurera appskyddsprinciper för Android och iOS
Använd Microsoft Intune appskyddsprinciper för att konfigurera arbetstid för att blockera eller varna åtkomst till Teams på Android- och iOS-enheter. Mer information om principinställningar finns i:
- Principinställningar för Android-appskydd – Villkorlig start
- Principinställningar för iOS-appskydd – Villkorlig start
Ansluta personalhanteringssystemet (WFM) till API:et workingTimeSchedule
Skapa ett program
Skapa ett program i Microsoft Entra för Graph API workingTimeSchedule.
När du registrerar ditt program måste du välja alternativet Endast konton i den här organisationskatalogen (enskild klient) så att endast användare i klientorganisationen kan använda programmet. Mer information finns i Registrera ett program med Microsofts identitetsplattform.
Lägg till den dolda programbehörigheten för att anropa Graph API med det nödvändiga omfånget,
Schedule-WorkingTime.ReadWrite.All
.Logga in på ditt program i Azure Portal.
Gå till fliken Manifest . Du ser en JSON som innehåller den fullständiga definitionen av ditt program.
Lägg till egenskapen i slutet av manifestet
requiredResourceAccess
.Den här egenskapen anger den uppsättning behörigheter som programmet behöver åtkomst till. Med andra ord innehåller den alla API:er som programmet kan anropa. Om den här egenskapen redan finns i manifestet har ditt API vissa behörigheter som redan har beviljats.
I matrisen
requiredResourceAccess
lägger du till ett objekt med ett ID00000003-0000-0000-0000-c000-0000000000000000
för för att ange behörigheter för Graph-programmet.Om du redan har ett objekt med samma ID i
requiredResourceAccess
matrisen behöver du bara lägga till följande i matrisenresourceAccess
:- Ett objekt med ID:t för den nya dolda behörigheten,
0b21c159-dbf4-4dbb-a6f6-490e412c716e
. - Typ av behörighet. I det här fallet .
Role
Här är ett exempel på hur slutet av manifestet kan se ut:
{ ... "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 }
- Ett objekt med ID:t för den nya dolda behörigheten,
Spara ändringarna.
Bevilja administratörsmedgivande för hela klientorganisationen till programmets dolda behörighet
Du måste vara innehavaradministratör för att utföra det här steget.
- I webbläsaren går du till https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={ClientAppId}& response_type=code&scope=https://graph.microsoft.com/.default.
- I URL:en ersätter du
ClientAppId
med ditt app-ID. - I dialogrutan medgivande väljer du Acceptera för att bevilja administratörsmedgivande för hela klientorganisationen till den nya dolda behörigheten för programmet.
Anropa Graph från programmet
Så här anropar du Graph-slutpunkter från programmet med hjälp av exempelkod i C#.
Skapa ett nytt konsolprojekt med .NET 6 eller .NET 7 SDK.
Installera NuGet-paketet
Microsoft.Identity.Client
.Öppna program.cs-filen och kopiera och klistra in följande exempelkod i den:
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();
Ändra följande i koden:
-
tenantId
: Ersätt med ditt klientorganisations-ID. -
clientId
: Ersätt med ID:t för ditt program. -
clientSecret
: Du måste lägga till en klienthemlighet i autentiseringsavsnittet i ditt program. Du kan också välja att använda ett säkerhetscertifikat och ändra koden i enlighet med detta. -
userId
: Ersätt med den användare som du vill tillämpa principen inWorkingTime eller outOfWorkingTime på.
-
Konfigurera tyst tid
Det här steget är valfritt men rekommenderas.
Konfigurera principer för tyst tid i Intune för att automatiskt stänga av Teams-meddelanden för medarbetare i frontlinjen under arbetstid. Läs mer om hur du skapar principer för tyst tid.
Vanliga frågor och svar
Behöver jag använda Shifts-appen i Teams för att dra nytta av den här funktionen?
Nej, den här funktionen förlitar sig på klockans in-/ut-signal från din WFM.
Kan jag använda arbetstid om jag inte har ett in-/ut-system för klocka på plats?
Nej, en in/ut-klocka-signal krävs för att använda den här funktionen.