Utilisation de SharePoint (application)

REMARQUE: pour les projets qui utilisent SharePoint d’Adobe, continuez. here.

Si vous utilisez SharePoint comme source de contenu, AEM utilise une application Microsoft Azure enregistrée pour accéder à votre contenu. Cette application comporte autorisations déléguées défini qui permet au service d’accéder à SharePoint au nom d’un utilisateur. Cet utilisateur doit être enregistré dans le projet qui utilise SharePoint.

Les services peuvent également s’authentifier en tant qu’application et utiliser autorisations d’application pour accéder aux sites. Cela nécessite une configuration supplémentaire par un administrateur de site SharePoint qui peut accorder les autorisations pour l’application.

La configuration recommandée consiste à utiliser autorisations d’application, car cela limite l’accès du service à un site SharePoint spécifique et n’a pas besoin de partager les secrets d’un utilisateur technique. Cela permet également de réduire les problèmes liés à la rotation des mots de passe.

La section suivante décrit la configuration autorisations d’application pour votre projet. Si vous souhaitez configurer un utilisateur technique, continuez. here.

La configuration de SharePoint comprend les étapes suivantes :

  1. Créer ou identifier un site SharePoint qui servira de site pour la création basée sur les documents
  2. Créez un dossier dans SharePoint qui sera la racine du site web.
  3. Configurez la variable fstab.yaml avec le dossier correspondant
  4. Accès au portail d’enregistrement
  5. Enregistrement de l’application
  6. Appliquez la variable sites.selected autorisation d’accès au site SharePoint

1. Créer ou identifier un site SharePoint

Contactez votre service informatique pour identifier ou créer un site SharePoint qui sera utilisé pour la création basée sur les documents. Un site peut "héberger" plusieurs sites web (projets). Ce site recevra ultérieurement les autorisations respectives pour que les services de publication puissent y accéder.

2. Créez le dossier racine du site web

Accédez à l’emplacement souhaité sur le site SharePoint créé ou identifié ci-dessus et créez un dossier racine qui sera la racine de votre site web. Il est préférable de ne pas utiliser directement une racine de liste SharePoint, de sorte que vous ayez un espace partagé permettant aux auteurs de placer des documents collatéraux, par exemple un dossier brouillons ou des documentations pratiques de création.

Un exemple de structure de fichier peut ressembler à ceci, en utilisant la variable website dossier en tant que racine :

3. Configurez fstab.yaml

L’étape suivante consiste à configurer le point de montage dans la variable fstab.yaml pour pointer vers la racine du site web. Il a généralement la forme de

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

Cela peut toutefois varier en fonction de la manière dont vous créez le site et les listes SharePoint. Pour obtenir l’URL, la méthode la plus simple consiste à copier-coller la première partie à partir de l’adresse du navigateur, par exemple :

Ajoutez ensuite le reste manuellement (notez que la copie du lien d’accentuation via l’interface utilisateur ajoute des informations inutiles et qu’il est préférable d’utiliser une représentation canonique de l’URL). Une fois que vous avez composé l’URL, vous pouvez la tester en la saisissant à nouveau dans le navigateur. Vous devriez finir dans la vue de dossier de la racine de votre site web.

Ensuite, mettez à jour la variable fstab.yaml en conséquence.

Par exemple :

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

Pour finaliser la configuration, validez la fstab.yaml revenez à la branche principale.

4. Accès au portail d’enregistrement

Vue d’ensemble

Pour que le service AEM puisse accéder au contenu créé, il a besoin de quelques informations et d’une configuration. Le service AEM (une fonction cloud) accède à la variable API MS Graph pour le compte d’une application (ou d’un utilisateur configuré). Pour ce faire, il doit d’abord s’authentifier dans le contexte d’une Application. C’est important, car les portées données à l’application définissent l’autorisation du service sur l’API MS Graph. Par exemple, il doit être autorisé à lire et écrire des documents, mais pas à modifier le contrôle d’accès.

