Reporting Services 2012 (intégré à SharePoint) sur un portable de démo: désolé vous devrez utiliser une identité stockée pour vos connexions aux sources de données

La meilleure manière de présenter une application BI à un client potentiel ou à un partenaire reste souvent le portable de démo. Il y a de bonne chances que la salle de réunion ou le kiosque ne vous permette pas d’accéder à votre serveur (qui est en ligne) de manière sécuritaire, fiable, performante etc …

Alors aussi bien tout installer (données, logiciels, progiciels etc.) sur le portable et pouvoir préparer vos présentations dans l’autobus, le train, à la maison etc. Une fois rendu vous êtes certain que tout va fonctionner et ça, comme dirait l’annonce, ça n’a pas de prix!

De plus, si vous avez fait vos devoir et avez acheté une machine décente (ex. Core i7 Quad avec 8 Go de RAM et +), la performance de l’applicatif sera au rendez-vous. Cela ne pourra rivaliser avec un serveur dédié, mais dans un mode un seul utilisateur (vous), les temps seront très bons pour afficher vos tableaux de bord.

Avec les versions 2008 et 2008 R2 de Reporting Services, il était possible d’installer SharePoint et SQL Server avec des comptes Windows locaux (vs de domaine) et d’impersonifier l’utilisateur entrant dans SharePoint pour se connecter aux sources de données. Ainsi, lors de la démonstration, il était possible d’utiliser des utilisateurs Windows (locaux) différents pour illustrer des cas de sécurité applicative ou une configuration par utilisateur (ex. SYNTELL MonTB).

Malheureusement, Reporting Services 2012 exige dorénavant un contrôleur de domaine (Domain Controller) pour utiliser ce mode d’authentification. Cela veut dire qu’un portable déconnecté du domaine ne pourra pas fonctionner contrairement aux versions 2008 / 2008R2 de Reporting Services.

Oh ce n’est pas écrit noir sur blanc mais c’est la conclusion à laquelle je suis arrivé en faisant … disons … quelques lectures et tests … Pas de nature à abandonner trop rapidement, j’ai fini par comprendre pourquoi je n’arrivais pas à le faire fonctionner:

  1. Reporting Services 2012, intégré à SharePoint, ne fonctionne qu’en authentification claims, peu importe si l’application Web est en mode classique ou Claims.
  2. Lorsque SSRS veut se connecter à une source de données (ex. SQL Server, SSAS), il doit convertir le claims en identité Windows.
  3. Le service Windows C2WTS (Claims to Windows Token Service) sert justement à cela. Il doit donc être configuré et démarré.
  4. Ce service finit par essentiellement faire ceci:WindowsIdentity s4u = new WindowsIdentity(upn);
    WindowsImpersonationContext wic = s4u.Impersonate();

    upn sera le nom de l’utilisateur local qui a accédé à SharePoint (ex. PortableDeDemo\SuperUtilisateur)

  5. Ce code .NET va éventuellement appeler la fonction d’API Windows LsaLogonUser.Et c’est là que le bât blesse: cette fonction a besoin de parler au contrôleur de domaine pour fonctionner. S’il n’est pas disponible, vous aurez une erreur ressemblant à ceci en testant la connexion SSRS ou en exécutant le rapport:

    Cannot convert claims identity to windows token.

    Ou si le journal Kerberos est activé, dans l’observateur d’événements, volet sécurité:

    An Error occured during Logon.

    Failure Reason:                An Error occured during Logon.Status:                  0xC000005E

    Et la description de 0xC000005E  est:

    There are currently no logon servers available to service the logon request.

Donc pour résumer:

  1. Oui il est possible d’utiliser C2WTS sur un serveur unique. Mais le serveur doit avoir accès en tout temps au contrôleur de domaine et des comptes de services doivent être utilisés pour SharePoint et SQL Server.
  2. Pour un portable de démo avec SSRS 2012 en mode SharePoint, vous devrez stocker une identité spécifique sur vos connexions SSRS:image

    Et utiliser des comptes locaux pour SharePoint et SQL Server.

Références

Verifying whether the broken piece is c2WTS or Active Directory
http://blogs.msdn.com/b/rodneyviana/archive/2014/03/21/verifying-whether-the-broken-piece-is-c2wts-or-active-directory.aspx

LsaLogonUser function
http://msdn.microsoft.com/en-us/windows/desktop/aa378292(v=vs.85).aspx

Use C2WTS to get a classic windows identity from a claims identity
http://blah.winsmarts.com/2013-11-Use_C2WTS_to_get_a_classic_windows_identity_from_a_claims_identity.aspx

Where can I find the full list of Failure Reasons for event 4625?
http://answers.microsoft.com/en-us/windows/forum/windows_vista-security/where-can-i-find-the-full-list-of-failure-reasons/d0269426-2183-4d99-8af0-cc009dee6658

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