Проверка подлинности на основе приложений в модуле PowerShell Teams

Проверка подлинности на основе приложений теперь поддерживается в модуле Teams PowerShell с

  • Версии 4.7.1-preview или более поздние версии в коммерческих & средах GCC.
  • Версии 5.0.1-preview или более поздней версии в средах GCC High & DoD.

Поддерживаемые командлеты

Сейчас поддерживаются все командлеты, за исключением командлетов, упомянутых ниже.

  • New-Team
  • [Get|Задать|Новое|Sync]-CsOnlineApplicationInstance
  • *PolicyPackage*
  • *-CsTeamsShiftsConnection*
  • *-CsBatchTeamsDeployment*
  • [Get|Set]-CsTeamsSettingsCustomApp
  • Get-MultiGeoRegion

Примеры

В следующих примерах показано, как использовать модуль Teams PowerShell с Microsoft Entra проверки подлинности на основе приложения.

  • Подключение с помощью отпечатка сертификата:

    Connect-MicrosoftTeams -CertificateThumbprint "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -ApplicationId "00000000-0000-0000-0000-000000000000" -TenantId "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
    

    При использовании параметра CertificateThumbprint сертификат должен быть установлен на компьютере, где выполняется команда. Сертификат должен быть установлен в хранилище сертификатов пользователя.

  • Подключение с помощью объекта сертификата:

    Connect-MicrosoftTeams -Certificate <%X509Certificate2 object%> -ApplicationId "00000000-0000-0000-0000-000000000000" -TenantId "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
    

    При использовании параметра Certificate сертификат не требуется устанавливать на компьютере, где выполняется команда. Сертификат можно удаленно хранить & получить при выполнении скрипта. Параметр Certificate доступен в модуле Teams PowerShell версии 4.9.2-preview или более поздней.

  • Подключение с помощью маркеров доступа:

    Маркеры доступа можно получить через конечную точку login.microsoftonline.com. Для этого требуются два маркера доступа — ресурсы MS Graph и API клиента Skype и Teams Администратор.

    $ClientSecret   = "…"
    $ApplicationID = "00000000-0000-0000-0000-000000000000"
    $TenantID = "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
    
    $graphtokenBody = @{   
       Grant_Type    = "client_credentials"   
       Scope         = "https://graph.microsoft.com/.default"   
       Client_Id     = $ApplicationID   
       Client_Secret = $ClientSecret   
    }  
    
    $graphToken = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantID/oauth2/v2.0/token" -Method POST -Body $graphtokenBody | Select-Object -ExpandProperty Access_Token 
    
    $teamstokenBody = @{   
       Grant_Type    = "client_credentials"   
       Scope         = "48ac35b8-9aa8-4d74-927d-1f4a14a0b239/.default"   
       Client_Id     = $ApplicationID   
       Client_Secret = $ClientSecret 
    } 
    
    $teamsToken = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantID/oauth2/v2.0/token" -Method POST -Body $teamstokenBody | Select-Object -ExpandProperty Access_Token 
    
    Connect-MicrosoftTeams -AccessTokens @("$graphToken", "$teamsToken")
    

Как это работает?

Модуль PowerShell Teams извлекает маркер на основе приложения, используя идентификатор приложения, идентификатор клиента и отпечаток сертификата. Объекту приложения, подготовленному внутри идентификатора Microsoft Entra, назначена роль каталога, которая возвращается в маркере доступа. Управление доступом на основе ролей (RBAC) сеанса настраивается с помощью сведений о роли каталога, доступных в маркере.

Настройка проверки подлинности на основе приложений

Для проверки подлинности с помощью объектов приложения требуется начальное подключение. Приложение и субъект-служба используются взаимозаменяемо, но приложение похоже на объект класса, а субъект-служба — как экземпляр класса . Дополнительные сведения об этих объектах см. в статье Объекты приложения и субъекта-службы в Microsoft Entra id.

Ниже приведены примеры шагов по созданию приложений в Microsoft Entra id. Подробные инструкции см. в этой статье.

  1. Зарегистрируйте приложение в идентификаторе Microsoft Entra.
  2. Назначьте приложению разрешения API.
    • Для командлетов *-Cs требуется разрешение Microsoft API Graph .Organization.Read.All
    • Для командлетов, отличных от *-Cs, требуются Organization.Read.Allразрешения Microsoft API Graph: , , User.Read.All, Group.ReadWrite.All, TeamSettings.ReadWrite.AllAppCatalog.ReadWrite.AllChannel.Delete.AllChannelSettings.ReadWrite.All. ChannelMember.ReadWrite.All
  3. Создайте самозаверяющий сертификат.
  4. Вложите сертификат в приложение Microsoft Entra.
  5. Назначьте Microsoft Entra роли приложению. См. эту процедуру назначения роли , но найдите приложение, а не пользователя.

Приложению должны быть назначены соответствующие роли RBAC. Так как приложения подготовлены в Microsoft Entra идентификаторе, можно использовать любую из поддерживаемых встроенных ролей.