Kerberos est bien configuré mais votre SSRS ne marche pas en mode distribué

La manière la plus facile d’intégrer SSRS à SharePoint est de l’installer sur le même serveur que celui utilisé par SharePoint (WSS ou MOSS).

Cependant, il peut être plus logique, plus performant, plus flexible dans l’avenir d’installer SSRS sur un autre serveur. Par exemple, le mode Scale-Out de la version Enterprise permet d’avoir plus d’un serveur Reporting Services pour une ferme SharePoint.

Vous décidez d’aller de l’avant avec une installation distribuée sur deux ordinateurs :

clip_image001[6]
Source : How to: Install and Configure SharePoint Integration on Multiple Servers
http://msdn.microsoft.com/en-us/library/bb677365.aspx

Vous suivez les instructions correctement afin d’installer et configurer les bons logiciels sur les deux machines. Vous créez vos SPNs pour chaque service (SQL Server, SSAS, SSRS et SharePoint). Vous avez configuré la délégation Kerberos standard (unconstrained) ou spécifique (constrained).

Vous avez déployé un projet SSRS de test sur votre site SharePoint et cela fonctionne correctement quand vous naviguez localement (à partir du serveur #1).

Par contre, dès que vous tentez d’exécuter un rapport à partir d’un fureteur distant, vous obtenez l’erreur suivante :

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é.

 

An unexpected error occurred while connecting to the report server. Verify that the report server is available and configured for SharePoint integrated mode.

clip_image003[5]

Vous lisez sur la sécurité SSRS en mode SharePoint  et suivez leur recommandation:
image
Source: Security Overview for Reporting Services in SharePoint Integrated Mode
http://msdn.microsoft.com/en-us/library/bb283324.aspx

Quelques points dignes de mention:

Et là vous ne comprenez pas pourquoi ça ne marche toujours pas … Vous êtes en train de vous demander si votre installation est corrompue et vous vous apprêtez à tout réinstaller. Continuez à lire!

En utilisant l’outil WireShark et en utilisant « kerberos » comme filtre, je pouvais voir passer les AS_REQ, AS_REP, TGS_REQ, TGS_REP qui passent entre les serveurs et le contrôleur de domaine. Dans mon cas, je ne voyais jamais la demande de délégation d’identité du compte de service SharePoint vers le SPN de SSRS.

Normalement, sur votre serveur #1 (SharePoint sans SSRS), vous devriez voir ce trafic Kerberos lors de l’exécution d’un rapport à partir d’un fureteur distant :

clip_image007[6]

Vous voyez que suite à la requête à RSViewerPage.aspx, il y a une demande (TGS-REQ) pour le service http/ms-sql2008r2.syntell.com qui est le site IIS du serveur SSRS. Si cette demande n’a pas lieu c’est que votre serveur SSRS n’est pas configuré pour fonctionner en mode Kerberos. La réponse (TGS-REP) devrait inclure l’identité de l’utilisateur qui a exécuté le rapport à partir d’un fureteur distant.

Un autre indice, dans l’observateur d’événements sur la machine SSRS, dans la section Sécurité, vous voyez une tentative d’authentification pour un utilisateur anonyme (ANONYMOUS LOGON).

clip_image009[5]

En plus de dire à IIS qu’il faut être en mode Negociate,NTLM il faut aussi le dire à ReportServer. C’est ce que j’ai découvert à la dure …

Ce dernier a un fichier de configuration (rsreportserver.config) situé ici :

C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\rsreportserver.config

Dans ce fichier il y a une section Authentication -> AuthenticationTypes qui doit être mise à RSWindowsNegotiate ou RSWindowsKerberos :

<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate />
</AuthenticationTypes>

La valeur par défaut dépend du compte de service qui a été mis initialement pour le service de SSRS. Normalement on met un utilisateur de domaine dès l’installation alors on se retrouve avec RSWindowsNTLM ce qui désactive l’utilisation de Kerberos avec SSRS …

Voyez par vous-même :

By default, the RSReportServer.config file includes the RSWindowsNegotiate setting if the Report Server service account is either NetworkService or LocalSystem; otherwise, the RSWindowsNTLM setting is used. You can add RSWindowsKerberos if you have applications that only use Kerberos authentication.

http://msdn.microsoft.com/en-us/library/cc281253.aspx

Et enfin ça marche!

clip_image011[6]

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