Begrens tilgangen til Microsoft Teams når frontlinjearbeidere er utenfor skift
Oversikt
Arbeidstid er en funksjon som gjør det mulig for administratorer å begrense tilgangen til Microsoft Teams for skiftarbeidere på Android- og iOS-mobilenheter. Disse kontrollene er utformet for bring-your-own-device (BYOD) eller bedriftseide dedikerte enhetsscenarioer for frontlinjearbeidere. Mer informasjon om scenarier for frontlinjeenheter.
Med denne funksjonen kan du blokkere tilgang til Teams eller vise en advarsel når frontlinjearbeidere som er utenfor skift, åpner Teams. Vurder å aktivere arbeidstid for arbeidsstyrken i frontlinjen hvis:
- Du er bekymret for at frontlinjearbeidere ber om lønn utenfor arbeidstiden hvis de får tilgang til arbeidsapper.
- Lokale lover og forskrifter krever at du begrenser tilgangen til arbeidsapper når ansatte er utenfor skift.
Slik fungerer det
Når en frontlinjearbeider stempler inn på skiftet og åpner Teams, kontrollerer appen om arbeideren er på eller av skift.
- Hvis arbeideren er på skift, får de tilgang til Teams.
- Hvis arbeideren er utenfor skift når Teams er åpen, ser arbeideren en blokk- eller advarselsskjerm.
- Hvis du har konfigurert en blokkskjerm, får ikke arbeideren tilgang til Teams før de stempler inn på skiftet.
- Hvis du konfigurerte en advarselsskjerm, kan arbeideren avvise den og velge om han vil bruke Teams etter eget skjønn.
- Hvis en arbeider bruker Teams mens han stempler ut, ser arbeideren en blokk- eller advarselsskjerm for appen etter at vedkommende stempler ut.
I tillegg til arbeidstid anbefaler vi at du også konfigurerer stilletid til å dempe Teams-varsler automatisk når arbeidere er utenfor skift.
Konfigurere arbeidstid
Følg disse trinnene for å aktivere arbeidstid for frontlinjen.
Konfigurer policyer for appbeskyttelse for Android og iOS
Bruk Microsoft Intune appbeskyttelsespolicyer til å konfigurere arbeidstid for å blokkere eller advare tilgang til Teams på Android- og iOS-enheter. Hvis du vil ha mer informasjon om policyinnstillinger, kan du se:
- Innstillinger for beskyttelsespolicy for Android-apper – betinget lansering
- Innstillinger for beskyttelsespolicy for iOS-apper – betinget lansering
Koble administrasjonssystemet for arbeidsstyrken (WFM) til API-en for workingTimeSchedule
Opprette et program
Opprett et program i Microsoft Entra for API-en for workingTimeSchedule Graph.
Når du registrerer programmet, må du sørge for at du velger alternativet Bare forretningsforbindelser i denne organisasjonskatalogen (én enkelt leier), slik at bare brukere i leieren kan bruke programmet. Hvis du vil ha mer informasjon, kan du se Registrere et program med Microsofts identitetsplattform.
Legg til den skjulte programtillatelsen for å kalle Graph-API-en ved hjelp av det nødvendige omfanget.
Schedule-WorkingTime.ReadWrite.All
Logg på programmet i Azure Portal.
Gå til Manifest-fanen . Du ser en JSON som inneholder hele definisjonen av programmet.
Legg til
requiredResourceAccess
egenskapen på slutten av manifestet.Denne egenskapen angir settet med tillatelser som programmet krever tilgang til. Den inneholder med andre ord alle API-ene som programmet kan kalle opp. Hvis denne egenskapen allerede finnes i manifestet, har API-en noen tillatelser som allerede er gitt til den.
Legg til et objekt med en ID
00000003-0000-0000-0000-c000-0000000000000000
for i matrisenrequiredResourceAccess
for å angi tillatelser for Graph-programmet.Hvis du allerede har et objekt med samme ID i
requiredResourceAccess
matrisen, trenger du bare å legge til følgende i matrisenresourceAccess
:- Et objekt med ID-en til den nye skjulte tillatelsen,
0b21c159-dbf4-4dbb-a6f6-490e412c716e
. - Tillatelsestypen. I dette tilfellet,
Role
.
Her er et eksempel på hvordan slutten 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 }
- Et objekt med ID-en til den nye skjulte tillatelsen,
Lagre endringene.
Gi administratorsamtykke for hele tenanten til programmets skjulte tillatelse
Du må være leieradministrator for å utføre dette trinnet.
- Gå til https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={ClientAppId}& response_type=kode&omfang=https://graph.microsoft.com/.defaulti nettleseren.
- Erstatt
ClientAppId
med app-ID-en i nettadressen. - I dialogboksen for samtykke velger du Godta for å gi administratorsamtykke for hele tenanten til den nye skjulte tillatelsen for programmet.
Kall graph fra programmet
Slik kaller du Graph-endepunkter fra programmet ved hjelp av eksempelkode i C#.
Opprett et nytt konsollprosjekt ved hjelp av .NET 6 eller .NET 7 SDK.
Installer NuGet-pakken
Microsoft.Identity.Client
.Åpne program.cs-filen, og kopier og lim inn følgende eksempelkode:
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();
Endre følgende i koden:
-
tenantId
: Erstatt med tenant-ID-en. -
clientId
: Erstatt med ID-en for programmet. -
clientSecret
: Du må legge til en klienthemmelighet i godkjenningsdelen av programmet. Du kan også velge å bruke et sikkerhetssertifikat og endre koden tilsvarende. -
userId
: Erstatt med brukeren du vil bruke policyen inWorkingTime eller outOfWorkingTime for.
-
Konfigurere stilletid
Dette trinnet er valgfritt, men anbefales.
Konfigurer policyer for stilleid i Intune for automatisk å dempe Teams-varsler for frontlinjearbeidere i fritiden. Mer informasjon om hvordan du oppretter stilletidspolicyer.
Vanlige spørsmål
Må jeg bruke Skift-appen i Teams for å dra nytte av denne funksjonen?
Nei, denne funksjonen er avhengig av klokkeinn/ut-signalet fra WFM.
Kan jeg bruke arbeidstiden hvis jeg ikke har et klokke-inn-/ut-system på plass?
Nei, det kreves et klokkeinn-/ut-signal for å bruke denne funksjonen.