Utiliser la bibliothèque inter-domaines dans différentes zones de sécurité Internet Explorer dans les compléments pour SharePoint

Si vous utilisez la bibliothèque inter-domaines SharePoint pour vos compléments, vous devez connaître le fonctionnement des zones de sécurité dans Internet Explorer. Votre complément peut être confronté à certains problèmes de communication si le site web SharePoint et le complément se trouvent dans des zones différentes. Cet article décrit ce qu’il se passe lorsque vous utilisez la bibliothèque inter-domaines dans différentes zones de sécurité Internet Explorer.

Scénarios inter-domaines dans Internet Explorer utilisant la bibliothèque inter-domaines SharePoint

Pour des raisons de sécurité, Internet Explorer empêche les pages affichant différents niveaux d’intégrité (également appelés zones de sécurité) de partager les cookies, car chaque niveau d’intégrité possède son propre magasin de cookies. Le niveau d’intégrité d’une page est déterminé par sa page la plus haute et tous les cadres de cette page partagent le même niveau d’intégrité. Pour plus d’informations, consultez l’article sur les dangers du partage de cookies dans les scénarios inter-zone.

La bibliothèque inter-domaines SharePoint utilise un IFrame masqué et une page proxy côté client hébergée sur SharePoint pour activer la communication côté client à l’aide de JavaScript. La bibliothèque inter-domaines est disponible lorsque vous référencez le fichier sp.requestexecutor.js dans vos pages. Pour plus d’informations, consultez la rubrique Accéder à des données SharePoint à partir de compléments à l’aide de la bibliothèque inter-domaines.

Lorsque la page du complément à distance et le site web SharePoint se trouvent dans des zones de sécurité différentes, les cookies d’autorisation ne peuvent pas être envoyés. En l’absence de cookies d’autorisation, si l’IFrame tente de charger la page proxy, il est redirigé vers la page de connexion SharePoint. La page de connexion SharePoint ne peut pas se trouver dans un IFrame pour des raisons de sécurité. Dans ces scénarios, la bibliothèque ne peut pas charger la page proxy et la communication avec SharePoint n’est pas possible.

Le diagramme suivant illustre un scénario inter-zone dans lequel la page proxy ne peut pas être chargée. La première page place le cadre dans la même zone de sécurité que http://remoteserver/remotepage.html. La page proxy ne se charge pas.

Scénario inter-zone où la page proxy ne peut pas être chargée

Scénario inter-zone, la page proxy ne peut pas être chargée

Voici quelques exemples dans lesquels la bibliothèque inter-domaines est susceptible de ne pas pouvoir charger la page proxy :

  • Vos clients utilisent SharePoint Online et votre page de complément à distance est hébergée sur un serveur intranet. Ce scénario est sujet aux problèmes de chargement de la page proxy, car l’URL de SharePoint Online ne se trouve généralement pas dans la zone de l’intranet local. C’est un scénario très courant lors du développement initial d’un complément, car vous pouvez utiliser IIS Express ou un autre serveur local pour héberger votre page sans domaine internet complet.

  • Vos clients utilisent SharePoint sur site avec l’authentification basée sur les formulaires et votre page distante est hébergée sur un service de nuage (par exemple, Microsoft Azure).

Gestion des scénarios inter-zone dans les compléments SharePoint

Il existe plusieurs manières de résoudre ce problème au cours du développement des compléments (vivement recommandé) et de l’exécution des compléments.

Meilleures pratiques : utiliser le modèle apphost

Pour gérer un scénario inter-zone, nous vous recommandons de disposer d’une page apphost dans SharePoint. La page apphost est une page SharePoint qui contient la page à distance dans un IFrame. Tous les éléments contenus dans l’IFrame sur la page apphost existent dans la même zone de sécurité que le site web du complément. La bibliothèque inter-domaines sur la page à distance peut recevoir les cookies d’autorisation et charge correctement la page proxy.

Le diagramme suivant illustre un scénario inter-zone géré en utilisant le modèle de page apphost.

Gestion de scénario inter-zone au moyen du modèle de page apphost

Gestion de scénario inter-zone au moyen du modèle de page apphost

Le code requis pour la page apphost est simple. La partie principale de la page apphost est un élément SPAppIFrame. Vous devez utiliser CSS pour rendre l’IFrame invisible afin qu’il n’interfère pas avec votre complément.

Le code suivant est un exemple de page apphost simple. Le code effectue les tâches suivantes :

  • Déclare les directives nécessaires lors de l’utilisation de composants SharePoint.

  • déclare des styles pour rendre l' IFrame invisible ;

  • déclare le SPAppIFrame et définit la cible sur la page de démarrage du complément.

<%@ Page 
    Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" 
    language="C#" %>
<%@ Register 
    Tagprefix="SharePoint" 
    Namespace="Microsoft.SharePoint.WebControls" 
    Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register 
    Tagprefix="Utilities" 
    Namespace="Microsoft.SharePoint.Utilities" 
    Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register 
    Tagprefix="WebPartPages" 
    Namespace="Microsoft.SharePoint.WebPartPages" 
    Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<html>
<head>
    <title>Your add-in page title</title>
    <style type="text/css">
        html, body
        {
            overflow:hidden;
        }
        
        body
        {
            margin:0px;
            padding:0px;
        }
         
        iframe 
        {
            border:0px;
            height:100%;
            width:100%;
        }
    </style>
</head>

<body>
    <SharePoint:SPAppIFrame 
        runat="server" 
        src="~remoteAppUrl/StartPage.html?{StandardTokens}" 
        frameborder="0">
    </SharePoint:SPAppIFrame>
</body>
</html>

Si vous voulez que vos utilisateurs créent des liens profonds vers des parties de votre complément, votre page apphost et le contenu de l’IFrame peuvent collaborer pour que cela soit possible. Une autre possibilité consiste à utiliser une communication via PostMessage IFrame et des URL individuelles par page dans le complément distant. Pour avoir des URL individuelles par page, vous pouvez créer des pages individuelles dans le site web de complément ou utiliser des paramètres de chaîne de requête sur une page.

Autre approche : ajoutez les sites à la même zone de sécurité dans Internet Explorer

Si un complément n'a pas été conçu au moyen du modèle apphost, vous pouvez toujours lui permettre de fonctionner en ajoutant les domaines suivants dans la même zone de sécurité :

  • Le domaine de votre site SharePoint (par exemple, https://contoso.sharepoint.com).

  • Le domaine du complément hébergé sur le cloud (http://remoteserver).

  • Le domaine des pages de connexion et de services hébergés par Microsoft (*.microsoftonline.com).

Les administrateurs peuvent utiliser des stratégies Active Directory pour envoyer des modifications à tous les ordinateurs de l’organisation.

Conséquences sur la sécurité de l’utilisation du modèle apphost

Il est important de noter que le modèle apphost place effectivement votre page à distance dans la même zone de sécurité que le site web du complément. Veillez à bien comprendre les implications de l’ajout d’un site à une zone de sécurité.

Utilisation dans d’autres navigateurs : Chrome, Firefox et Safari

D’autres navigateurs, comme Google Chrome, Mozilla Firefox et Apple Safari, n’implémentent pas le concept de zones de sécurité. Si un navigateur n’isole pas les cookies dans un stockage distinct, il ne rencontrera probablement pas les difficultés décrites dans cet article. Nous vous recommandons de suivre le modèle apphost dans vos compléments. L’utilisation du modèle apphost garantit que votre complément fonctionne dans les navigateurs mentionnés et dans Internet Explorer, quelle que soit la zone de sécurité dans laquelle se trouve SharePoint.

Voir aussi