Freigeben über


Einrichten einer Multi-Geo-Beispielanwendung

Bei der Entwicklung für einen Multi-Geo-Mandanten ist es wichtig, das Sicherheitsmodell zu verstehen. Glücklicherweise ist das modell, das für einen Multi-Geo-Mandanten verwendet wird, dasselbe wie das Modell, das für einen regulären Mandanten verwendet wird.

In diesem Artikel erfahren Sie, wie Sie die folgenden Beispielanwendungen konfigurieren:

Lesen und Aktualisieren von Profilen für alle Benutzer, die die Graph-API

Wie im Artikel Arbeiten mit Benutzerprofilen in einem Multi-Geo-Mandanten erläutert, ist das bevorzugte Modell zum Lesen und Aktualisieren von Benutzerprofileigenschaften das Graph-API. In diesem Abschnitt werden die Berechtigungen erläutert, die Sie Ihrer Anwendung erteilen müssen, um mandantenweite Benutzerprofillesevorgänge und -updates zu realisieren.

Es gibt eine lange Liste möglicher Berechtigungen , die Sie einer in Azure AD definierten Anwendung erteilen können, aber zum Bearbeiten von Profilen können Sie die Berechtigungen auf Folgendes beschränken.

Berechtigung Typ Beschreibung Admin Zustimmung erforderlich
User.ReadWrite.All Anwendungsberechtigung Ermöglicht der App, den vollständigen Satz von Profileigenschaften, Gruppenmitgliedschaften, Berichten und Managern anderer Benutzer in Ihrem organization zu lesen und zu schreiben, ohne dass ein Benutzer angemeldet ist.

Ermöglicht der App auch das Erstellen und Löschen von Benutzern, die keine Administratoren sind.

Das Zurücksetzen von Benutzerkennwörtern ist nicht zulässig.
Ja
Sites.ReadWrite.All Anwendungsberechtigung Ermöglicht der App das Lesen/Schreiben von Dokumenten und das Auflisten von Elementen in allen Websitesammlungen ohne angemeldeten Benutzer.

