我一直在努力尝试使用服务器中托管的网络服务,我无法控制(因此我无法在服务器部分进行任何配置)
我一直在使用WCF尝试使用同时具有用户名/密码和证书身份验证要求(以及HTTPS连接)的Web服务。
我的代码是:
EndpointAddress ea = new
EndpointAddress("https://the.server.address");
BasicHttpBinding bs = new BasicHttpBinding();
bs.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
bs.Security.Transport.ClientCredentialType =
HttpClientCredentialType.Certificate;
//here if I put username I get a 'message is not signed' error.
If I put credentials I get an 'invalid username/password'.
bs.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
var svc = new myWebServiceClient(bs, ea);
var request = new ObjectWS();
svc.ClientCredentials.ClientCertificate.SetCertificate(
StoreLocation.CurrentUser,
StoreName.Root,
X509FindType.FindBySerialNumber,
"the serial");
svc.ClientCredentials.UserName.UserName = "user";
svc.ClientCredentials.UserName.Password = "pass";
//the call to the method in the WS
request= svc.getValue("param");
问题在于,由于我是WCF中的新手(以及一般的WebServices),我实际上并不知道如何使用用户名和证书身份验证来使用Web服务,我也不知道是否没有任何意义。
在行中:
bs.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
如果我将凭证类型设置为证书,则会收到无效的用户名/密码。另一方面,如果我将其设置为用户名,我将收到“消息未签名错误”。
我非常感谢这个问题的一些反馈/帮助。此致!