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でアプリケーションを作成するためのサンプル手順を以下に示します。 詳細な手順については、この 記事を参照してください。
- アプリケーションをMicrosoft Entra IDに登録します。
- アプリケーションに API アクセス許可を割り当てます。
- *-Cs コマンドレットの場合 - 必要な Microsoft Graph API アクセス許可が
Organization.Read.All
。 - 非 *-Cs コマンドレットの場合 - 必要な Microsoft Graph APIアクセス許可は、
Organization.Read.All
、User.Read.All
、Group.ReadWrite.All
、AppCatalog.ReadWrite.All
、TeamSettings.ReadWrite.All
、Channel.Delete.All
、ChannelSettings.ReadWrite.All
、ChannelMember.ReadWrite.All
です。 - 注 - "Skype と Teams テナント 管理 API" の API アクセス許可を構成する必要はありません。 このアクセス許可を構成すると、エラーが発生する可能性があります。
- *-Cs コマンドレットの場合 - 必要な Microsoft Graph API アクセス許可が
- 自己署名証明書を生成します。
- 証明書をMicrosoft Entra アプリケーションにアタッチします。
- Microsoft Entraロールをアプリケーションに割り当てます。 「ロールの 割り当て 」の手順を参照してください。ただし、ユーザーではなくアプリケーションを検索します。
アプリケーションには、適切な RBAC ロールが割り当てられている必要があります。 アプリはMicrosoft Entra IDでプロビジョニングされるため、サポートされている任意の組み込みロールを使用できます。