2010-11-01 24 views
7

Nous avons récemment publié la dernière version de notre application intranet, qui utilise désormais l'authentification Windows en standard, et doit être capable de se connecter à un serveur SQL configuré avec les informations d'identification du domaine de l'utilisateur final. Dernièrement, nous avons constaté que sur certains déploiements de clients, bien que IIS puisse voir les informations d'identification de domaine de l'utilisateur, il ne les transmet pas au serveur SQL. Au lieu de cela, il semble utiliser le compte anonyme. Ceci en dépit de suivre toutes les étapes correctes (en changeant la sécurité du répertoire pour Win Auth, en mettant à jour Web.Config pour utiliser Win Auth et en refusant les utilisateurs anonymes). J'ai fait beaucoup de lectures qui suggèrent que nous devons nous assurer que Kerberos est en place, mais je ne suis pas sûr (a) à quel point cela est-il valide (c'est-à-dire est-ce vraiment une exigence?) Ou (b) comment faire pour enquêter si c'est mis en place ou comment s'y prendre?Comment configurer IIS afin que les informations d'identification de domaine de l'utilisateur soient utilisées lors de la connexion au serveur SQL?

Nous sommes dans une situation où nous devons pouvoir configurer IIS ou l'application pour qu'elle fonctionne pour le client, ou expliquer au client exactement ce qu'il doit faire pour que cela fonctionne.

Nous avons réussi à reproduire cela sur notre réseau interne avec un serveur SQL de test et la boîte IIS d'un développeur, donc nous allons déranger avec cette configuration et voir si nous pouvons trouver une solution, mais si quelqu'un a des idées brillantes, je serais très heureux de les entendre!

Je voudrais particulièrement entendre les pensées ou les conseils des gens en termes de Kerberos. Est-ce une exigence, et si c'est le cas, comment expliquer aux clients comment cela doit être configuré? Oh, et j'ai aussi vu quelques personnes parler de la «règle classique d'un seul bond» pour les domaines et le passage des identifiants des fenêtres, mais je ne sais pas quel poids cela représente réellement?

Merci!

Matt

Répondre

4

Ceci est appelé Double-Hop Problem et interdit la transmission des informations d'identification de l'utilisateur à des tiers. Cela se produit quand ils naviguent depuis une machine, contre un site sur un autre (premier saut), et en transmettant les informations d'identification à une troisième machine (deuxième saut).

Le problème ne s'affichera pas si vous hébergez IIS et SQL Server sur la même machine.

Il y a beaucoup plus de détails techniques publiés à How to use the System.DirectoryServices namespace in ASP.NET, ce qui explique le problème du double saut et les jetons primaires et secondaires.

+0

Merci pour ce lien. On dirait une bonne lecture! J'y passerai demain. –

+0

D'excellents articles .. merci! On dirait que nous sommes confrontés à trois solutions possibles: dire au client de déployer Kerberos, exécuter l'application Web en utilisant un compte de domaine fixe pour se connecter à SQL Server ou héberger l'application Web avec SQL Server. –

+0

Pour tous ceux qui étaient intéressés, c'était le problème du «double saut», et notre solution finale était dans le composant logiciel enfichable MMC Utilisateurs et ordinateurs Active Directory. Nous avons examiné les propriétés du compte d'ordinateur (pour le serveur IIS) et l'onglet "Délégation" permettait la délégation à des services spécifiques. Nous avons ajouté le serveur SQL qui héberge les bases de données d'application à la liste des machines acceptant la délégation. Service MSSQLSvc. Cela garantit que le serveur IIS est approuvé uniquement pour transmettre des informations d'identification pour SQL Server et pas pour d'autres services. –

1

Pour exécuter votre application sous les informations d'identification Active Directory ou Windows de l'utilisateur, assurez-vous ces:

  • l'application IIS est configuré pour ne pas autoriser l'accès anonyme
  • l'application IIS utilise Windows intégrée authentification
  • votre chaîne de connexion doit avoir Integrated Security=SSPI pour vous assurer que les informations d'identification Windows/AD de l'utilisateur sont transmises à SQL Server.

    à savoir Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

+0

Les deuxième et troisième points que j'ai déjà. J'ai également essayé de désactiver l'accès anonyme plus tôt aujourd'hui et cela n'a pas aidé. Il est intéressant de noter que nous travaillons bien dans des environnements clients similaires où l'accès anonyme est activé (ainsi que l'authentification par défaut). Mais merci pour le retour si! –

+0

@Code: ne fonctionne pas? Quels symptômes avez-vous alors? –

+0

Il se connecte au serveur SQL comme Windows NT \ Anonyme Ouverture de session –

0

Vous indiquez que vous n'êtes pas sûr (e) de "comment enquêter, s'il est configuré ou comment le configurer".

Pour cela, je recommande chaudement un outil appelé DelegConfig. C'est une application très pratique que vous pouvez vous dire si kerberos est configuré correctement.

Décompressez-le dans un répertoire, configurez un répertoire virtuel dans IIS pour qu'il pointe vers celui-ci. Naviguez jusqu'à la page principale et dites-lui à quel serveur backend vous voulez autoriser l'accès (par exemple UNC, SQL, HTTP etc.) et il vous dira sa configuration correctement ou pas et expliquez pourquoi.

Il a même le abilty à recongiure les kerberos pour résoudre le problème si vous le désirez (même si je ne l'ai pas utilisé - je préfère ce reconfiguire moi-même pour comprendre ce que je l'ai fait à l'avenir)

Je me rends compte que cela arrive trop tard pour votre problème particulier, mais j'ai pensé que cela valait la peine d'être partagé par d'autres, surtout la capacité des outils à expliquer pourquoi la délégation fonctionne ou non. Je l'ai trouvé inestimable.

+0

C'est génial - merci! En effet, nous sommes maintenant beaucoup plus conscients du problème et avons maintenant des livres blancs détaillés comment les clients devraient configurer leurs paramètres d'annuaire actifs. Mais cela pourrait être très utile pour les clients qui ne sont pas assez avertis pour savoir comment leur réseau est configuré! Il va certainement aider lors du dépannage, alors merci pour cela. Je vais aller jouer! –