J'ai un certain code qui essaie les paramètres de sécurité des appelants Windows, puis connectez-vous à un autre service WCF sur une machine différente
WindowsIdentity callerWindowsIdentity = ServiceSecurityContext.Current.WindowsIdentity;
using (callerWindowsIdentity.Impersonate())
{
NetTcpBinding binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.Message;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
EndpointAddress endpoint = new EndpointAddress(new Uri("net.tcp://serverName:9990/TestService1"));
ChannelFactory<WCFTest.ConsoleHost.IService1> channel = new ChannelFactory<WCFTest.ConsoleHost.IService1>(binding, endpoint);
WCFTest.ConsoleHost.IService1 service = channel.CreateChannel();
return service.PrintMessage(msg);
}
4 Réponses :
L'impersonnation de votre service à la suivante est une question délicate, appelée problème de «double hop». p>
Je n'ai pas de réponse finale pour cela (je l'évite généralement en utilisant un compte de service explicite pour le service qui doit appeler un autre service). P>
Mais: vous devriez définitivement consulter le Guide de sécurité WCF sur CodePlex et rechercher "Impersonation "- Il y a plusieurs articles là-bas qui expliquent tous les ins et aboutissants d'emprunter un appelant original et pourquoi c'est délicat. P>
marc p>
D'accord avec Marc_s Ceci est le problème du double hop. P>
Vous devez obtenir l'authentification Windows tout au long, donc: p>
Il y a un droit appelé "Impersonate un client après authentification" p>
Si vous êtes sûr de disposer des informations d'identification à la fois sur les deux houblons, la prochaine chose que pourrait em> causer que le problème soit le manque de désinvoltednsidsibilité de la fin du point de terminaison.
Afin de soutenir votre scénario, vous devez comprendre comment Transition de protocole et Délégation contrainte < / a> travail. Vous devrez configurer à la fois Active Directory et votre ou vos points d'extrémité de service WCF pour l'appuyer. Notez l'utilisation du nom du capital de service (SPN). Jetez un coup d'œil au lien suivant et voyez s'ils vous aident. L'article dispose d'un échantillon pour démontrer la configuration complète de bout en bout requise pour effectuer ce travail. p>
Comment: Impersonate de l'appelant d'origine dans WCF Appel d'une application Web P>