Del via


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.

Skærmbillede af skærmen til blokering af adgang og advarselsskærmen.

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:

Forbind dit WFM (Workforce Management System) med WORKINGTimeSchedule-API'en

Opret et program

  1. 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.

  2. 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

    1. Log på dit program i Azure Portal.

    2. Gå til fanen Manifest . Du får vist en JSON, der indeholder den komplette definition af dit program.

    3. 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.

    4. I matrixen requiredResourceAccess skal du tilføje et objekt med id'et for 00000003-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 matrixen resourceAccess :

      • 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
      }
      
    5. Gem ændringerne.

Du skal være lejeradministrator for at kunne udføre dette trin.

  1. 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.
  2. I URL-adressen skal du erstatte ClientAppId med dit app-id.
  3. 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#.

  1. Opret et nyt konsolprojekt ved hjælp af .NET 6 eller .NET 7 SDK.

  2. Installér NuGet-pakken Microsoft.Identity.Client .

  3. Å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();
    
  4. 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.