Рекомендации по авторизации для клиентов, размещенных в средах для государственных организаций Германии, Китая и США
Если клиент Office 365 размещается в определенной среде, например в средах для государственных организаций Германии, Китая или США, при разработке для клиента необходимо учитывать это.
Область применения: Office 365, размещенные в среде правительства Германии, Китая или США
Важно!
Использование Azure ACS (служб контроль доступа) для SharePoint Online прекращено с 27 ноября 2023 г. См. полное объявление о выходе из эксплуатации, чтобы узнать больше. Использование Azure ACS вне контекста SharePoint уже прекращено 7 ноября 2018 г. и сейчас заканчивается.
Прекращение использования означает, что эта функция не получит новых инвестиций, но она по-прежнему поддерживается. Окончание срока службы означает, что эта функция будет прекращена и больше не доступна для использования.
Введение
Корпорация Майкрософт имеет определенные Office 365 развертывания в Германии, Китае и для правительства США для выполнения конкретных правил для этих областей. Дополнительные сведения о контексте приведены ниже по ссылкам:
- Office 365 Germany
- Office 365 управляется компанией 21Vianet (Китай)
- 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 |
Использование PnP для авторизации с помощью Azure AD
PnP AuthenticationManager предоставляет простой способ получения объекта ClientContext SharePoint при использовании приложения Azure AD. Затронутые методы были расширены с помощью необязательного 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);
Другой фрагмент кода показывает интерактивный вход пользователя с помощью 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 они обычно получают авторизацию с низким уровнем доверия, которая зависит от Azure ACS, как описано в разделе Создание надстроек SharePoint, использующих авторизацию с низким уровнем доверия.
Конечные точки Azure ACS
Среда | Префикс конечной точки | Конечная точка |
---|---|---|
Производство | учетные записи | accesscontrol.windows.net |
Германия | Входа | microsoftonline.de |
Китай | учетные записи | accesscontrol.chinacloudapi.cn |
Государственные учреждения США | учетные записи | accesscontrol.windows.net |
При использовании этой модели ИСПОЛЬЗУЕМЫй URL-адрес конечной точки ACS имеет следующий формат: https:// + префикс конечной точки + / + конечная точка. Таким образом, URL-адрес для рабочей среды будет иметь https://accounts.accesscontrol.windows.netзначение , а для Германии — https://login.microsoftonline.de.
Обновление tokenhelper.cs в приложениях
Если вы хотите выполнить авторизацию надстройки SharePoint с помощью Azure ACS, вы используете tokenhelper.cs
(или tokenhelper.vb
). Класс tokenhelper по умолчанию будет иметь жестко заданные ссылки на конечные точки Azure ACS и методы для получения конечной точки ACS, как показано ниже.
...
private static string GlobalEndPointPrefix = "accounts";
private static string AcsHostUrl = "accesscontrol.windows.net";
...
Обновления Tokenhelper.cs для Германии
Обновите статические переменные GlobalEndPointPrefix
и AcsHostUrl
до значений Azure ACS для Германии.
...
private static string GlobalEndPointPrefix = "login";
private static string AcsHostUrl = "microsoftonline.de";
...
Обновления Tokenhelper.cs для Китая
Обновите статические переменные GlobalEndPointPrefix
и AcsHostUrl
до значений Azure ACS для Китая:
...
private static string GlobalEndPointPrefix = "accounts";
private static string AcsHostUrl = "accesscontrol.chinacloudapi.cn";
...
Использование PnP для авторизации надстройки с помощью Azure ACS
PnP AuthenticationManager предоставляет простой способ получения объекта SharePoint ClientContext при использовании Azure ACS для авторизации. Затронутые методы были расширены с помощью необязательного 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);