2010-08-10 7 views
2

J'essaie d'appliquer l'authentification Windows pour les utilisateurs d'une application .Net sur Web Server afin d'accéder à un cube sur une base de données Microsoft Analysis Services sur SSAS et d'essayer de le faire fonctionner! J'utilise <identity impersonate="true" /> dans le web.config. L'accès anonyme est désactivé dans IIS et l'authentification Windows intégrée est sélectionnée. Le appPool s'exécute comme une identité spécifiée; un compte Windows séparé qui a été accordé "Compte est approuvé pour la délégation" dans Active Directory. J'ai également obtenu les gars du réseau pour créer et enregistrer un SPN pour cette identité sur le serveur Web. Les utilisateurs qui tentent d'accéder à l'application .Net n'ont pas de compte "Le compte est sensible et ne peut pas être délégué" sélectionné sur leurs comptes AD. Cela fonctionne très bien si l'utilisateur accède à l'application .Net localement depuis le serveur Web, mais quand il accède à l'application .Net à partir du PC du client, il obtient une erreur: "une erreur est survenue dans la couche de transport" "le pair prématurément fermé la connexion ". Faire une trace avec SQL Profiler Je peux voir que le NTUserName essayant de s'authentifier sans succès est ANONYMOUS LOGON. Pourquoi ne pas déléguer l'authentification de l'utilisateur?Connexion au cube Microsoft Analysis Services avec authentification par double saut de code

Solution:

Enregistrement d'un SPN pour le service OLAP comme décrit here sur le serveur SSAS fixe le! ie Setspn.exe -A MSOLAPSvc.3/Servername mydomain \ theuser.

Répondre

2

Il semblerait que votre application Web ne saisisse pas vraiment son identité et/ou ne la transmette pas à l'application .NET. Pouvez-vous configurer une page de test pour vérifier qu'elle obtient son identifiant Windows?

Edit: Cet article peut aider: http://www.eggheadcafe.com/articles/20050703.asp

Essayez la mise en place d'une page debug.aspx vide, l'ont dit dans le code derrière quelque chose comme:

private void Page_Load(object sender, System.EventArgs e) 
{ 
    Response.Write("Page Identity: " + Page.User.Identity.Name); 
    Response.Write("Windows Identity: " + System.Security.Principal.WindowsIdentity.GetCurrent().Name); 
    Response.Write("Thread Identity: " + System.Threading.Thread.CurrentPrincipal.Identity.Name); 
} 

Hit cette page du PC client, Cela vous aidera à comprendre ce que la page Web fonctionne réellement. Cet article peut vous aider à résoudre le problème.

+0

J'ai exécuté la trace du profileur SQL et l'identité d'utilisateur correcte est transmise au serveur B lorsque le serveur A est accédé localement. – JumpingJezza

+0

J'ai compris. Je voulais dire pouvez-vous configurer une page de test sur le serveur C pour voir si l'utilisateur est authentifié correctement? En outre, il serait plus facile de s'y référer en tant que serveur SSAS, serveur d'application et serveur Web. :) – Shlomo

+0

Oops désolé Le serveur C n'est pas vraiment un serveur, je veux dire le PC du client. Le serveur A est serveur Web et le serveur B est SSAS. Je vais éditer la question originale :) – JumpingJezza

Questions connexes