Verwendung von Sharepoint (Anwendung)

NOTE: Bei Projekten, die den Sharepoint von Adobe verwenden, fahren Sie bitte fort. here.

Wenn Sie SharePoint als Inhaltsquelle verwenden, verwendet AEM eine registrierte Microsoft Azure-Anwendung, um auf Ihre Inhalte zuzugreifen. Diese Anwendung hat delegierte Berechtigungen definiert wurde, die den Zugriff des Dienstes auf SharePoint im Namen eines Benutzers ermöglichen. Dieser Benutzer muss bei dem Projekt registriert sein, das SharePoint verwendet.

Alternativ können die Dienste auch als Anwendung authentifiziert und Anwendungsberechtigungen , um auf die Sites zuzugreifen. Dies erfordert eine zusätzliche Einrichtung durch einen SharePoint-Site-Administrator, der die Berechtigungen für die Anwendung erteilen kann.

Die bevorzugte Einrichtung ist die Verwendung von Anwendungsberechtigungen, da dadurch der Zugriff des Dienstes auf eine bestimmte SharePoint-Site eingeschränkt wird und keine Geheimnisse für einen technischen Anwender freigegeben werden müssen. Außerdem werden die Probleme im Zusammenhang mit der Passwortrotation reduziert.

Im Folgenden wird beschrieben, wie Sie Anwendungsberechtigungen für Ihr Projekt. Wenn Sie einen technischen Benutzer einrichten möchten, fahren Sie bitte mit dem here.

Das Einrichten von SharePoint umfasst die folgenden Schritte:

  1. Erstellen oder Identifizieren einer Sharepoint-Site, die als Site für die dokumentbasierte Bearbeitung dient
  2. Erstellen Sie in SharePoint einen Ordner, der dem Website-Stamm entspricht.
  3. Konfigurieren Sie die fstab.yaml mit dem entsprechenden Ordner
  4. Zugriff auf das Registrierungsportal
  5. Registrieren der Anwendung
  6. Wenden Sie die sites.selected Berechtigung für die SharePoint-Site

1. Erstellen oder Identifizieren einer Sharepoint-Site

Wenden Sie sich an Ihre IT-Abteilung, um eine Sharepoint-Site zu identifizieren oder zu erstellen, die für die dokumentbasierte Bearbeitung verwendet wird. Eine Site kann mehrere Websites (Projekte) "hosten". Diese Website erhält später die entsprechenden Berechtigungen, damit die Veröffentlichungsdienste darauf zugreifen können.

2. Erstellen des Stammordners der Website

Navigieren Sie zu Ihrem gewünschten Speicherort auf der oben erstellten oder identifizierten SharePoint-Site und erstellen Sie einen Stammordner für Ihre Website. Es empfiehlt sich, keinen SharePoint-Listenstamm direkt zu verwenden, damit Sie über einen freigegebenen Speicherplatz für Ihre Autoren verfügen, um Begleitdokumente wie beispielsweise einen Ordner "Entwürfe"oder eine Anleitungsdokumentation zu erstellen.

Eine Beispieldateistruktur könnte wie folgt aussehen, indem Sie die website Ordner als Stamm:

3. Konfigurieren Sie fstab.yaml

Der nächste Schritt besteht darin, den Bereitstellungspunkt im fstab.yaml , um auf den Website-Stamm zu verweisen. Sie hat normalerweise die Form

https://<tenant>.SharePoint.com/sites/<sp-site>/Shared%20Documents/website

Dies kann jedoch davon abhängen, wie Sie die SharePoint-Site und -Listen erstellen. Um die URL zu erhalten, ist die einfachste Möglichkeit, den ersten Teil aus der Browser-Adresse zu kopieren und einzufügen, z. B.:

Fügen Sie dann den Rest manuell hinzu (Beachten Sie, dass durch Kopieren des Sharelink über die Benutzeroberfläche unnötige Informationen hinzugefügt werden und es besser ist, eine kanonische Darstellung der URL zu verwenden). Nachdem Sie die URL erstellt haben, können Sie sie testen, indem Sie sie erneut im Browser eingeben. Sie sollten sich in der Ordneransicht Ihres Website-Stamms befinden.

Danach aktualisieren Sie die fstab.yaml entsprechend.

Zum Beispiel:

mountpoints:
  /: https://adobeenterprisesupportaem.SharePoint.com/sites/hlx-test-project/Shared%20Documents/website

Um die Konfiguration abzuschließen, müssen Sie die fstab.yaml zurück zum Hauptzweig.

4. Zugriff auf das Registrierungsportal

Überblick

