Freigeben über


Beschränken des Zugriffs auf Microsoft Teams, wenn Mitarbeiter außerhalb der Schicht arbeiten

Übersicht

Die Arbeitszeit ist ein Feature, mit dem Administratoren den Zugriff auf Microsoft Teams für Schichtarbeiter auf mobilen Android- und iOS-Geräten einschränken können. Diese Steuerelemente sind für BYOD-Szenarien (Bring Your Own Device) oder unternehmenseigene dedizierte Geräte für Mitarbeiter in Service und Produktion konzipiert. Erfahren Sie mehr über Frontline-Geräteszenarien.

Mit diesem Feature können Sie den Zugriff auf Teams blockieren oder eine Warnmeldung anzeigen, wenn Mitarbeiter außerhalb der Schicht Teams öffnen. Erwägen Sie, die Arbeitszeit für Ihre Mitarbeiter in Service und Produktion zu aktivieren, wenn:

  • Sie haben Bedenken, dass Mitarbeiter in Service und Produktion eine Bezahlung außerhalb der Arbeitszeiten anfordern, wenn sie auf Arbeits-Apps zugreifen.
  • Lokale Gesetze und Vorschriften erfordern, dass Sie den Zugriff auf Arbeits-Apps einschränken, wenn Mitarbeiter außerhalb der Schicht sind.

So funktioniert es

Wenn ein Mitarbeiter in Service und Produktion in seine Schicht eingeht und Teams öffnet, überprüft die App, ob sich der Mitarbeiter in der Schicht oder außerhalb der Schicht befindet.

  • Wenn sich der Mitarbeiter im Schichtdienst befindet, kann er auf Teams zugreifen.
  • Wenn sich der Mitarbeiter außerhalb der Schicht befindet, wenn Teams geöffnet ist, wird dem Mitarbeiter ein Block- oder Warnbildschirm angezeigt.
    • Wenn Sie einen Sperrbildschirm konfiguriert haben, kann der Mitarbeiter erst dann auf Teams zugreifen, wenn er seine Schicht einnimmt.
    • Wenn Sie einen Warnbildschirm konfiguriert haben, kann der Worker diesen schließen und auswählen, ob Teams nach eigenem Ermessen verwendet werden soll.
  • Wenn ein Mitarbeiter Teams verwendet, während er die Uhr aussetzt, sieht der Worker nach dem Auschecken einen Block- oder Warnbildschirm für die App.

Screenshot des Bildschirms

Neben der Arbeitszeit wird empfohlen, dass Sie auch die Ruhezeit einrichten, um Teams-Benachrichtigungen automatisch stummzuschalten, wenn Mitarbeiter außerhalb der Schicht sind.

Arbeitszeit einrichten

Führen Sie die folgenden Schritte aus, um die Arbeitszeit für Ihre Produktion zu aktivieren.

Konfigurieren von App-Schutzrichtlinien für Android und iOS

Verwenden Sie Microsoft Intune App-Schutzrichtlinien, um die Arbeitszeit zu konfigurieren, um den Zugriff auf Teams auf Android- und iOS-Geräten zu blockieren oder zu warnen. Weitere Informationen zu Richtlinieneinstellungen finden Sie unter:

Verbinden Ihres Personalverwaltungssystems (WFM) mit der workingTimeSchedule-API

