ソブリン クラウドは、地域のデータ プライバシー規制に準拠するために、特定の国または地域内で動作するように設計されています。 認証、トークン サービス、ボット通信に異なるサービス エンドポイントを持つ個別の Azure インフラストラクチャを使用します。
Teams は、次の主権クラウド環境をサポートします。
- 米国政府機関 (GCC-High): 管理された非機密情報を扱う米国政府機関および請負業者向け。
- 米国政府 (DoD): 米国国防総省向け。
- 中国 (21Vianet): 中国市場向けで、国内/地域最大のサービス プロバイダーである 21Vianet が運営および管理しています。
注:
アプリが標準の商用 (パブリック) クラウドで実行される場合、追加のソブリン クラウド構成は必要ありません。
サポートされているクラウド
次の表に、サポートされているクラウド環境と、関連するポータルと Teams クライアントを示します。
| クラウド | 値 | Azure portal | Teams クライアント |
|---|---|---|---|
| パブリック (既定) | Public |
portal.azure.com | teams.microsoft.com |
| US Gov (GCC-High) | USGov |
portal.azure.us | gov.teams.microsoft.us |
| US Gov (DoD) | USGovDoD |
portal.azure.us | dod.teams.microsoft.us |
| 中国 (21Vianet) | China |
portal.azure.cn | teams.microsoftonline.cn |
前提条件
ソブリン クラウドにボットまたはエージェントをデプロイするには、次のものが必要です:
- 対応するクラウド環境内の Teams テナント。
- 一致するソブリン クラウド ポータルで作成された Azure ボット リソースとアプリの登録。
ソブリン クラウド用にアプリを構成する
クラウド環境を指定すると、Teams SDK によって主権クラウド構成が自動的に処理されます。
CLOUD 環境変数を既存のアプリ認証構成に追加します。
有効な値: Public、 USGov、 USGovDoD、 China
appsettings.json を使用した構成
{
"Teams": {
"ClientId": "your-client-id",
"ClientSecret": "your-client-secret",
"TenantId": "your-tenant-id",
"Cloud": "USGov"
}
}
プログラムによる構成
var app = new App(new AppOptions
{
Cloud = CloudEnvironment.USGov,
Credentials = new ClientCredentials("client-id", "client-secret")
});
使用可能なクラウド プリセット: CloudEnvironment.Public、 CloudEnvironment.USGov、 CloudEnvironment.USGovDoD、 CloudEnvironment.China
エンドポイントごとのオーバーライド
テナント固有のログイン URL を必要とする中国のシングルテナント ボットなど、個々のエンドポイントのカスタマイズが必要なシナリオでは、特定のプロパティをオーバーライドできます。
{
"Teams": {
"Cloud": "China",
"LoginTenant": "your-tenant-id"
}
}
使用可能なオーバーライド プロパティ: LoginEndpoint、 LoginTenant、 BotScope、 TokenServiceUrl、 OpenIdMetadataUrl、 TokenIssuer、 GraphScope
SDK が自動的に構成する内容
クラウド環境を設定すると、SDK は次の目的に対して適切なエンドポイントを自動的に使用します。
-
ログイン機関: トークンを取得する場所 (GCC-High の
login.microsoftonline.usなど)。 - ボット トークン スコープ: ボットからサービスへの通信の OAuth スコープ。
- トークン サービス URL: ユーザーの OAuth トークンが管理される場所。
- JWT 検証: 受信アクティビティ トークンの検証に使用される署名キーと発行者。
- OpenID メタデータ: トークン検証設定の検出エンドポイント。
これらのエンドポイントを個別に構成する必要はありません。
21Vianet が運営するチーム
21Vianet が運用する Microsoft 365 は、中国専用に調整されており、 21Vianet が運用する Microsoft Teams をホストしています。 21Vianet が運用する Teams を展開するには、適切なプランを購入する必要があります。 詳細については、「21Vianet が運用する Office 365 プラン」を参照してください。
アプリ、機能、エクスペリエンス
次の表は、21Vianet が運用する Teams でサポートされているアプリとその機能の詳細です。
| 21Vianet が運営するチーム | |
|---|---|
| アプリ | |
| Microsoft が開発したアプリ | ✔️ |
| サードパーティ製アプリ | ❌ |
| 組織向けにビルドされたカスタム アプリ (LOB アプリ) 特定の組織で配布および使用 organization | ✔️ |
| カスタム アプリをアップロード | ❌ |
| アプリの機能 | |
| タブ | ✔️ |
| ボット | ❌ |
| メッセージ拡張機能 | ❌ |
| メッセージの操作 | ❌ |
| カード: アダプティブ、ヒーロー、サムネイル、Microsoft 365 コネクタ、領収書、サインイン、OAuth カード | ❌ |
| ダイアログ (TeamsJS v1.x ではタスク モジュールと呼ばれています) | ✔️ |
| リンク展開 | ❌ |
| ミーディング拡張機能 | ❌ |
| コネクタと Webhook | ❌ |
| ワークフロー | ❌ |
| エクスペリエンス | |
| Teams ストア | ✔️ |
| コンテキスト内の Teams ストアまたはアプリのポップアップ | ✔️ |
| Teams でアプリを管理する | ✔️ |
| Teams 管理センターでアプリを管理する | ✔️ |
| グラフ API | ✔️ |
| Teams の開発者ポータル | ❌ |
サービスと可用性
Teams で使用できる機能は、購入した Microsoft 365 プランによって異なります。 詳細については、「21Vianet が運営する Teams での 機能の可用性 」を参照してください。
ソブリン クラウドの問題のトラブルシューティング
ボットが起動時にトークンの取得に失敗する
症状: SDK は、アプリの起動時に AADSTS500011 (リソース プリンシパルが見つからない) または AADSTS700016 (ディレクトリ内にアプリケーションが見つかりません) を記録します。
原因: ボットのアプリの登録が間違ったクラウドのテナントにある。 ソブリン クラウドにはパブリック クラウドとは別の Microsoft Entra ID インスタンスがあり、商用クラウドに登録されたアプリはソブリン テナントに対して認証できません (その逆も同様です)。
修正:Cloud設定に一致するボットをソブリン クラウド ポータルに登録します。 US Gov/DoD の場合は、 portal.azure.us を使用します。 中国の場合は portal.azure.cn を使用します。
受信アクティビティは、発行者の不一致または対象ユーザーが無効で拒否されます
症状: 受信 /api/messages 要求でトークン検証が失敗します。 ログに IDX10204 または IDX10214 が表示されます。
原因: ボットが間違ったクラウド用に構成されているため、JWT バリデーターは、主権ボット チャネル サービスが使用する発行者とは異なる発行者によって署名されたトークンを想定しています。
修正:Cloud設定が、Azure Bot リソースが作成されたクラウドと一致していることを確認します。
中国のボット (21Vianet)
21Vianet が運営するチームでは、ボットやユーザーの OAuth フローはサポートされていません。 中国のテナントの場合は、この記事で後述するサポートされる機能 (タブなど) を使用してビルドします
CLOUD 環境変数が無視されているようです
症状:CLOUD=USGovを設定しても、ボットはパブリック クラウドのエンドポイントを使用します。
原因: 環境変数が実行中のプロセスで設定されていないか、コードで明示的に Cloud が渡され、どちらかが優先されます。
修正:環境変数がプロセス環境にエクスポートされていることを確認し、コードがCloudを明示的に渡すかどうかをチェックします。 コードで渡される値が環境変数よりも優先されます。
次の手順
クラウド環境を構成すると、ボットは適切なソブリン クラウド エンドポイントを使用して認証と通信を行います。 その他のコード変更は必要ありません。OAuth フローとその他すべての SDK 機能は、クラウド間で同じように動作します。
関連項目
Platform Docs