Damit der AEM-Dienst auf die erstellten Inhalte zugreifen kann, benötigt er einige Informationen und Konfigurationen. Der AEM-Dienst (eine Cloud-Funktion) greift auf die MS Graph-API im Namen einer Anwendung (oder eines konfigurierten Benutzers). Dazu muss sie sich zunächst im Kontext einer Anwendung. Dies ist wichtig, da die der Anwendung übergebenen Perimeter definieren, welche Berechtigung der Dienst für die MS Graph-API hat. Beispielsweise sollte es erlaubt sein, Dokumente zu lesen und zu schreiben, aber nicht die Zugriffskontrolle zu ändern.

Eine Anwendung wird im entsprechenden Active Directory eines Mandanten als "Enterprise Application"dargestellt. Die Berechtigungen, die dieser Unternehmensanwendung erteilt werden, definieren letztendlich, was der Dienst in den Ressourcen dieses Mandanten aufrufen kann. Bestimmte Berechtigungen müssen von einem Active Directory-Administrator genehmigt werden, bevor ein Benutzer die Anwendung verwenden kann. Diese so genannte "Admin-Zustimmung"ist ein Mechanismus zur Überprüfung und Kontrolle der Berechtigungen, die Apps haben können. Dadurch soll verhindert werden, dass zweifelhafte Apps Benutzer dazu verleiten, einer nicht offiziellen App zu vertrauen. Durch den zusätzlichen Schritt zur Admin-Zustimmung kann IT-Sicherheit steuern, welche Apps die Mitarbeiter verwenden können.

1. Anmelden im Registrierungsportal

Spalten (enthalten)

<h3>Anzeigen von Enterprise-Anwendungen in Azure Portal</h3>

Wenn bisher keine Franklin Enterprise Applications in Azure (Microsoft Entra Id) vorhanden sind

<h3>Zugriff auf Franklin Registration Portal</h3>

Navigieren Sie zu https://admin.hlx.page/register, geben Sie die github-URL des Projekts ein.

<h3>Als Benutzer ohne Administratorrechte anmelden</h3>

Anmelden als Benutzer, der nicht über Administratorberechtigungen verfügen, wird ein Fehler angezeigt, der eine Genehmigung erforderlich macht, d. h. die Anwendung muss die Zustimmung des Administrators erhalten.

Problem: Enterprise Application wird nicht registriert, wenn sich ein Benutzer nie anmeldet.

<h3>Als Admin-Benutzer anmelden</h3>

Eine Lösung besteht darin, sich als Benutzer anzumelden, der does über Administratorberechtigungen verfügen:

(Beachten Sie, dass die Unternehmensanwendung zu diesem Zeitpunkt noch nicht in Azure registriert ist)

<h3>Franklin Registration Service in der Benutzeroberfläche sichtbar</h3>

Wenn sich der Administrator anmeldet (ohne das Kontrollkästchen zu aktivieren und die Zustimmung für alle zu erteilen), ist die Enterprise-Anwendung vorhanden.

Erstellen einer Anwendung mit MSGraph oder Powershell

Alternativ können Sie die Enterprise-Anwendung über MSGraph oder Powershell erstellen.

Um es in der Azure-Benutzeroberfläche sichtbar zu machen, müssen Sie auch die WindowsAzureActiveDirectoryIntegratedApp -Tag. Dies kann direkt beim Erstellen der Anwendung erfolgen.

Verwenden des Graph-Explorer:

POST https://graph.microsoft.com/v1.0/servicePrincipals
Content-type: application/json
{
    "appId": "e34c45c4-0919-43e1-9436-448ad8e81552",
    "tags": [
        "WindowsAzureActiveDirectoryIntegratedApp"
    ]
}

Verwenden von powershell:

PS> connect-MgGraph -Scopes "Application.ReadWrite.All"
PS> New-MgServicePrincipal -AppId e34c45c4-0919-43e1-9436-448ad8e81552 -Tags WindowsAzureActiveDirectoryIntegratedApp
Spalten (enthalten)

Danach müssen Sie noch die Admin-Zustimmung erteilen, wenn Sie möchten, dass sich ein Benutzer ohne Administratorrechte anmeldet.

Siehe auch:

<h3>Berechtigungen überprüfen</h3>

Beachten Sie Folgendes: Franklin Registration Service (e34c45c4-0919-43e1-9436-448ad8e81552) -Anwendung wird nur während der Registrierung benötigt, um zu überprüfen, ob der Benutzer Lesezugriff auf den Sharepoint hat. Sie weist Folgendes auf: delegierte Berechtigungen:

  • Openid
    Ermöglicht Benutzern, sich mit ihren Arbeits- oder Schulkonten bei der App anzumelden und der App die Anzeige grundlegender Benutzerprofilinformationen zu ermöglichen.
  • Profile
    Ermöglicht der App, das grundlegende Profil Ihrer Benutzer anzuzeigen (z. B. Name, Bild, Benutzername, E-Mail-Adresse)
  • Files.ReadWrite.All
    Ermöglicht dem Programm das Lesen, Erstellen, Aktualisieren und Löschen aller Dateien, auf die der angemeldete Benutzer zugreifen kann.