Erstellen einer Anwendung

  1. Erstellen Sie eine Anwendung in Microsoft Entra für die Graph-API workingTimeSchedule.

    Wenn Sie Ihre Anwendung registrieren, stellen Sie sicher, dass Sie die Option Nur Konten in diesem Organisationsverzeichnis (einzelner Mandant) auswählen, damit nur Benutzer in Ihrem Mandanten die Anwendung verwenden können. Weitere Informationen finden Sie unter Registrieren einer Anwendung beim Microsoft Identity Platform.

  2. Fügen Sie die ausgeblendete Anwendungsberechtigung zum Aufrufen der Graph-API mithilfe des erforderlichen Bereichs hinzuSchedule-WorkingTime.ReadWrite.All.

    1. Melden Sie sich im Azure-Portal bei Ihrer Anwendung an.

    2. Wechseln Sie zur Registerkarte Manifest . Es wird ein JSON-Code angezeigt, der die vollständige Definition Ihrer Anwendung enthält.

    3. Fügen Sie am Ende des Manifests die requiredResourceAccess -Eigenschaft hinzu.

      Diese Eigenschaft gibt den Berechtigungssatz an, auf den Ihre Anwendung Zugriff benötigt. Anders ausgedrückt: Sie enthält alle APIs, die Ihre Anwendung aufrufen kann. Wenn diese Eigenschaft bereits im Manifest vorhanden ist, verfügt Ihre API bereits über einige Berechtigungen.

    4. Fügen Sie innerhalb des requiredResourceAccess Arrays ein Objekt mit der ID hinzu 00000003-0000-0000-0000-c000-0000000000000000 , um Berechtigungen der Graph-Anwendung anzugeben.

      Wenn Sie bereits über ein Objekt mit derselben ID in Ihrem requiredResourceAccess Array verfügen, müssen Sie nur Folgendes innerhalb des resourceAccess Arrays hinzufügen:

      • Ein Objekt mit der ID der neuen ausgeblendeten Berechtigung, 0b21c159-dbf4-4dbb-a6f6-490e412c716e.
      • Der Berechtigungstyp. In diesem Fall Roleist .

      Hier sehen Sie ein Beispiel dafür, wie das Ende des Manifests aussehen könnte:

      {
        ...
        "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. Speichern Sie die Änderungen.

Sie müssen Mandantenadministrator sein, um diesen Schritt auszuführen.

  1. Wechseln Sie in Ihrem Browser zu https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={ClientAppId}& response_type=code&scope=https://graph.microsoft.com/.default.
  2. Ersetzen Sie in der URL durch ClientAppId Ihre App-ID.
  3. Wählen Sie im Zustimmungsdialogfeld Akzeptieren aus, um mandantenweite Administratoreinwilligung für die neue ausgeblendete Berechtigung für die Anwendung zu erteilen.

Aufrufen von Graph aus der Anwendung

Hier erfahren Sie, wie Sie Graph-Endpunkte aus der Anwendung mithilfe von Beispielcode in C# aufrufen.

  1. Erstellen Sie mithilfe des .NET 6- oder .NET 7 SDK ein neues Konsolenprojekt.

  2. Installieren Sie das Microsoft.Identity.Client NuGet-Paket.

  3. Öffnen Sie die program.cs-Datei, kopieren Sie den folgenden Beispielcode, und fügen Sie ihn ein:

        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. Ändern Sie im Code Folgendes:

    • tenantId: Ersetzen Sie durch Ihre Mandanten-ID.
    • clientId: Ersetzen Sie durch die ID Ihrer Anwendung.
    • clientSecret: Sie müssen einen geheimen Clientschlüssel im Authentifizierungsabschnitt Ihrer Anwendung hinzufügen. Sie können auch ein Sicherheitszertifikat verwenden und den Code entsprechend ändern.
    • userId: Ersetzen Sie durch den Benutzer, auf den Sie die Richtlinie inWorkingTime oder outOfWorkingTime anwenden möchten.

Einrichten der Ruhezeit

Dieser Schritt ist optional, wird jedoch empfohlen.

Konfigurieren Sie Stille Zeitrichtlinien in Intune, um Teams-Benachrichtigungen für Mitarbeiter in Service und Produktion während arbeitsfreien Zeiten automatisch stummzuschalten. Erfahren Sie mehr über das Erstellen von Ruhezeitrichtlinien.

Häufig gestellte Fragen

Muss ich die Schichten-App in Teams verwenden, um dieses Feature nutzen zu können?

Nein, dieses Feature basiert auf dem Ein-/Austaktsignal Ihres WFM.

Kann ich die Arbeitszeit nutzen, wenn ich kein System zur Ein-/Aus-Uhr habe?

Nein, für die Verwendung dieses Features ist ein Signal für die Ein-/Austaktung erforderlich.