ドイツ、中国、または米国政府機関の環境でホストされているテナントの承認考慮事項
これは、Office 365 テナントがドイツ、中国、または米国政府機関の環境などの特定の環境でホストされている場合、テナントに対して開発を行うときに考慮する必要があります。
適用対象:ドイツ、中国、または米国政府機関の環境でホストされている Office 365
重要
SharePoint Online 用の Azure ACS (Access Control Services) の使用は、2023 年 11 月 27 日の時点で廃止されました。詳細については、完全な廃止のお知らせをご覧ください。 SharePoint のコンテキストの外部で Azure ACS を使用することは、2018 年 11 月 7 日に既に廃止されており、現在は終了です。
廃止とは、機能が新しい投資を受け取ることを意味しますが、まだサポートされています。 有効期間が終了すると、この機能は廃止され、使用できなくなります。
概要
Microsoft では、ドイツ、中国、および米国政府機関において特定の Office 365 を展開して、これらの分野特有の規制を満たしています。 以下のリンクから詳細な内容を参照できます。
これらの環境でホストされている SharePoint Online のアプリケーションをターゲットとしている開発者である場合、これらの環境には開発者として使用する必要がある専用の Azure AD 認証エンドポイントがあることを考慮する必要があります。 以下の章では、標準的な SharePoint Online のカスタマイズ オプションに対して、これらの専用エンドポイントを使用する方法について説明します。
Azure AD を使用して承認する
Azure AD エンドポイント
Azure AD アプリケーションが認証する必要がある場合は、正しいエンドポイントを使用する必要があります。 以下の表は、Azure AD アプリケーションが定義されている場所に応じて使用するエンドポイントを示しています。
環境 | エンドポイント |
---|---|
運用 | https://login.windows.net |
ドイツ | https://login.microsoftonline.de |
中国 | https://login.chinacloudapi.cn |
米国政府機関 | https://login.microsoftonline.us |
Azure AD による承認に PnP を使用する
PnP AuthenticationManager には、Azure AD アプリケーションを使用している場合に SharePoint ClientContext オブジェクトを簡単に取得する方法が用意されています。 影響を受けるメソッドは、オプションの AzureEnvironment
列挙型で拡張されています。
/// <summary>
/// Enum to identify the supported Office 365 hosting environments
/// </summary>
public enum AzureEnvironment
{
Production=0,
PPE=1,
China=2,
Germany=3,
USGovernment=4
}
以下のスニペットは、アプリ専用の承認を示しています。GetAzureADAppOnlyAuthenticatedContext
メソッドの最後のパラメーターをご確認ください。
string siteUrl = "https://contoso.sharepoint.de/sites/test";
string aadAppId = "079d8797-cebc-4cda-a3e0-xxxx";
string pfxPassword = "my password";
ClientContext cc = new AuthenticationManager().GetAzureADAppOnlyAuthenticatedContext(siteUrl,
aadAppId, "contoso.onmicrosoft.de", @"C:\contoso.pfx", pfxPassword, AzureEnvironment.Germany);
もう 1 つのスニペットは、GetAzureADNativeApplicationAuthenticatedContext
メソッドを使用した対話型ユーザー ログインを示しています。
string siteUrl = "https://contoso.sharepoint.de/sites/test";
string aadAppId = "ff76a9f4-430b-4ee4-8602-xxxx";
ClientContext cc = new AuthenticationManager().GetAzureADNativeApplicationAuthenticatedContext(siteUrl,
aadAppId, "https://contoso.com/test", environment: AzureEnvironment.Germany);
Azure ACS を使用して SharePoint アドインを承認する
SharePoint アドイン を作成すると、「低信頼の承認を使用する SharePoint アドインの作成」で説明されているように、通常、それらは Azure ACS に依存する低信頼の承認になります。
Azure ACS エンドポイント
環境 | エンドポイント プレフィックス | エンドポイント |
---|---|---|
運用 | アカウント | accesscontrol.windows.net |
ドイツ | ログイン | microsoftonline.de |
中国 | アカウント | accesscontrol.chinacloudapi.cn |
米国政府機関 | アカウント | accesscontrol.windows.net |
このモデルを使用すると、使用する ACS エンドポイント URL は https:// + エンドポイント プレフィックス + / + エンドポイントのように書式設定されます。 そのため、運用の URL は https://accounts.accesscontrol.windows.net、ドイツの場合は https://login.microsoftonline.de になります。
アプリケーションでの tokenhelper.cs の更新
Azure ACS を使用して SharePoint アドイン承認を行う場合は、tokenhelper.cs
(または tokenhelper.vb
) を使用しています。 既定の tokenhelper クラスには、以下に示すように Azure ACS エンドポイントへのハードコードされた参照と ACS エンドポイントを取得するためのメソッドが含まれます。
...
private static string GlobalEndPointPrefix = "accounts";
private static string AcsHostUrl = "accesscontrol.windows.net";
...
ドイツの場合の Tokenhelper.cs の更新
静的変数 GlobalEndPointPrefix
と AcsHostUrl
を Germany Azure ACS の値に更新します。
...
private static string GlobalEndPointPrefix = "login";
private static string AcsHostUrl = "microsoftonline.de";
...
中国の場合の Tokenhelper.cs の更新
静的変数 GlobalEndPointPrefix
と AcsHostUrl
を China Azure ACS の値に更新します。
...
private static string GlobalEndPointPrefix = "accounts";
private static string AcsHostUrl = "accesscontrol.chinacloudapi.cn";
...
Azure AD によるアドインの承認に PnP を使用する
PnP AuthenticationManager には、承認に Azure ACS を使用している場合に SharePoint ClientContext オブジェクトを簡単に取得する方法が用意されています。 影響を受けるメソッドは、オプションの AzureEnvironment
列挙型で拡張されています。
/// <summary>
/// Enum to identify the supported Office 365 hosting environments
/// </summary>
public enum AzureEnvironment
{
Production=0,
PPE=1,
China=2,
Germany=3,
USGovernment=4
}
以下のスニペットは、アプリ専用の承認を示しています。GetAppOnlyAuthenticatedContext
メソッドの最後のパラメーターをご確認ください。
string siteUrl = "https://contoso.sharepoint.de/sites/test";
string acsAppId = "955c10f2-7072-47f8-8bc1-xxxxx";
string acsAppSecret = "jgTolmGXU9DW8hUKgletoxxxxx";
ClientContext cc = new AuthenticationManager().GetAppOnlyAuthenticatedContext(siteUrl, acsAppId,
acsAppSecret, AzureEnvironment.Germany);