<h3>Benutzer im Registrierungsportal angemeldet</h3>

Nach Abschluss dieses ersten Schritts wird der Benutzer im Registrierungsportal angemeldet

Hinzufügen des Franklin-Dienstes mit Anwendungsberechtigungen

Spalten (enthalten)

<h3>Enterprise Application hinzufügen</h3>

Wenn Sie im Registrierungsportal angemeldet sind, muss die vom Projekt verwendete Inhaltsquelle mit einem Authentifizierungszuschuss für die Franklin Service Anwendung. Dies ist erforderlich, damit das System auf die Dokumente im Sharepoint zugreifen und sie in ein internes Format (Markdown) konvertieren und sie zur schnellen Bereitstellung im Adobe-Speicher (S3/R2) speichern kann.

Anwendung verwenden sites.selected -Berechtigungen sind sicherer, da sie den Umfang auf eine einzelne Sharepoint-Site beschränken. Um eine Verbindung herzustellen, klicken Sie auf die Connect Application Schaltfläche.

Wenn Sie noch nie eine Anwendung oder einen Benutzer registriert haben, wird Ihnen wahrscheinlich der folgende Fehler angezeigt:

code language-none
Unable to validate access: Either scp or roles claim need to be present in the token.

Wie oben beschrieben, die Enterprise-Anwendung für die Franklin Service (83ab2922-5f11-4e4d-96f3-d1e0ff152856) ist noch nicht in Azure vorhanden,

Verwenden Sie zum Hinzufügen den Graph-Explorer oder die Powershell, um ihn hinzuzufügen:

Verwenden des Graph-Explorer:

POST https://graph.microsoft.com/v1.0/servicePrincipals
Content-type: application/json
{
    "appId": "83ab2922-5f11-4e4d-96f3-d1e0ff152856",
    "tags": [
        "WindowsAzureActiveDirectoryIntegratedApp"
    ]
}

Verwenden von powershell:

PS> connect-MgGraph -Scopes "Application.ReadWrite.All"
PS> New-MgServicePrincipal -AppId 83ab2922-5f11-4e4d-96f3-d1e0ff152856 -Tags WindowsAzureActiveDirectoryIntegratedApp

Siehe auch:

Spalten (enthalten)

<h3>Anwendungsrollen hinzufügen</h3>

Jetzt die Unternehmensanwendung Franklin Service ist in azure sichtbar. Aber es gibt keine Sites.Selected Anwendungsberechtigungen.

Problem: Die Verwendung der Benutzeroberfläche für die Admin-Zustimmung würde allen Anwendungen und delegierten Berechtigungen gewähren, die wir nicht möchten.

Eine einfache Möglichkeit besteht darin, allen Berechtigungen zuzustimmen und dann die delegierten Berechtigungen erneut zu entfernen.

Hinzufügen von Anwendungsrollen mit Powershell oder Graph Explorer

Alternativ können Sie die App-Rollen mit den folgenden Schritten hinzufügen:

  1. Suchen Sie den Dienstprinzipal der Unternehmensanwendung (principalId). Dies ist die, die Sie oben erstellt haben.
  2. Suchen Sie den Dienstprinzipal der Microsoft Graph-API (resourceId)
  3. Suchen Sie die ID für die Sites.Selected Anwendungsrolle (appRoleId)
  4. Zuweisen der Anwendungsrolle zur verwalteten Identität (der Unternehmensanwendung)

Verwenden powershell Dies kann folgendermaßen erfolgen:

$ObjectId = "abcdef-1234-49b6-b660-cc85b34fe516"    <<------ replace with your enterprise app id
$AAD_SP = Get-AzureADServicePrincipal -SearchString "Microsoft Graph";
$AAD_SP

$MSI = Get-AzureADServicePrincipal -ObjectId $ObjectId
if($MSI.Count -gt 1)
  {
  Write-Output "More than 1 principal found, please find your principal and copy the right object ID. Now use the syntax $MSI = Get-AzureADServicePrincipal -ObjectId <your_object_id>"
  Exit
  }

$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "Sites.Selected"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  -ResourceId $AAD_SP.ObjectId[0]  -Id $AAD_AppRole.Id

Verwenden Diagrammexplorer Es umfasst mehr Schritte:

  1. Suchen Sie den Prinzipal der Unternehmensanwendung:
  GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '83ab2922-5f11-4e4d-96f3-d1e0ff152856'
