La requête HTTP a été interdit par le schéma d'authentification client "Anonyme"
Je suis en train de configurer un serveur WCF\client de travailler avec SSL
- Je obtenir de l'exception suivante:
La requête HTTP a été interdit par le schéma d'authentification client
'Anonyme'
J'ai une auto hébergé WCF serveur.
J'ai couru hhtpcfg
mon client et de serveur de certificats sont stockés sous Personnel et des Personnes de Confiance sur la Machine Locale
Voici le code du serveur:
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
binding.Security.Mode = WebHttpSecurityMode.Transport;
_host.Credentials.ClientCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.PeerOrChainTrust;
_host.Credentials.ClientCertificate.Authentication.RevocationMode = X509RevocationMode.NoCheck;
_host.Credentials.ClientCertificate.Authentication.TrustedStoreLocation = StoreLocation.LocalMachine;
_host.Credentials.ServiceCertificate.SetCertificate("cn=ServerSide", StoreLocation.LocalMachine, StoreName.My);
Code Client:
binding.Security.Mode = WebHttpSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
WebChannelFactory<ITestClientForServer> cf =
new WebChannelFactory<ITestClientForServer>(binding, url2Bind);
cf.Credentials.ClientCertificate.SetCertificate("cn=ClientSide", StoreLocation.LocalMachine, StoreName.My);
ServicePointManager.ServerCertificateValidationCallback
+= RemoteCertificateValidate;
Regardant web_tracelog.svclog et de trace.journal
révèle que le serveur ne peut pas autheticate le certificat du client
Mon certificat ne sont pas signés par une personne Autorisée CA
mais c'est pourquoi j'ai ajouté à la Confiance des Gens....
Ce qui me manque?
Ce qui me manque?
OriginalL'auteur Dudi | 2010-06-09
Vous devez vous connecter pour publier un commentaire.
L'astuce était de rendre le Client le Certificat est valide,
Pour cela, vous avez deux options:
1) rendre auto-signé, puis le mettre sous la "Racine de Confiance de l'Autorité de Certification".
Évidemment dans la production que vous souhaitez que votre client certificat signé par une autorité de certification de confiance et de ne pas auto-signé.
voir http://msdn.microsoft.com/en-us/library/ms733813.aspx
2) Signer votre certificat du client par un autre certificat que vous avez créé (appelons ça de la MyCA) et de mettre MyCA dans la "Racine de Confiance de l'Autorité de Certification" et ont le certificat du client dans les "Personnes de Confiance". De cette façon, votre environnement de développement est encore plus proche du déploiement.
Comment créer et signer les certificats:
Regardez sous http://msdn.microsoft.com/en-us/library/bfsktky3.aspx
Ici est la série de commandes que j'ai utilisé:
1)makecert -r -pe-ss Mon -sr LocalMachine -sha1 -ciel de change -n cn=MyCA -sv "MyCAPrivate.pvk"
2) makecert -pe-ss Mon -sr LocalMachine -sha1 -ciel de change -n cn=SignedClientCertificate -iv "MyCAPrivate.pvk" -ic "MyCAPublic.cer"
OriginalL'auteur
La raison qui m'a réception de cette erreur parce que dans mon webconfig, les services web a l'URL de
http://localhost/myservicename.svc
et sur notre serveur de dev, nous avons eu un nom de domaine complethttp://dev.myname.com/myservicename.svc.
Double vérifier votre site web.les configs pour s'assurer que les URL vers les services web sont pointant vers l'emplacement approprié.
OriginalL'auteur