2010-06-10 4 views
2

J'ai une application Web asp.net qui fonctionne correctement sur un ordinateur Windows XP dans un domaine. Je le porte sur une machine autonome Windows 7. L'application utilise un service Web qui appelle le serveur SQL. Le serveur Web (IIS 7.5) et SQL Server sont sur la même machine autonome.Erreur "NT AUTHORITY ANONYMOUS LOGON" dans Windows 7 (ASP.NET & Web Service)

J'ai activé l'authentification Windows pour le site Web et le service Web. Le service Web utilise une chaîne de connexion de connexion approuvée. Les informations d'identification du service Web utilisent System.Net.CredentialCache.DefaultCredentials. J'ai remarqué que le nom d'utilisateur, le mot de passe et le nom de domaine sont vides après l'appel! Le service Web et le site Web utilisent le 'Classique .NET AppPool' avec l'identité NetworkServices.

Je reçois une exception "NT AUTHORITY \ ANONYMOUS LOGON" dans l'appel de base de données dans le service Web. Je suppose que c'est lié aux pouvoirs vierges.

Je m'attends à ce que l'utilisateur ASPNET soit le jeton de sécurité de la base de données. Pourquoi cela ne se passe-t-il pas? Ai-je manqué un paramètre? (Habituellement, cela se produit lorsque le serveur sql et le serveur Web sont sur deux machines différentes dans un domaine, la délégation & double saut, mais dans mon cas tout est sur une boîte de dev)

+0

J'avais juste le même problème dans IIS6 et j'ai dû changer le mode d'authentification en "authentification de base" et désactiver "l'authentification intégrée de Windows". Peut-être que cela fonctionnera aussi pour IIS7. Réponse trouvée dans la question de débordement de pile: http://stackoverflow.com/questions/1122072/asp-net-sqlserver-trust-and-delegation – WebDude

Répondre

0

Votre problème semble être lié au service Web passer les informations d'identification correctes au serveur SQL.

Il existe plusieurs couches de sécurité à vérifier. Mais le premier et le plus simple est de s'assurer que vous avez désactivé toute sécurité autre que Windows intégrée. IIS utilisera toujours le protocole de sécurité le plus simple. Donc, si vous avez activé Anonyme et Windows intégré, votre site Web choisira toujours Anonyme. Ensuite, chaque site dans IIS7 + s'exécute sous un pool d'applications qui peut avoir une sécurité distincte. Ensuite, dans tout ce que le service Windows IIS s'exécute sous un compte spécifique.

Acheter par défaut, vous ne devriez pas vraiment avoir beaucoup de problèmes avec la sécurité de l'application et des services Internet (IIS), car cela fonctionne à peu près, mais cela vaut le coup de vérifier.

Une autre chose que je voudrais vérifier est les tuyaux nommés dans SQL. Mes connaissances ne sont pas vastes mais je sais que les tubes nommés peuvent être utilisés pour la communication sur le même serveur entre diverses applications, IIS et SQL étant deux d'entre eux.

Si les noms de canaux sont désactivés via le gestionnaire de configuration SQL, je me serais attendu à une erreur différente, mais cela vaut la peine d'activer.

Espérons que cela aide. Mike

1

Il semble que vous rencontriez le problème du "double saut". Cela signifie essentiellement que vous n'êtes pas autorisé à transférer les privilèges des clients à un tiers, généralement un serveur SQL sur une autre machine.

J'ai déjà answered avant, peut-être que cette réponse vous aidera davantage.