L’affichage d’un rapport échoue à partir du site SharePoint mais fonctionne directement à partir du ReportServer en mode intégré

Cet article peut vous intéresser si vous êtes dans la situation suivante:
  1. Vous utilisez la sécurité intégrée de Windows dans IIS, SharePoint, SSRS et dans l’intégration SSRS/SharePoint.
  2. Reporting Services est configuré en mode intégré et si vous faites afficher un rapport en passant directement par le ReportServer (ex. http://servername/ReportServer), le rapport s’affiche correctement.
  3. Dès que vous tentez de faire afficher le même rapport en passant par le site SharePoint cela échoue avec cette erreur
    (Anglais)
    An unexpected error occurred while connecting to the report server. Verify that the report server is available and configured for SharePoint integrated mode
    (Français)
    Une erreur inattendue s’est produite au cours de la connexion au serveur de rapports. Vérifiez que le serveur de rapports est disponible et configuré pour le mode SharePoint intégré.

     

    image

     

  4. Vous utilisez des host headers ou des noms DNS pour vos sites SharePoint. C’est utilisé par exemple pour avoir plusieurs applications Web sur le même port (l’URL est différent).
Cette situation est sournoise car il y aura peu d’indices:
  1. Si votre serveur de base de données est sur un autre ordinateur, vous ne verrez pas d’entrées Logon dans l’observateur d’événements –> Security pour le compte de service utilisé par SSRS.
  2. Si vous utiliser Sql Server Profiler pour voir passer les requêtes faites par SSRS sur le serveur de données, vous ne verrez rien d’intéressant (par rapport à un environnement qui marche).
  3. Les journaux de SSRS ne contiendront rien à part l’information de démarrage du service.
Ce sont finalement les journaux d’IIS  (C:\Windows\System32\LogFiles\W3SVC1) qui m’ont aidé à mettre le doigt sur le bobo. Dans une situation normale, lors d’un click sur un rapport SSRS dans SharePoint, on devrait avoir trois entrées POST:
POST /_vti_bin/ReportServer/ReportService2006.asmx – 80 – 401 2
POST /_vti_bin/ReportServer/ReportService2006.asmx – 80 – 401 1
POST /_vti_bin/ReportServer/ReportService2006.asmx – 80 DOMAINE\UTILISATEUR  200 0
Dans l’environnement problématique, on avait un 401.1 (unauthorized) pour la troisième requête (et pas de nom d’utilisateur):
POST /_vti_bin/ReportServer/ReportService2006.asmx – 80 – 401 2
POST /_vti_bin/ReportServer/ReportService2006.asmx – 80 – 401 1
POST /_vti_bin/ReportServer/ReportService2006.asmx – 80 200 0
Cela ne peut pas fonctionner! C’est pourquoi le processus ne va pas plus loin et que cette erreur générale est lancée.
Heureusement il y a une solution et c’est de désactiver le contrôle de bouclage (Loopback checking):

Windows Server 2003 SP1 introduced a loopback security check. This feature is obviously also present in Windows Server 2008. The feature prevents access to a web application using a fully qualified domain name (FQDN) if an attempt to access it takes place from a machine that hosts that application. The end result is a 401.1 Access Denied from the web server and a logon failure in the event log.
10.1 How to Change the DisableLoopbackCheck Registry Key
  1. Open the Registry Editor (regedit).
    Caution: Incorrectly editing the registry can severely damage your system. Before making changes to the registry, you should back up any valued data on the computer.
  2. Open the following key: HKLM\System\CurrentControlSet\Control\Lsa.
  3. Create a new DWORD value called DisableLoopbackCheck.
  4. Set the value to 1.
  5. Reboot the server.
    Note: This is required for the change to take effect.
  6. If this resolves the issue, there is a more secure way of making this change. Instead of making the server-wide change that DisableLoopbackCheck implements, you can disable checking for specific host names. For more information about how to do this, see the following article in the Microsoft Knowledge Base: http://support.microsoft.com/kb/896861
Références
  1. Reporting Services SharePoint Integration Troubleshooting
  2. DisableLoopbackCheck & SharePoint: What every admin and developer should know.

Une réflexion sur “L’affichage d’un rapport échoue à partir du site SharePoint mais fonctionne directement à partir du ReportServer en mode intégré

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s