...
  "value": [
        {
            "id": "6761ada0-733b-4a02-98b2-3db970834fe0",
...

Dies wird unser principalId

  1. Suchen des Dienstprinzipals der Microsoft Graph-API
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '00000003-0000-0000-c000-000000000000'
...
  "value": [
        {
            "id": "5159db96-7193-414e-9730-b1d1e4448443",
...

Dies ist die resourceId. (die Ressource, die die Anwendungsrolle definiert)

  1. Suchen Sie die ID der Anwendungsrolle.
GET https://graph.microsoft.com/v1.0/servicePrincipals/5159db96-7193-414e-9730-b1d1e4448443/appRoles
...
        {
            "allowedMemberTypes": [
                "Application"
            ],
            "description": "Allow the application to access a subset of site collections without a signed in user.  The specific site collections and the permissions granted will be configured in SharePoint Online.",
            "displayName": "Access selected site collections",
            "id": "883ea226-0bf2-4a8f-9f9d-92c9162a727d",
            "isEnabled": true,
            "origin": "Application",
            "value": "Sites.Selected"
        },
...

Diese ID ist die appRoleId

  1. Weisen Sie die Anwendungsrolle der verwalteten Identität zu. Die Anfrage hat das folgende Format:
POST https://graph.microsoft.com/v1.0/servicePrincipals/${principalId}/appRoleAssignedTo
Content-Type: application/json

{
  "principalId": "${principalId}",
  "resourceId": "${resourceId}",
  "appRoleId": "${appRoleId}"
}
https://graph.microsoft.com/v1.0/servicePrincipals/6761ada0-733b-4a02-98b2-3db970834fe0/appRoleAssignedTo
Content-type: application/json
{
    "principalId": "6761ada0-733b-4a02-98b2-3db970834fe0",
    "resourceId": "5159db96-7193-414e-9730-b1d1e4448443",
    "appRoleId": "883ea226-0bf2-4a8f-9f9d-92c9162a727d"
}
Spalten (enthalten)

<h3>Berechtigungen überprüfen</h3>

Schließlich sollten Sie die erteilte Anwendungsberechtigung in der Benutzeroberfläche sehen.

Zurück im Registrierungsportal hätte sich die ändern müssen in:

code language-none

The resource specified in the fstab.yaml does either not exist, or you do not have permission to access it. Please make sure that the url is correct, the enterprise application: "Franklin Service (83ab2922-5f11-4e4d-96f3-d1e0ff152856)" is consented for the required scopes, and that the logged in user has permissions to access it.

(Beachten Sie, dass diese Nachricht zum Zeitpunkt der Erstellung nicht sehr genau ist, sie sollte wie folgt lauten:

Die in der Datei fstab.yaml angegebene Ressource ist entweder nicht vorhanden oder Sie haben keine Zugriffsberechtigung. Stellen Sie sicher, dass die URL richtig ist, die Unternehmensanwendung: "Franklin Service (83ab2922-5f11-4e4d-96f3-d1e0ff152856)"wird für den Zugriff auf die konfigurierte Sharepoint-Site über die Berechtigungen "Sites.Selected"gewährt.


Berechtigungen zur Sharepoint Site hinzufügen

Um die Berechtigungen zur Sharepoint-Site hinzuzufügen, müssen wir dessen SiteId.

Dies kann mithilfe des Diagrammexplorers erneut durchgeführt werden:

GET https://graph.microsoft.com/v1.0/sites/{host-name}:/{server-relative-path}

Beispiel:

GET https://graph.microsoft.com/v1.0/sites/adobeenterprisesupportaem.sharepoint.com:/sites/hlx-test-project

{
...
    "id": "adobeenterprisesupportaem.sharepoint.com,03cc3587-0e4d-405e-b06c-ffb0a622b7ac,5fbc1df5-640c-4780-8b59-809e3193c043",
...
}

Verwenden der Id können wir Berechtigungen festlegen:

POST https://graph.microsoft.com/v1.0/sites/adobeenterprisesupportaem.sharepoint.com,03cc3587-0e4d-405e-b06c-ffb0a622b7ac,5fbc1df5-640c-4780-8b59-809e3193c043/permissions
Content-type: application/json

{
    "roles": [
        "write"
    ],
    "grantedToIdentities": [
        {
            "application": {
                "id": "83ab2922-5f11-4e4d-96f3-d1e0ff152856",
                "displayName": "Franklin Service"
            }
        }
    ]
}
Spalten (enthalten)
Danach sollte das Registrierungsportal canRead: ok
recommendation-more-help
10a6ce9d-c5c5-48d9-8ce1-9797d2f0f3ec