Überlegungen zur Autorisierung für in Behördenumgebungen gehostete Mandanten in Deutschland, China und den USA
Wenn Ihr Office 365 Mandant in einer bestimmten Umgebung gehostet wird, z. B. in deutschland, china oder US Government-Umgebungen, müssen Sie dies berücksichtigen, wenn Sie für Ihren Mandanten entwickeln.
Gilt für: Office 365, die in der Deutschland-, China- oder US-Regierungsumgebung gehostet werden
Wichtig
Die Verwendung von Azure ACS (Access Control Services) für SharePoint Online wurde am 27. November 2023 eingestellt. Weitere Informationen finden Sie in der Ankündigung zur vollständigen Einstellung. Die Verwendung von Azure ACS außerhalb des SharePoint-Kontexts wurde bereits am 7. November 2018 eingestellt und endet jetzt.
Die Einstellung bedeutet, dass das Feature keine neuen Investitionen erhält, aber weiterhin unterstützt wird. Ende der Lebensdauer bedeutet, dass das Feature nicht mehr zur Verfügung steht.
Einführung
Microsoft verfügt über spezifische Office 365 Bereitstellungen in Deutschland, China und für die US-Regierung, um die spezifischen Vorschriften für diese Bereiche zu erfüllen. Die folgenden Links bieten weiteren Kontext:
Wenn Sie ein Entwickler für Anwendungen für SharePoint Online sind, die in diesen Umgebungen gehostet werden, müssen Sie berücksichtigen, dass diese Umgebungen über eigene dedizierte Azure AD-Authentifizierungsendpunkte verfügen, die Sie als Entwickler verwenden müssen. In den folgenden Kapiteln wird erläutert, wie diese dedizierten Endpunkte für die typischen SharePoint Online-Anpassungsoptionen verwendet werden.
Verwenden von Azure AD zum Autorisieren
Azure AD-Endpunkte
Wenn Ihre Azure AD-Anwendung autorisiert werden muss, muss sie den richtigen Endpunkt verwenden. In der folgenden Tabelle werden die Endpunkte beschrieben, die je nachdem, wo Ihre Azure AD-Anwendung definiert wurde, verwendet werden können:
Umgebung | Endpunkt |
---|---|
Produktion | https://login.windows.net |
Deutschland | https://login.microsoftonline.de |
China | https://login.chinacloudapi.cn |
US-Behörden | https://login.microsoftonline.us |
Verwenden von PnP zur Autorisierung mithilfe von Azure AD
Der PnP AuthenticationManager bietet eine einfache Möglichkeit, ein SharePoint ClientContext-Objekt abzurufen, wenn Sie eine Azure AD-Anwendung verwenden. Die betroffenen Methoden wurden um eine optionale AzureEnvironment
Enumeration erweitert.
/// <summary>
/// Enum to identify the supported Office 365 hosting environments
/// </summary>
public enum AzureEnvironment
{
Production=0,
PPE=1,
China=2,
Germany=3,
USGovernment=4
}
Der folgende Codeausschnitt zeigt eine reine App-Autorisierung. Beachten Sie den letzten Parameter in der GetAzureADAppOnlyAuthenticatedContext
-Methode:
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);
Ein weiterer Codeausschnitt zeigt eine interaktive Benutzeranmeldung mit der GetAzureADNativeApplicationAuthenticatedContext
-Methode:
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);
Verwenden von Azure ACS zum Autorisieren Ihres SharePoint-Add-Ins
Wenn Sie SharePoint-Add-Ins erstellen, erfolgt die Autorisierung in der Regel mit niedriger Vertrauenswürdigkeit, die von Azure ACS abhängig ist, wie unter Erstellen von SharePoint-Add-Ins, die eine Autorisierung mit niedriger Vertrauenswürdigkeit verwenden, beschrieben wird.
Azure ACS-Endpunkte
Umgebung | Endpunktpräfix | Endpunkt |
---|---|---|
Produktion | Konten | accesscontrol.windows.net |
Deutschland | einloggen | microsoftonline.de |
China | Konten | accesscontrol.chinacloudapi.cn |
US-Behörden | Konten | accesscontrol.windows.net |
Bei Verwendung dieses Modells ist die zu verwendende ACS-Endpunkt-URL wie https:// + Endpunktpräfix + / + Endpunkt formatiert. Die URL für die Produktion lautet https://accounts.accesscontrol.windows.netalso , die url für Deutschland lautet https://login.microsoftonline.de.
Aktualisieren von "tokenhelper.cs" in Ihren Anwendungen
Wenn Sie die SharePoint-Add-In-Autorisierung mithilfe von Azure ACS durchführen möchten, verwenden tokenhelper.cs
Sie (oder tokenhelper.vb
). Die tokenhelper-Standardklasse verfügt über hartcodierte Verweise auf die Azure ACS-Endpunkte und -Methoden zum Abrufen des ACS-Endpunkts wie unten gezeigt:
...
private static string GlobalEndPointPrefix = "accounts";
private static string AcsHostUrl = "accesscontrol.windows.net";
...
Tokenhelper.cs-Updates für Deutschland
Aktualisieren Sie die statischen Variablen GlobalEndPointPrefix
und AcsHostUrl
auf die Azure ACS-Werte für Deutschland.
...
private static string GlobalEndPointPrefix = "login";
private static string AcsHostUrl = "microsoftonline.de";
...
Tokenhelper.cs-Updates für China
Aktualisieren Sie die statischen Variablen GlobalEndPointPrefix
und AcsHostUrl
auf die Azure ACS-Werte für China:
...
private static string GlobalEndPointPrefix = "accounts";
private static string AcsHostUrl = "accesscontrol.chinacloudapi.cn";
...
Verwenden von PnP zum Autorisieren Ihres Add-Ins mithilfe von Azure ACS
Der PnP AuthenticationManager bietet eine einfache Möglichkeit, ein SharePoint ClientContext-Objekt abzurufen, wenn Sie Azure ACS für die Autorisierung verwenden. Die betroffenen Methoden wurden um eine optionale AzureEnvironment
Enumeration erweitert.
/// <summary>
/// Enum to identify the supported Office 365 hosting environments
/// </summary>
public enum AzureEnvironment
{
Production=0,
PPE=1,
China=2,
Germany=3,
USGovernment=4
}
Der folgende Codeausschnitt zeigt eine reine App-Autorisierung. Beachten Sie den letzten Parameter in der GetAppOnlyAuthenticatedContext
-Methode:
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);