Teams PowerShell モジュールでのアプリケーション ベースの認証

アプリケーション ベースの認証が Teams PowerShell モジュールでサポートされるようになりました。

  • 商用 & GCC 環境のバージョン 4.7.1-preview 以降。
  • GCC High & DoD 環境のバージョン 5.0.1-preview 以降。

サポートされているコマンドレット

以下に示すコマンドレットを除き、すべてのコマンドレットが現在サポートされています。

  • New-Team
  • [Get|Set|新規|Sync]-CsOnlineApplicationInstance
  • *PolicyPackage*
  • *-CsTeamsShiftsConnection*
  • *-CsBatchTeamsDeployment*
  • [Get|Set]-CsTeamsSettingsCustomApp
  • Get-MultiGeoRegion

次の例では、Microsoft Entra アプリ ベースの認証で Teams PowerShell モジュールを使用する方法を示します。

  • 証明書の拇印を使用して接続します。

    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" と "Skype と Teams テナント 管理 API" の 2 つのアクセス トークンが必要です。

    $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")
    

それはどのように動作しますか?

Teams PowerShell モジュールは、アプリケーション ID、テナント ID、証明書の拇印を使用してアプリ ベースのトークンをフェッチします。 Microsoft Entra ID 内でプロビジョニングされたアプリケーション オブジェクトには、アクセス トークンで返されるディレクトリ ロールが割り当てられます。 セッションのロールベースのアクセス制御 (RBAC) は、トークンで使用できるディレクトリ ロール情報を使用して構成されます。

アプリケーション ベースの認証を設定する

アプリケーション オブジェクトを使用した認証には、初期オンボードが必要です。 アプリケーションとサービス プリンシパルは同じ意味で使用されますが、アプリケーションはクラス オブジェクトに似ていますが、サービス プリンシパルはクラスのインスタンスのようなものです。 これらのオブジェクトの詳細については、Microsoft Entra ID のアプリケーション オブジェクトとサービス プリンシパル オブジェクトに関するページを参照してください。

Microsoft Entra ID でアプリケーションを作成するためのサンプル手順を以下に示します。 詳細な手順については、この 記事を参照してください。

  1. Microsoft Entra ID でアプリケーションを登録します。
  2. アプリケーションに API アクセス許可を割り当てます。
    • *-Cs コマンドレットの場合- 必要な Microsoft Graph API アクセス許可は ですOrganization.Read.All
    • *-Cs 以外のコマンドレットの場合- 必要な Microsoft Graph APIアクセス許可はOrganization.Read.All、、、Group.ReadWrite.AllAppCatalog.ReadWrite.AllChannel.Delete.AllTeamSettings.ReadWrite.All、、ChannelSettings.ReadWrite.All、ですChannelMember.ReadWrite.AllUser.Read.All
  3. 自己署名証明書を生成します。
  4. 証明書をMicrosoft Entra アプリケーションにアタッチします。
  5. Microsoft Entraロールをアプリケーションに割り当てます。 「ロールの 割り当て 」の手順を参照してください。ただし、ユーザーではなくアプリケーションを検索します。

アプリケーションには、適切な RBAC ロールが割り当てられている必要があります。 アプリは Microsoft Entra ID でプロビジョニングされるため、サポートされている任意の組み込みロールを使用できます。