Megosztás a következőn keresztül:


A Microsoft Teamshez való hozzáférés korlátozása, ha az előtérbeli dolgozók műszakon kívül vannak

Áttekintés

A munkaidő egy olyan funkció, amellyel a rendszergazdák korlátozhatják a Microsoft Teamshez való hozzáférést az Android és iOS rendszerű mobileszközök műszakos dolgozói számára. Ezek a vezérlők saját eszközök (BYOD) vagy vállalati tulajdonú dedikált eszközök forgatókönyveihez lettek kialakítva az előtérbeli dolgozók számára. További információ az előtérbeli eszközök forgatókönyveiről.

Ezzel a funkcióval letilthatja a Teamshez való hozzáférést, vagy figyelmeztető üzenetet jeleníthet meg, amikor a műszakon kívüli frontvonalbeli dolgozók megnyitják a Teamst. Fontolja meg a munkaidő engedélyezését az előtérbeli munkaerő számára, ha:

  • Aggódik amiatt, hogy az élvonalbeli dolgozók munkaidőn kívüli fizetést kérnek, ha munkahelyi alkalmazásokhoz férnek hozzá.
  • A helyi törvények és rendeletek megkövetelik, hogy korlátozza a munkahelyi alkalmazásokhoz való hozzáférést, ha az alkalmazottak műszakon kívül vannak.

Működése

Amikor egy frontvonalbeli feldolgozó beáll a műszakba, és megnyitja a Teamst, az alkalmazás ellenőrzi, hogy a feldolgozó be- vagy kikapcsolt műszakban van-e.

  • Ha a feldolgozó műszakban van, hozzáférhet a Teamshez.
  • Ha a feldolgozó műszakon kívül van, amikor a Teams meg van nyitva, a feldolgozó egy letiltási vagy figyelmeztető képernyőt lát.
    • Ha blokkképernyőt konfigurált, a feldolgozó csak akkor férhet hozzá a Teamshez, ha be nem jelentkezik a műszakba.
    • Ha konfigurált egy figyelmeztető képernyőt, a feldolgozó elvetheti azt, és eldöntheti, hogy saját belátása szerint használja-e a Teamst.
  • Ha egy feldolgozó a Teamst használja az időtúllépés közben, a feldolgozó az időtúllépés után egy blokkolási vagy figyelmeztető képernyőt lát az alkalmazáshoz.

Képernyőkép a hozzáférés letiltása képernyőről és a figyelmeztető képernyőről.

A munkaidő mellett azt is javasoljuk, hogy állítson be nyugalmi időt a Teams-értesítések automatikus elnémítására, amikor a dolgozók műszakon kívül vannak.

Munkaidő beállítása

Az alábbi lépéseket követve engedélyezheti a munkaidőt az előtérben.

Alkalmazásvédelmi szabályzatok konfigurálása Android és iOS rendszerhez

Microsoft Intune alkalmazásvédelmi szabályzatok használatával konfigurálhatja a munkaidőt, hogy letiltsa vagy figyelmeztesse a Teamshez való hozzáférést Android- és iOS-eszközökön. További információ a szabályzatbeállításokról:

A munkaerő-felügyeleti rendszer (WFM) csatlakoztatása a workingTimeSchedule API-hoz

Alkalmazás létrehozása

  1. Hozzon létre egy alkalmazást a Microsoft Entra a workingTimeSchedule Graph API számára.

    Az alkalmazás regisztrálásakor győződjön meg arról, hogy a Csak ebben a szervezeti címtárban lévő fiókok (egybérlős) lehetőséget választja, hogy csak a bérlő felhasználói használhassák az alkalmazást. További információ: Alkalmazás regisztrálása a Microsoft Identitásplatform.

  2. Adja hozzá a rejtett alkalmazásengedélyt a Graph API meghívásához a szükséges hatókörrel( Schedule-WorkingTime.ReadWrite.All).

    1. Jelentkezzen be az alkalmazásba a Azure Portal.

    2. Lépjen a Jegyzék fülre . Megjelenik egy JSON, amely tartalmazza az alkalmazás teljes definícióját.

    3. A jegyzékfájl végén adja hozzá a tulajdonságot requiredResourceAccess .

      Ez a tulajdonság határozza meg azokat az engedélyeket, amelyekhez az alkalmazásnak hozzáférésre van szüksége. Más szóval az alkalmazás által meghívható összes API-t tartalmazza. Ha ez a tulajdonság már szerepel a jegyzékfájlban, az API-nak már vannak engedélyei.

    4. requiredResourceAccess A tömbben adjon hozzá egy azonosítójú 00000003-0000-0000-0000-c000-0000000000000000 objektumot a Graph-alkalmazás engedélyeinek megadásához.

      Ha már van ilyen azonosítójú objektum a requiredResourceAccess tömbben, csak a következőt kell hozzáadnia a resourceAccess tömbben:

      • Egy objektum, amely az új rejtett engedély azonosítójával rendelkezik: 0b21c159-dbf4-4dbb-a6f6-490e412c716e.
      • Az engedély típusa. Ebben az esetben: Role.

      Íme egy példa arra, hogyan nézhet ki a jegyzékfájl vége:

      {
        ...
        "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. Mentse a módosításokat.

A lépés végrehajtásához bérlői rendszergazdának kell lennie.

  1. Nyissa meg a böngészőben a https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={ClientAppId}& response_type=code&scope=https://graph.microsoft.com/.default.
  2. Az URL-címben cserélje le a elemet ClientAppId az alkalmazásazonosítójára.
  3. A hozzájárulási párbeszédpanelen válassza az Elfogadás lehetőséget, ha bérlőszintű rendszergazdai hozzájárulást szeretne adni az alkalmazás új rejtett engedélyének.

A Graph meghívása az alkalmazásból

Az alábbiakban bemutatjuk, hogyan hívhat meg Graph-végpontokat az alkalmazásból példakód használatával C# nyelven.

  1. Hozzon létre egy új konzolprojektet a .NET 6 vagy a .NET 7 SDK használatával.

  2. Telepítse a Microsoft.Identity.Client NuGet-csomagot.

  3. Nyissa meg a program.cs fájlt, és másolja és illessze be a következő példakódot:

        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. A kódban módosítsa a következőket:

    • tenantId: Cserélje le a elemet a bérlőazonosítóra.
    • clientId: Cserélje le a elemet az alkalmazás azonosítójára.
    • clientSecret: Az alkalmazás hitelesítési szakaszában hozzá kell adnia egy titkos ügyfélkódot. Dönthet úgy is, hogy biztonsági tanúsítványt használ, és ennek megfelelően módosítja a kódot.
    • userId: Cserélje le azt a felhasználót, akire alkalmazni szeretné az inWorkingTime vagy outOfWorkingTime szabályzatot.

Nyugalmi idő beállítása

Ez a lépés nem kötelező, de ajánlott.

Konfigurálja a nyugalmi időre vonatkozó szabályzatokat a Intune, hogy automatikusan elnémítsa a Teams-értesítéseket az előtérbeli dolgozók számára munkaidőn kívüli időszakban. További információ a csendes időre vonatkozó szabályzatok létrehozásáról.

Gyakori kérdések

Használnom kell a Shifts alkalmazást a Teamsben, hogy kihasználhassam ezt a funkciót?

Nem, ez a funkció a WFM be- és kimenő órájára támaszkodik.

Használhatom a munkaidőt, ha nincs be- vagy kimenőóra-rendszerem?

Nem, a funkció használatához órajel szükséges.