Sto provando a fare in modo che il server e il client WCF si autenticano reciprocamente utilizzando i certificati SSL a livello di trasporto utilizzando BasicHttpBinding. Ecco come è sempre creato il server:BasicHttpBinding con autenticazione del certificato - errore "vietato"?
var soapBinding = new BasicHttpBinding() { Namespace = "http://test.com" };
soapBinding.Security.Mode = BasicHttpSecurityMode.Transport;
soapBinding.Security.Transport.ClientCredentialType =
HttpClientCredentialType.Certificate;
var sh = new ServiceHost(typeof(Service1), uri);
sh.AddServiceEndpoint(typeof(IService1), soapBinding, "");
sh.Credentials.ServiceCertificate.SetCertificate(
StoreLocation.LocalMachine, StoreName.My,
X509FindType.FindBySubjectName, "localhost");
sh.Open();
Ecco il cliente:
var binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
var service = new ServiceReference2.Service1Client(binding,
new EndpointAddress("https://localhost:801/Service1"));
service.ClientCredentials.ClientCertificate.SetCertificate(
StoreLocation.LocalMachine, StoreName.My,
X509FindType.FindBySubjectName, "localhost");
service.ClientCredentials.ServiceCertificate.Authentication.
CertificateValidationMode =
System.ServiceModel.Security.X509CertificateValidationMode.PeerTrust;
service.HelloWorld();
certificato per localhost è in Personal, radice di fiducia e di fiducia contenitori 3rd Party. Internet Explorer può connettersi all'host e vedere WSDL. Inoltre, le chiamate SSL funzionano bene con clientCredentialType = HttpClientCredentialType.None
HelloWorld() non riesce con:
System.ServiceModel.Security.MessageSecurityException occurred<br/>
Message="The HTTP request was forbidden with client authentication
scheme 'Anonymous'."
che è un'eccezione rilanciati da: "Il server remoto ha restituito un errore:. (403) Forbidden"
come si va in giro a capire che sta succedendo?
Non posso credere che fosse così facile e io non prenderla :( – galets
Ho lo stesso problema, ma dove l'app.config ha: nell'elemento di trasporto :-( –
Ronnie
Sto cercando di risolvere un problema simile - Ho appena provato il tuo codice ma "aggiungi riferimento servizio" non ha funzionato sul client . Non credo che potresti allegare la tua intera soluzione? – user1229458