“Échec de la connexion de l'utilisateur "NT AUTHORITY\ANONYMOUS LOGON'.” pour SQL Server 2005
Je suis en train de migrer une application héritée nous avons pour Windows Server 2008 x64 et IIS7. Il est écrit en ASP Classique et se connecte à un Serveur SQL server 2005 bases de données.
Cependant, lors de l'exécution de la page, je reçois l'erreur:
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
La chaîne de connexion que j'utilise est: Driver=SQL Server; Server=SERVERNAME; Initial Catalog=DBNAME;
Je ne vois aucune raison pour qu'il soit à l'aide de l'ouverture de session anonyme que quand il était en cours d'exécution sur mon 32-bit serveur Win2k3, il accède à SQL Server à l'aide de DOMAINNAME\SERVERNAME$.
J'ai les paramètres suivants.
SQL Server 2005 - en cours d'exécution en mode mixte.
IIS7 Application de la Piscine - pour Autoriser les applications 32 bits True.
J'ai aussi ajouté le serveur en tant qu'utilisateur sur le Serveur SQL.
J'ai essayé quelques choses maintenant et je commence à manquer d'idées.
Vous devez vous connecter pour publier un commentaire.
Il y a des solutions.
utiliser l'authentification SQL, au lieu de SSPI. Il va travailler depuis votre base de données est en mode mixte.
Si pour une raison quelconque vous n'aurez pas à changer l'authentification.
La
NT AUTHORITY\ANONYMOUS LOGON
est étrange, par ailleurs, que si le serveur de base de données et l'application des serveurs ne sont pas sur le même domaine. Veuillez vérifier ce jusqu'à ce que proeding plus loin.1) Créer un utilisateur dans Active Directory
2) Créer un pool d'applications sur IIS7 et que "l'Identité" , l'utilisateur que vous avez créé
3) Accorder à cet utilisateur les droits et les rôles que vous souhaitez sur le DB
Je pense que j'ai corrigé. Le déplacement à Win2k8 signifie que j'ai besoin de modifier la chaîne de connexion de conducteur de SQL Native Client;.
Définir l'Authentification Anonyme d'informations d'identification de votre Identité de Pool d'Applications.
(la valeur par défaut est Spécifique de l'Utilisateur --> IIS Utilisateur). Ensuite, vous pouvez utiliser une Connexion de Confiance dans votre chaîne de connexion comme il va maintenant utiliser la AppPoolIdentity compte.
Bien, que l'échec de la tentative de connexion est un exemple classique de code s'exécutant dans le cadre du "Service Local" compte, plutôt que ce que vous aviez sur Win2K3), où il a été exécuté sous le compte "Service Réseau". Maintenant, vous avez juste besoin de trouver où ce paramètre est.
Pour les OP ou les futurs lecteurs, vous pouvez:
1) Soit utiliser un compte de service dédié, comme suggéré par Johan ci-dessus, ou
2) Utiliser le AppPoolIdentity compte et allez dans "Authentification", puis sélectionnez "Authentification Windows" et activer "ASP .NET usurpation d'identité".
Si vous obtenez toujours le même résultat après #2, vous avez probablement la "double saut" de l'émission citée par Damien - c'est là que le serveur web peut vous authentifier, mais il ne vous permet pas de transmettre ces informations d'identification sur la base de données pour des raisons de sécurité sans l'aide de Kerberos. Vous devez ensuite définir le serveur comme "Approuvé pour la Délégation" dans AD et configurer Kerberos comme fournisseur d'authentification IIS. Ce site vous aide à cela: http://technet.microsoft.com/en-us/library/ee675779.aspx
setspn
.