web-dev-qa-db-fra.com

Obtenir IIS pour emprunter l'identité de Windows sur SQL Server dans un environnement intranet

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=&quot;data source=hturesbsqlp01;initial catalog=R2_Dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"

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?

27
oceanexplorer

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!

15
oceanexplorer