7
votes

Erreur de sécurité d'authentification WCF Windows

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);
}


0 commentaires

4 Réponses :


0
votes

L'impersonnation de votre service à la suivante est une question délicate, appelée problème de «double hop».

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).

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.

marc


0 commentaires

1
votes

D'accord avec Marc_s Ceci est le problème du double hop.

Vous devez obtenir l'authentification Windows tout au long, donc:

  • La demande doit être faite dans le contexte d'un utilisateur Windows
  • IIS doit être configuré pour utiliser l'authentification Windows
  • web.config doit être configuré pour l'authentification Windows avec IMPERSONATE = TRUE
  • L'utilisateur que votre pool d'applications est en cours d'exécution, doit être autorisé à imiter un utilisateur. C'est l'endroit habituel où se trouve le problème du double saut.

    Il y a un droit appelé "Impersonate un client après authentification"

    http: // blogs .technet.com / Askerf / Archive / 2007/10/16 / WMI-Dépannage-Impersonation-Rights.aspx


0 commentaires

0
votes

Si vous êtes sûr de disposer des informations d'identification à la fois sur les deux houblons, la prochaine chose que pourrait causer que le problème soit le manque de désinvoltednsidsibilité de la fin du point de terminaison. xxx


0 commentaires