Je développe un site intranet en utilisant C # et ASP.NET MVC. J'ai SQL Server sur une machine et IIS fonctionnant sur une machine distincte. Je voudrais qu'un utilisateur visite le site intranet et sans demander à l'utilisateur Internet Explorer envoie les informations d'identification Windows des utilisateurs à IIS et ceux-ci sont ensuite transmis au serveur sql, ce qui signifie que le serveur sql peut voir l'utilisateur accéder à la base de données.
Je suis conscient du problème du double saut Kerberos et c'est ce que j'essaie de contourner. À l'heure actuelle, je peux obtenir IE pour transmettre les informations d'identification Windows à IIS et m'authentifier correctement. Je ne peux tout simplement pas obtenir IIS pour transmettre ces informations d'identification à SQL Server et à la place la demande s'exécute actuellement sous l'identité du pool d'applications qui est définie sur un compte de service de domaine "htu\srv-htu-iis".
Ma configuration est la suivante:
Web.Config
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
<identity impersonate="true" />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
Chaîne de connexion
connection string="data source=hturesbsqlp01;initial catalog=R2_Dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
Paramètres d'authentification IIS
Anonymous Authentication = Disabled
ASP.NET Impersonation = Enabled
Forms Authentication = Disabled
Windows Authentication = Enabled
Paramètres du pool d'applications IIS
Managed Pipeline = Integrated
Identity = htu\srv-htu-iis (domain service account)
Paramètres Active Directory
Le compte de service de domaine htu\srv-htu-iis a un ensemble de noms de service principal qui associe notre site au compte.
Active Directory a
Allow Delagation to any service
SQL Server s'exécute sous son propre compte de service de domaine SQL.
Tests
J'ai exécuté les tests de code suivants:
System.Web.HttpContext.Current.User.Identity.Name
cela renvoie correctement les informations d'identification Windows de l'utilisateur accédant au site
System.Security.Principal.WindowsIdentity.GetCurrent().Name
renvoyer le compte de service de domaine "htu\srv-htu-iis", sous lequel s'exécute l'identité du pool d'applications.
Quelqu'un peut-il indiquer où je peux me tromper?
Et bien à tous ceux qui visiteront cette question à l'avenir. J'ai résolu ce problème en redémarrant le service IIS ... doh! Il semble que mes paramètres soient corrects, il suffit d'un redémarrage complet du service!