Une application est représentée sous la forme d’une "application d’entreprise" dans l’annuaire Active Directory respectif d’un client. Les autorisations accordées à cette application d’entreprise définissent finalement ce à quoi le service peut accéder dans les ressources de ce client. Certaines autorisations doivent être approuvées par un administrateur Active Directory pour qu’un utilisateur puisse utiliser l’application. Ce soi-disant "consentement de l’administrateur" est un mécanisme permettant de vérifier et de contrôler les autorisations que les applications peuvent posséder. Cela permet d’éviter que des applications douteuses n’incitent les utilisateurs à faire confiance à une application qui n’est pas officielle. L’étape de consentement de l’administrateur supplémentaire permet à la sécurité informatique de contrôler les applications que les employés peuvent utiliser.

1. Connexion au portail d’enregistrement

Colonnes (contenues)

<h3>Affichage des applications d’entreprise dans Azure Portal</h3>

En supposant qu’à ce jour, aucune application Franklin Enterprise n’est présente dans Azure (Microsoft Entra Id)

<h3>Accès au portail d’inscription Franklin</h3>

Accédez à https://admin.hlx.page/register, saisissez l’URL github du projet.

<h3>Connexion en tant qu’utilisateur non administrateur</h3>

Se connecter en tant qu’utilisateur qui ne fait pas Si vous disposez des autorisations d’administrateur, une erreur s’affiche, indiquant qu’il doit être approuvé, c’est-à-dire que l’application nécessite le consentement de l’administrateur.

Problème: l’application d’entreprise n’est pas enregistrée si un utilisateur ne se connecte jamais.

<h3>Connexion en tant qu’utilisateur administrateur</h3>

Une solution consiste à se connecter en tant qu’utilisateur pour does disposer des autorisations d’administrateur :

(Remarque : à ce stade, l’application d’entreprise n’est toujours pas enregistrée dans Azure)

<h3>Service d’enregistrement Franklin visible dans l’interface utilisateur</h3>

Si l’administrateur se connecte (sans cocher la case et accorder le consentement à tous), l’application Enterprise est présente.

Création d’une application à l’aide de MSGraph ou PowerShell

Vous pouvez également créer l’application d’entreprise via MSGraph ou PowerShell.

Pour le rendre visible dans l’interface utilisateur Azure, vous devez également ajouter la variable WindowsAzureActiveDirectoryIntegratedApp balise . Vous pouvez le faire directement lors de la création de l’application.

Utilisation de l’explorateur de graphiques :

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

Utilisation de powershell :

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

Ensuite, vous devez toujours donner son consentement à l’administrateur si vous souhaitez qu’un utilisateur non administrateur se connecte.

Voir aussi :

<h3>Autorisations de révision</h3>

Notez que la variable Franklin Registration Service (e34c45c4-0919-43e1-9436-448ad8e81552) l’application n’est nécessaire que lors de l’enregistrement pour vérifier que l’utilisateur dispose d’un accès en lecture à sharepoint. Il comporte les éléments suivants : autorisations déléguées:

  • Openid
    Permet aux utilisateurs de se connecter à l’application avec leur compte professionnel ou scolaire et permet à l’application d’afficher des informations de base sur le profil utilisateur.
  • Profile
    Permet à l’application d’afficher le profil de base de vos utilisateurs (par exemple, nom, image, nom d’utilisateur, adresse électronique).
  • Files.ReadWrite.All
    Permet à l’application de lire, créer, mettre à jour et supprimer tous les fichiers auxquels l’utilisateur connecté peut accéder.

<h3>Utilisateur connecté au portail d’enregistrement</h3>

Une fois cette étape initiale terminée, l’utilisateur est connecté au portail d’enregistrement.

Ajout du service Franklin avec des autorisations d’application

Colonnes (contenues)

<h3>Ajout d’une application d’entreprise</h3>

Lorsque vous êtes connecté au portail d’enregistrement, la source de contenu utilisée par le projet doit être connectée à une bourse Oracle pour le Franklin Service application. Cela est nécessaire afin que le système puisse accéder aux documents dans sharepoint et les convertir dans un format interne (markdown) et les stocker dans le stockage d’Adobe (S3/R2) pour une diffusion rapide.

