1

J'ai récemment commencé à utiliser un ServiceHostFactory personnalisé car je veux utiliser l'injection de dépendance avec WCF. Mon client et mon service sont exécutés à partir de VS2010 sur ma machine locale et le service utilise le serveur de développement ASP.NET. Pourquoi ai-je ce problème maintenant? J'ai eu du succès avec wsHttpSecurity dans le passé, ayant à la fois le client et le service sur ma machine locale. Je pense vraiment que la seule différence ici est l'utilisation d'un ServiceHostFactory. J'ai essayé d'utiliser l'attribut userPrincipalName mais je ne suis même pas sûr de ce que je devrais mettre pour la valeur. Est-ce que ce devrait être MachineName \ nom d'utilisateur? Cet attribut fera-t-il une différence? J'apprécierais grandement toute aide que vous pourriez fournir.Obtention de "La négociation SSPI (Security Support Provider Interface) a échoué" lors de l'utilisation d'un ServiceHostFactory

Répondre

4

UserNamePrincipal décrit les informations d'identification du service. Si vous définissez UPN sur un compte, vous déclarez que le service sera hébergé en cours d'exécution sous ce compte. Cette information est transmise en WSDL au client. Lorsque le client ouvre le canal vers le service, il valide d'abord que le service est en cours d'exécution sous le compte revendiqué (une poignée de sécurité). Si aucune exception n'est générée car le service n'est pas authentifié. Si vous exécutez le service sur le serveur de développement, vous devez définir UPN sur votre compte actuel.

+0

Cela a fonctionné. Merci. Quelle est la différence entre userPrincipalName et servicePrincipalName. Les gens doivent-ils généralement définir le servicePrincipalName lors de l'utilisation de WCF sur Internet? – SideFX

+1

Aucun d'entre eux n'est utilisé pour la communication sur Internet. Cela fonctionne uniquement dans le même domaine Windows (ou domaines approuvés). Le principal utilisateur est juste le nom d'utilisateur. Pour la description de la vérification du principal de service: http://technet.microsoft.com/en-us/library/cc961723.aspx Le service principal est requis pour l'authentification Kerberos. –

+0

Même si la solution ci-dessus a fonctionné, elle ne fonctionne que lorsque je suis connecté au réseau de mon entreprise. Quand je suis "hors ligne", j'obtiens la même exception de sécurité. – SideFX