Comment puis-je résoudre le problème du double-hop de Kerberos?

j'ai de la difficulté à appeler un service web à partir d'une application web et j'espérais que quelqu'un ici pourrait être en mesure d'aider. À partir de ce que je peux dire, c' semble pour avoir quelque chose à voir avec le Kerberos double-saut problème. Cependant, si c'est le cas, je ne suis pas sûr de savoir quoi faire pour résoudre le problème. Pour rendre les choses plus difficiles, je n'ai pas les bonnes permissions pour apporter des modifications aux comptes Active Directory, donc j'ai besoin de savoir quoi demander quand demander changement. Dans ma situation, je dois passer les justificatifs D'identité (authentification intégrée de Windows) d'une application web à un service web d'arrière-plan pour que le service web s'exécute dans le contexte de l'utilisateur approprié.

<!-Voici mon numéro exact:

Cela fonctionne

Working scenario

Cela ne fonctionne pas

Non-working scenario

différence entre le scénario de travail et le scénario de non-fonctionnement est que le scénario de fonctionnement exécute l'application sur localhost (que ce soit sur le PC d'un développeur ou sur le serveur en question) et que l'exemple de non-fonctionnement tourne sur une autre machine. Le code entre les deux scénarios est exactement le même.

Ce que j'ai essayé

  1. Ajouter un SPN au compte de domaine qui exécute le pool d'applications pour chaque serveur setspn -a http/server1 DOMAINaccount
  2. différentes méthodes de l'emprunt d'identité
  3. suppression du code d'imitation using(...) et l'exécution de l'appel de service web comme le compte de pool d'applications. Cela fonctionne comme prévu.
<!-Est-ce que quelqu'un a une idée de ce que je pourrais faire pour résoudre ce problème?

28
demandé sur Steve Platz 2013-02-18 05:51:19

2 réponses

il faut faire confiance au serveur intermédiaire pour la délégation. Dans le cas contraire, aucun justificatif d'identité ne sera délégué et le serveur intermédiaire ne pourra pas se faire passer pour le client d'origine.

12
répondu Michael-O 2017-11-08 11:30:13

plus souvent qu'autrement la raison est que le serveur 1 ne passe pas un token de délégation au serveur 2. Ainsi, lorsque le serveur 2 essaie d'utiliser ce ticket d'authentification pour aller ailleurs (probablement un serveur SQL), il échoue.

vous devez définir le niveau d'imitation pour l'appel WCF

ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Delegation

http://msdn.microsoft.com/en-us/library/system.servicemodel.security.windowsclientcredential.allowedimpersonationlevel.aspx

3
répondu Knaģis 2013-02-19 17:10:19