J'ai une application héritée sur laquelle je fais de la maintenance. Il est construit avec Visual Studio 2008, les formulaires Web ASP.NET, SQL Server et .NET 3.5. L'application utilise l'authentification par formulaires, soutenue par ActiveDirectoryMembershipProvider
.
Les ordinateurs vivent dans deux domaines.
Les domaines sont:
L'application fonctionne très bien sur mon PC de développement et se connecte au server Dev SQL. Tout est dans le même domaine.
Une fois déployée sur le server de test à des fins de test, une exception est levée lorsque l'application se connecte à la database. Le browser fonctionne sur Dev PC. L'application est connectée à l'aide de mes informations d'identification (companydomain \ myusername). Le server de test se connecte également au server Dev SQL Server.
L'erreur est:
Error: SqlException (18456): Procedure: Line: 65536 State: 1 Message: Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
J'ai exécuté une trace de SQL Server Profiler et get ce qui suit:
Audit Login Failed Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. .Net SqlClient Data Provider ANONYMOUS LOGON NT AUTHORITY\ANONYMOUS LOGON 3208 90 2014-02-24 15:40:43.313
<authentication mode="Forms"> <forms name=".ASPXFORMSAUTH" loginUrl="Default.aspx" /> </authentication> <identity impersonate="true"> </identity> <Connection name="Connection Name" connectionSsortingng="Data Source=DatabaseServer;Initial Catalog=DatabaseName;Integrated Security=SSPI;"/>
Paramètres sur le server de test.
J'ai ajouté un code de journalisation qui vide l'user actuel. Thread.CurrentPrincipal.Identity
renvoie l'user Windows connecté à l'application. WindowsIdentity.GetCurrent()
renvoie NT AUTHORITY \ IUSR .
Quelle est l'origine de l'exception? Pourquoi l'identité "connection anonyme" passe-t-elle par la connection à la database et non par l'user authentifié?