Diese Berechtigung ist nur erforderlich, wenn die Anwendung den persönlichen Standort des Benutzers abruft (z. B https://graph.microsoft.com/v1.0/users/UserB@contoso.onmicrosoft.com?$select=mySite. ).
Ja

Die Microsoft Graph-basierten Multi-Geo-Beispiele verwenden die Microsoft Authentication Library (MSAL), um eine Verbindung mit Microsoft Graph auf dem v2-Endpunkt herzustellen. Im Vergleich zu ADAL, die eine Verbindung über den v1-Endpunkt herstellt, ermöglicht MSAL eine Verbindung mit Microsoft Graph mithilfe von Microsoft-Konten, Azure AD und Azure AD B2C. Die folgenden Anweisungen helfen Ihnen beim Einrichten Ihrer Anwendung für den v2-Endpunkt, aber Sie können auch den "älteren" Ansatz basierend auf den v1-Endpunkten verwenden.

Registrieren der App

  1. Um Anwendungsberechtigungen für Microsoft Graph zu verwenden, registrieren Sie Ihre Anwendung unter https://apps.dev.microsoft.com.

  2. Nachdem Sie angemeldet sind, wählen Sie App hinzufügen und dann Neue zusammengeführte Anwendung hinzufügen aus.

  3. Geben Sie Ihrer Anwendung einen Namen, und wählen Sie dann Anwendung erstellen aus.

  4. Der Bildschirm für die Anwendungskonfiguration wird angezeigt.

Registrieren der Anwendung in Azure AD

  1. Generieren Sie ein neues Kennwort , und notieren Sie es zusammen mit der Anwendungs-ID.

  2. Wählen Sie Plattform hinzufügen und dann Native Anwendung als Plattformziel aus, da die Anwendung über keine Landing Page verfügt.

Konfigurieren der Anwendung in Azure AD, Teil 1

  1. Fügen Sie die erforderlichen Anwendungsberechtigungen hinzu. In dieser Beispiel-App haben wir die Anwendungsberechtigungen Sites.ReadWrite.All und User.ReadWrite.All hinzugefügt.

  2. Deaktivieren Sie das Kontrollkästchen unterstützung Live SDK.

Konfigurieren der Anwendung in Azure AD, Teil 2

  1. Speichern Sie Ihre Änderungen.
  1. In diesem Beispiel erfordern die Anwendungsberechtigungen User.ReadWrite.All und Sites.ReadWrite.All die Administratoreinwilligung in einem Mandanten, bevor sie verwendet werden können. Erstellen Sie eine Zustimmungs-URL wie die folgende:
https://login.microsoftonline.com/<tenant>/adminconsent?client_id=<clientid>&state=<something>
  1. Verwenden Sie die Client-ID der registrierten App, und stimmen Sie der App von meinem Mandanten contoso.onmicrosoft.com zu. die URL sieht wie folgt aus:
https://login.microsoftonline.com/contoso.onmicrosoft.com/adminconsent?client_id=6e4433ca-7011-4a11-85b6-1195b0114fea&state=12345
  1. Navigieren Sie zur erstellten URL, melden Sie sich als Mandantenadministrator an, und stimmen Sie der Anwendung zu. Sie können sehen, dass auf dem Zustimmungsbildschirm der Name Ihrer Anwendung sowie die von Ihnen konfigurierten Berechtigungsbereiche angezeigt werden.

Mandantengenehmigung für Azure AD-Anwendung

Lesen und Aktualisieren von Profilen für alle Benutzer mithilfe der CSOM-Benutzerprofil-API

Wenn Sie die CSOM-API zum Bearbeiten von Profileigenschaften verwenden, tun Sie dies nur für die benutzerdefinierten erstellten Eigenschaften, da sofort einsatzbereite Eigenschaften besser über die Microsoft Graph-API behandelt werden. Weitere Informationen finden Sie im Artikel Arbeiten mit Benutzerprofilen in einem Multi-Geo-Mandanten.

Aus Berechtigungssicht gibt es zwei Modi:

  • Verwenden von Benutzeranmeldeinformationen

    Dies erfordert die Einrichtung eines ClientContext -Objekts mithilfe der Mandantenadministrator-URL und der SharePoint Online-Administratoranmeldeinformationen. Da nur ein Azure AD-instance Benutzer enthält, bedeutet dies, dass ein SharePoint Online-Administrator der Administrator für alle geografischen Standorte ist.

    string tenantAdminSiteForMyGeoLocation = "https://contoso-europe-admin.sharepoint.com";
    
    using (ClientContext cc = new ClientContext(tenantAdminSiteForMyGeoLocation))
    {
        SecureString securePassword = GetSecurePassword("password");
        cc.Credentials = new SharePointOnlineCredentials("admin@contoso.onmicrosoft.com", securePassword);
    
        // user profile logic
    }
    
    static SecureString GetSecurePassword(string Password)
    {
        SecureString sPassword = new SecureString();
        foreach (char c in Password.ToCharArray()) sPassword.AppendChar(c);
        return sPassword;
    }
    
  • Verwenden eines Nur-App-Prinzipals

    Wenn Sie nur App verwenden, müssen Sie dem erstellten App-Prinzipal Vollzugriff für den http://sharepoint/social/tenant Berechtigungsbereich gewähren.

Die folgenden Anweisungen zeigen, wie Sie appregnew.aspx und appinv.aspx verwenden, um einen App-Prinzipal zu registrieren und diesem zuzustimmen.

Erstellen des Prinzipals

  1. Wechseln Sie zu einer Website in Ihrem Mandanten (z. B https://contoso.sharepoint.com. ), und rufen Sie dann die Seite appregnew.aspx auf (z. B https://contoso.sharepoint.com/_layouts/15/appregnew.aspx. ).

  2. Wählen Sie auf dieser Seite die Schaltfläche Generieren aus, um eine Client-ID und einen geheimen Clientschlüssel zu generieren.

  3. Füllen Sie die verbleibenden Felder wie folgt aus:

  • Titel: Multi-Geo demo
  • App-Domäne: www.localhost.com
  • Umleitungs-URI: https://www.localhost.com

Registrieren des ACS-App-Prinzipals

Hinweis

Speichern Sie die abgerufenen Informationen (Client-ID und geheimer Clientschlüssel), da Sie diese im nächsten Schritt benötigen.

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.

Erteilen von Berechtigungen für den erstellten Prinzipal

Der nächste Schritt besteht darin, dem neu erstellten Prinzipal Berechtigungen zu erteilen. Da wir Mandantenberechtigungen gewähren, kann diese Gewährung nur über die Seite appinv.aspx auf der Mandantenverwaltungswebsite erfolgen.

  1. Sie können diese Website über https://contoso-admin.sharepoint.com/_layouts/15/appinv.aspxerreichen.

  2. Nachdem die Seite geladen wurde, fügen Sie Ihre Client-ID hinzu, und suchen Sie dann nach dem erstellten Prinzipal.

Erteilen von Berechtigungen für App-Prinzipal

  1. Um Berechtigungen zu erteilen, müssen Sie den Berechtigungs-XML-Code angeben, der die erforderlichen Berechtigungen beschreibt. Da der Benutzeroberflächenscanner auf alle Websites zugreifen können muss und die Suche nur mit App verwendet, sind die folgenden Berechtigungen erforderlich:
<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/social/tenant" Right="FullControl" />
</AppPermissionRequests>
  1. Wenn Sie Erstellen auswählen, wird ein Zustimmungsdialogfeld angezeigt. Wählen Sie Vertrauen aus , um die Berechtigungen zu erteilen.

Zustimmung für den App-Prinzipal

Verwenden des Prinzipals in Ihrem Code

Nachdem der Prinzipal erstellt und zugestimmt wurde, können Sie die ID und das Geheimnis des Prinzipals verwenden, um Zugriff anzufordern. Die TokenHelper.cs -Klasse ruft die ID und das Geheimnis aus der Konfigurationsdatei der Anwendung ab.

string tenantAdminSiteForMyGeoLocation = "https://contoso-europe-admin.sharepoint.com";

//Get the realm for the URL.
string realm = TokenHelper.GetRealmFromTargetUrl(siteUri);

//Get the access token for the URL.  
string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUri.Authority, realm).AccessToken;

//Create a client context object based on the retrieved access token.
using (ClientContext cc = TokenHelper.GetClientContextWithAccessToken(tenantAdminSiteForMyGeoLocation, accessToken))
{
    // user profile logic
}

Ein Beispiel app.config sieht wie folgt aus:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <!-- Use AppRegNew.aspx and AppInv.aspx to register client id with proper secret -->
    <add key="ClientId" value="[Your Client ID]" />
    <add key="ClientSecret" value="[Your Client Secret]" />
  </appSettings>
</configuration>

Hinweis

Sie können die TokenHelper.cs -Klasse ganz einfach in Ihr Projekt einfügen, indem Sie der Projektmappe das NuGet-Paket [AppForSharePointOnlineWebToolkit] (https://www.nuget.org/packages/AppForSharePointOnlineWebToolkit/) hinzufügen.

Entdecken der Multi-Geo-Konfiguration

Die einzige unterstützte API, die Sie zum Ermitteln der geografischen Standorte in einem Multi-Geo-Mandanten verwenden können, ist die Graph-API. In diesem Abschnitt werden die Berechtigungen erläutert, die Sie Ihrer Anwendung zum Ermitteln von Multi-Geo-Informationen erteilen müssen.

Es gibt eine lange Liste möglicher Berechtigungen , die Sie einer in Azure AD definierten Anwendung erteilen können. Zum Lesen von Multi-Geo-Mandantenkonfigurationsinformationen können Sie die Berechtigungen jedoch auf Folgendes beschränken.

Berechtigung Typ Beschreibung Admin Zustimmung erforderlich
Sites.ReadWrite.All Anwendungsberechtigung Ermöglicht der App das Lesen/Schreiben von Dokumenten und das Auflisten von Elementen in allen Websitesammlungen ohne angemeldeten Benutzer. Ja

Verwenden Sie die Schritte zum Erstellen von Azure AD-Anwendungen, wie im Abschnitt Lesen/Aktualisieren von Profilen für alle Benutzer beschrieben.

Erstellen und Löschen von Websitesammlungen und Festlegen von Mandantenwebsitesammlungseigenschaften

Verwenden der Microsoft Graph-API

Der Artikel Multi-Geo-Websites enthält weitere Informationen zum Erstellen von Gruppenwebsites (auch als "moderne" Teamwebsites bezeichnet) mithilfe des Microsoft-Graph-API. In diesem Abschnitt behandeln wir nur die Berechtigungen. In der folgenden Tabelle sind die erforderlichen Berechtigungen aufgeführt.

Berechtigung Typ Beschreibung Admin Zustimmung erforderlich
Group.ReadWrite.All Anwendungsberechtigung Die App kann Gruppen erstellen, Gruppenmitgliedschaften lesen und aktualisieren und Gruppen löschen.

Alle diese Vorgänge können von der App ohne angemeldeten Benutzer ausgeführt werden.

Beachten Sie, dass nicht alle Gruppen-APIs Zugriff über Nur-App-Berechtigungen unterstützen.
Ja

Die Microsoft Graph-basierten Multi-Geo-Beispiele verwenden die Microsoft Authentication Library (MSAL), um eine Verbindung mit Microsoft Graph auf dem v2-Endpunkt herzustellen. Im Vergleich zu ADAL, bei der eine Verbindung über den v1-Endpunkt hergestellt wird, ermöglicht MSAL eine Verbindung mit Microsoft Graph mithilfe von Microsoft-Konten, Azure AD und Azure AD B2C.

Verwenden Sie die Schritte zum Erstellen von Azure AD-Anwendungen, wie im Abschnitt Lesen/Aktualisieren von Profilen für alle Benutzer beschrieben.

Verwenden der CSOM-Mandanten-API

Die Verwendung der CSOM-Mandanten-API ähnelt der zuvor beschriebenen CSOM-Anleitung. Die Anleitung für die Verwendung von Benutzeranmeldeinformationen ist in der Tat identisch. Für die Verwendung eines reinen App-Prinzipals sind die Anweisungen identisch, aber Sie müssen unterschiedliche Berechtigungen (Mandant und Vollzugriff) gewähren.

<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
</AppPermissionRequests>

Siehe auch