Utilisation de l’application sites.selected les autorisations sont plus sécurisées, car elles limitent la portée à un seul site de partage. Pour vous connecter, cliquez sur le Connect Application bouton .

Si vous n’avez jamais enregistré d’application ou d’utilisateur auparavant, l’erreur suivante s’affiche probablement :

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

Comme ci-dessus, l’application Enterprise pour la variable Franklin Service (83ab2922-5f11-4e4d-96f3-d1e0ff152856) n’est pas encore présent dans Azure,

Pour l’ajouter, utilisez l’explorateur de graphiques ou PowerShell :

Utilisation de l’explorateur de graphiques :

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

Utilisation de powershell :

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

Voir aussi :

Colonnes (contenues)

<h3>Ajout de rôles d’application</h3>

Maintenant, l’application d’entreprise Franklin Service est visible dans azure. Mais il n’en a pas. Sites.Selected autorisations d’application.

Problème: l’utilisation de l’interface utilisateur de consentement de l’administrateur accorderait toutes les autorisations déléguées et d’application, ce que nous ne voulons pas.

Une méthode simple consiste à consentir à toutes les autorisations, puis à supprimer à nouveau les autorisations déléguées.

Ajout de rôles d’application à l’aide de PowerShell ou de l’Explorateur graphique

Vous pouvez également ajouter les rôles de l’application en procédant comme suit :

  1. Recherche du principal de service de l’application d’entreprise (principalId). C'est celui que vous avez créé ci-dessus.
  2. Recherchez l’entité de service de l’API Microsoft Graph (resourceId)
  3. Recherchez l’identifiant pour le Sites.Selected Rôle de l’application (appRoleId)
  4. Attribution du rôle de l’application à l’identité gérée (l’application d’entreprise)

Utilisation powershell cela peut être effectué avec :

$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

Utilisation explorateur de graphiques elle comprend d’autres étapes :

  1. Recherchez l’entité de sécurité de l’application d’entreprise :
  GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '83ab2922-5f11-4e4d-96f3-d1e0ff152856'
...
  "value": [
        {
            "id": "6761ada0-733b-4a02-98b2-3db970834fe0",
...

Ce sera notre principalId

  1. Recherche de l’entité de service de l’API Microsoft Graph
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '00000003-0000-0000-c000-000000000000'
...
  "value": [
        {
            "id": "5159db96-7193-414e-9730-b1d1e4448443",
...

Il s’agit de la variable resourceId. (la ressource qui définit le rôle de l’application)

  1. Recherchez l’identifiant du rôle d’application.
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"
        },
...

Cet identifiant correspond à la variable appRoleId

  1. Affectez le rôle de l’application à l’identité gérée. La requête a le format suivant :
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"
}
Colonnes (contenues)

<h3>Validation des autorisations</h3>

Vous devriez éventuellement voir l’autorisation d’application accordée dans l’interface utilisateur.

De retour dans le portail d’enregistrement, l’ aurait dû être remplacé par :

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.

(notez que, au moment de la rédaction de cet article, ce message n'est pas très précis, il doit se lire comme suit :

La ressource spécifiée dans fstab.yaml n’existe pas ou vous n’êtes pas autorisé à y accéder. Assurez-vous que l’URL est correcte. L’application d’entreprise "Franklin Service (83ab2922-5f11-4e4d-96f3-d1e0ff152856)" est accordée pour accéder au site SharePoint configuré via les autorisations "Sites.Selected".


Ajout d’autorisations à SharePoint Site

Pour ajouter les autorisations au site sharepoint, nous devons trouver ses SiteId.

Vous pouvez le faire à nouveau à l’aide de l’explorateur de graphiques :

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

Exemple :

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",
...
}

En utilisant la variable Id nous pouvons définir les autorisations :

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"
            }
        }
    ]
}
Colonnes (contenues)
Ensuite, le portail d’enregistrement doit afficher canRead: ok
recommendation-more-help
10a6ce9d-c5c5-48d9-8ce1-9797d2f0f3ec