Begræns adgangen til Microsoft Teams, når frontlinjemedarbejdere ikke er på skift
Oversigt
Arbejdstid er en funktion, der gør det muligt for administratorer at begrænse adgangen til Microsoft Teams for skifteholdsarbejdere på Android- og iOS-mobilenheder. Disse kontrolelementer er designet til BYOD (bring-your-own-device) eller virksomhedsejede dedikerede enhedsscenarier for frontlinjearbejdere. Få mere at vide om scenarier for frontlineenheder.
Med denne funktion kan du blokere adgang til Teams eller vise en advarsel, når frontlinjemedarbejdere, der ikke er på vagt, åbner Teams. Overvej at aktivere arbejdstid for din frontlinearbejdsstyrke, hvis:
- Du er bekymret for frontlinemedarbejdere, der beder om løn uden for arbejdstiden, hvis de får adgang til arbejdsapps.
- Lokale love og bestemmelser kræver, at du begrænser adgangen til arbejdsapps, når medarbejdere er på frihold.
Sådan fungerer det
Når en frontlinjemedarbejder stempler ind på deres skift og åbner Teams, kontrollerer appen, om arbejderen er på eller fra skift.
- Hvis arbejderen er på skift, kan vedkommende få adgang til Teams.
- Hvis arbejderen er på friholdshold, når Teams er åben, får arbejderen vist en blok- eller advarselsskærm.
- Hvis du har konfigureret en blokskærm, kan arbejderen ikke få adgang til Teams, før vedkommende har stemplet ind på sit skiftehold.
- Hvis du har konfigureret en advarselsskærm, kan arbejderen afvise den og vælge, om vedkommende vil bruge Teams efter eget skøn.
- Hvis en arbejder bruger Teams, mens vedkommende stempler ud, får arbejderen vist en blok- eller advarselsskærm for appen, når vedkommende har stemplet ud.
Sammen med arbejdstid anbefaler vi, at du også konfigurerer stille tid til automatisk at slå Slå Teams-meddelelser fra, når arbejdere er på frihold.
Konfigurer arbejdstid
Følg disse trin for at aktivere arbejdstid for din frontlinje.
Konfigurer politikker for appbeskyttelse til Android og iOS
Brug Microsoft Intune politikker for appbeskyttelse til at konfigurere arbejdstid til at blokere eller advare adgang til Teams på Android- og iOS-enheder. Du kan få flere oplysninger om politikindstillinger under:
- Politikindstillinger for beskyttelse af Android-apps – Betinget start
- Indstillinger for beskyttelsespolitik for iOS-apps – Betinget start
Forbind dit WFM (Workforce Management System) med WORKINGTimeSchedule-API'en
Opret et program
Opret et program i Microsoft Entra til api'en til workingTimeSchedule Graph.
Når du registrerer dit program, skal du sørge for at vælge indstillingen Kun konti i denne organisationsmappe (enkelt lejer), så det kun er brugere i din lejer, der kan bruge programmet. Du kan få mere at vide under Registrer et program med Microsoft-identitetsplatform.
Tilføj tilladelsen for det skjulte program til kald af Graph-API'en ved hjælp af det påkrævede område .
Schedule-WorkingTime.ReadWrite.All
Log på dit program i Azure Portal.
Gå til fanen Manifest . Du får vist en JSON, der indeholder den komplette definition af dit program.
Tilføj egenskaben i slutningen af manifestet
requiredResourceAccess
.Denne egenskab angiver det sæt tilladelser, som dit program kræver adgang til. Det vil sige, at den indeholder alle de API'er, som dit program kan kalde. Hvis denne egenskab allerede findes i manifestet, har api'en allerede tildelt nogle tilladelser.
I matrixen
requiredResourceAccess
skal du tilføje et objekt med id'et for00000003-0000-0000-0000-c000-0000000000000000
at angive tilladelser for Graph-programmet.Hvis du allerede har et objekt med det samme id i matrixen
requiredResourceAccess
, skal du kun tilføje følgende i matrixenresourceAccess
:- Et objekt med id'et for den nye skjulte tilladelse .
0b21c159-dbf4-4dbb-a6f6-490e412c716e
- Tilladelsestypen. I dette tilfælde
Role
.
Her er et eksempel på, hvordan slutningen af manifestet kan se ud:
{ ... "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 }
- Et objekt med id'et for den nye skjulte tilladelse .
Gem ændringerne.
Giv administratorsamtykke for hele lejeren til programmets skjulte tilladelse
Du skal være lejeradministrator for at kunne udføre dette trin.
- I browseren skal du gå til https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={ClientAppId}& response_type=code&scope=https://graph.microsoft.com/.default.
- I URL-adressen skal du erstatte
ClientAppId
med dit app-id. - I dialogboksen samtykke skal du vælge Acceptér for at give administratorsamtykke for hele lejeren til den nye skjulte tilladelse for programmet.
Kald Graph fra programmet
Sådan kalder du Graph-slutpunkter fra programmet ved hjælp af eksempelkode i C#.
Opret et nyt konsolprojekt ved hjælp af .NET 6 eller .NET 7 SDK.
Installér NuGet-pakken
Microsoft.Identity.Client
.Åbn filen program.cs, og kopiér og indsæt følgende eksempelkode 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();
I koden skal du ændre følgende:
-
tenantId
: Erstat med dit lejer-id. -
clientId
: Erstat med id'et for dit program. -
clientSecret
: Du skal tilføje en klienthemmelighed i godkendelsessektionen i dit program. Du kan også vælge at bruge et sikkerhedscertifikat og ændre koden i overensstemmelse hermed. -
userId
: Erstat med den bruger, du vil anvende politikken inWorkingTime eller outOfWorkingTime på.
-
Konfigurer stille tid
Dette trin er valgfrit, men anbefales.
Konfigurer politikker for stille tid i Intune for automatisk at slå Slå Teams-meddelelser fra for frontlinjemedarbejdere i fritiden. Få mere at vide om, hvordan du opretter politikker for stille tid.
Ofte stillede spørgsmål
Skal jeg bruge appen Shifts i Teams for at kunne drage fordel af denne funktion?
Nej, denne funktion er afhængig af urets ind-/ud-signal fra din WFM.
Kan jeg bruge arbejdstid, hvis jeg ikke har et ur ind/ud-system på plads?
Nej, der kræves et ur ind/ud-signal for at bruge denne funktion.