Le serveur a rejeté les informations d'identification du client
J'ai un service WCF avec net.tcp liaison, hébergé sur le serveur en tant que service Windows. Je ne suis pas en mesure d'accéder à ce service. Cependant, j'ai été en mesure de le faire, quand j'ai organisé sur mon réseau local.
D'Erreur Reçu
Message:* * * * Le serveur a rejeté les informations d'identification du client.
Exception Interne:
System.Security.Authentication.InvalidCredentialException:
The server has rejected the client credentials.
---> System.ComponentModel.Win32Exception:
The logon attempt failed --- End of inner exception stack trace
--- at System.Net.Security.NegoState.ProcessAuthentication(LazyAsyncResult lazyResult)
at System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential credential, ChannelBinding binding, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
at System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential credential, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
at System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade(Stream stream, SecurityMessageProperty& remoteSecurity)
Ai essayé de chercher la solution, mais n'en trouve aucune qui correspond à mes besoins, donc posté ici.
Quel pourrait être le problème?
Si je fais mon mode de sécurité à l'absence sur le client
<security mode="None"></security>
Je reçois un autre message d'erreur:
Erreur: La connexion de socket a été abandonnée. Cela pourrait être causé par une erreur de traitement de votre message ou de réception délai d'attente dépassé par l'hôte distant, ou un réseau sous-jacent problème de ressources. Socket Local délai d'attente a été '00:00:59.5149722'.
- Vous devez spécifier le compte sur lequel le service windows s'exécute. Est-ce système de compte / compte d'utilisateur? En outre, ce genre de WCF authentification utilisez-vous?
- service windows s'exécute sous le Compte Système Local et il n'y a pas de WCF authentification utilisé. Dans le cas où vous avez besoin d'autres infos, faites le moi savoir
- probablement les informations d'identification NTLM échouer. Essayez d'exécuter le service que le client de l'utilisateur. Et regardez aussi: msdn.microsoft.com/en-us/library/ms730301(SV.90).aspx pour les annonymous des connexions sécurisées
Vous devez vous connecter pour publier un commentaire.
J'ai juste eu le même problème en essayant d'obtenir un serveur dans le DMZ de parler à un service à l'intérieur de mon réseau. La solution qu'il fixe pour moi a été d'ajouter les éléments suivants à l'application.config:
Note le nœud sécurité.
L'erreur est un TokenImpersonation erreur.
Ce qui semble se passer, c'est que l'appel arrive, un peu de code côté serveur nécessite que l'utilisateur est représenté par le code du serveur.
Le code serveur s'exécute sous le compte système local, il n'est donc pas en mesure d'usurper l'identité d'un utilisateur de domaine.
Vous avez 2 options de base:
Je sais que cela a déjà été répondu avec "désactiver la sécurité". Mais dans le cas où quelqu'un est intéressé, j'ai réussi à obtenir de la WCF de Transport de l'authentification Windows à l'aide de NetTcpBinding dans un environnement Intranet de travail sur moi-même après une grande partie de la douleur.
Essentiellement, il est descendu à l'aide de cette configuration:
Vous pouvez voir un peu plus en détail dans le billet de blog WCF Transport de l'authentification Windows à l'aide de NetTcpBinding dans un environnement Intranet.
Le nôtre est un Windows formulaire de demande de connexion à un service WCF au sein de l'intranet local. Le niveau de sécurité a été configuré pour l'authentification Windows. Nous avons eu cette erreur de temps en temps. De l'enquête, nous avons constaté que le mot de passe Windows a expiré. Après avoir changé le mot de passe, tous travaillé comme d'habitude...
C'est une façon simple de vérifier si vous obtenez cette erreur de temps en temps.
Il semble que la demande du client n'est pas authentifié sur le serveur. Vous pourriez trouver des informations utiles ici et ici.
La deuxième erreur que vous a obtenu que "Socket de connexion a été interrompue" vient habituellement, lorsque vous essayez de pompe trop de données à partir de votre service.
Je vous recommande de l'utilisateur de l'emprunt d'identité pour obtenir les informations d'identification de travailler à droite d'abord, puis de réfléchir sur le rappel de la question.
Vous pouvez trouver des informations utiles sur l'emprunt d'identité dans Comment: emprunter l'identité d'un Client à un Service.
Similaire à @vonbalaji, j'ai vu cela quand le compte a été verrouillé en raison d'avoir saisi un mot de passe incorrect plusieurs fois.