Comme l'a dit @Michael Levy, c'est un problème de double saut. Cela signifie qu'à moins de configurer Kerberos (Negotiate), NTLM est probablement utilisé dans un environnement Windows exécutant IIS, ayant un client avec un navigateur sur la machine A essayant d'accéder au site sur la machine B aura accès au site MAIS, quand le site essaiera de contacter le service sur la machine C, les informations d'identification du pool devraient être utilisées à la place.
en est de même pour le site Web Un service d'appel B qui appelle à son tour le service C.
Lors de la configuration Kerberos pour les sites web, plusieurs choses doivent être prises en compte. Le premier est de savoir si c'est une ferme ou non. Si c'est le cas, vous devez définir un utilisateur commun pour le pool pour toutes les parties de la batterie. Cela est nécessaire car Kerberos utilise le nom de domaine pour identifier le principal utilisé pour crypter les jetons de sécurité. Si vous avez des utilisateurs différents sur des machines différentes de la même batterie, toutes les requêtes seront recherchées via le même nom de domaine. la même entrée. Des informations plus détaillées peuvent être trouvées ici au Kerberos and load balancing. Par exemple, supposons que vous ayez un site avec myApp.intranet comme URL. Dans AD, vous auriez un SPN défini sur, disons, myUser dans le domaine MyDomain (setspn -S MyDomain \ myUser HTTP/myapp.intranet). Lorsque la requête est envoyée au KDN (voir les liens kerberos à la fin pour plus d'informations sur le KDN), il retournera toujours un jeton chiffré avec myUser mais IIS essaiera de le déchiffrer avec différents utilisateurs. Il peut être tentant de créer plusieurs SPN pour un même service (HTTP/myapp.intranet) mais cela entraînerait une erreur KRB. De plus, si vous utilisez IIS 7+, vous devrez définir un petit détail dans votre ApplicationHost.config si vous voulez que l'authentification en mode noyau soit activée (ce qui est fortement recommandé): useAppPoolCredentials = true. Cette valeur doit être définie sur configuration \ system.webServer \ security \ authentication \ windowsAuthentication. C'est parce que par défaut, Kernel-mode auth will use the Computer account, pas le compte de pool et cela nous ramènerait au scénario multi-utilisateur.
Dans tous les cas, le Trust this user for ... of the Delegation tab de l'entité AD doit être activé pour que la délégation fonctionne. Vous devez ensuite décider si vous souhaitez utiliser une délégation générale ou contrainte.
Comme je l'ai dit précédemment, vous devez également définir un SPN pour le bon utilisateur et le bon service. L'utilisateur est assez facile à identifier car il sera celui que vous avez défini sur votre piscine mais le service peut être un peu compliqué selon votre configuration. DNS, navigateur et probablement d'autres variables peuvent changer ce qui devrait être utilisé. Nos essais et erreurs ont donné les résultats suivants:
- Si votre entrée DNS est une Une entrée, vous utilisez directement
- Si votre entrée est un CName, dans nos tests, il a utilisé la Une entrée qui lui est associée
- Nous avons eu des cas où le CName serait utilisé et il semblait être lié à la version du navigateur.
Notez que si aucun SPN est défini spécifiquement et que vous accédez à votre site Web par le nom NetBIOS, le service HTTP/machine sera demandée et que, par défaut, HOST service (search for extra) peut être utilisé à la place de HTTP si HOST/machine à serait utilisé. Cela peut être utile pour une configuration facile sur un petit réseau. Il convient également de garder à l'esprit que si vous souhaitez limiter les temps d'arrêt lorsque vous passez de NTLM à Kerberos, vous devez d'abord modifier ApplicationHost, puis utiliser SetSPN. Vous pouvez également désactiver la négociation avant toute action et conserver uniquement NTLM jusqu'à ce que tout soit configuré, puis, si possible, activer uniquement la négociation (sans NTLM). Cela devrait forcer les clients à modifier la façon dont ils accèdent à votre site Web. Si vous ne faites pas cela, le mécanisme de mise en cache semble avoir tendance à rester sur NTLM pendant un moment.
En espérant que cela peut aider. Si vous avez toujours un problème de configuration de Kerberos, WireShark est votre ami le plus fidèle. Vous pouvez trouver des informations sur le débogage de Kerberos dans les pages suivantes: - Debug Kerberos for a website - Debug AD problems with Kerberos (taille maximum de jeton est l'un d'entre eux) - Kerberos tools and other links - General network capture Kerberos debugging
Merci pour la réponse et des commentaires ci-dessous. À ce stade, tout ce que je sais vraiment, c'est qu'il n'y a pas de balise d'emprunt d'identité dans un fichier web.config (autre que .) J'examinerai votre suggestion supplémentaire –
@unknown - vous pouvez définir les informations d'identification de l'utilisateur Emprunter l'identité de: http://msdn.microsoft.com/en-us/library/xh507fc5(VS.71).aspx Voir le troisième exemple de boîte grise –