如何使用c#进行抢占式身份验证?

时间:2012-10-18 18:40:20

标签: c# web-services authentication preemptive

我们的客户有一个我们想要从c#.net应用程序中获取的Java Web服务,但是当我尝试使用或调用任何方法时,我收到Internal Error消息。此Web服务需要用户名和密码才能通过服务器(托管WS的位置)进行身份验证。

我使用Soap UI测试Web服务,我从java WS获得响应,但前提是我选择了Preemptive Autorizathion选项。当我选择其他选项时,我得到一个错误,正如我上面写的那样。

WS是用Java开发的,而我们的应用程序是在.NET Framework 2.0中开发的,所以问题是:有没有办法在c#中使用抢先授权进行身份验证?

如果有帮助,WS将托管在HTTPS站点上。

以下是我用于向服务器进行身份验证的一些代码。

NetworkCredential netCredential = new NetworkCredential(username, password); 
Uri uri = new Uri(service.Url);
ICredentials credentials = netCredential.GetCredential(uri, "Basic");
service.Credentials = credentials;
service.PreAuthenticate = true;

我也试过这段代码:

string usernamePassword = username + ":" + password;
CredentialCache mycache = new CredentialCache();
WebRequest myReq = WebRequest.Create(s.Url);
myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes((usernamePassword))));
mycache.Add(new Uri(service.Url), "Basic", new NetworkCredential(username, password));
myReq.Credentials = mycache;
service.Credentials = myReq.Credentials;
service.UserAgent = ".net FrameWork";  

你知道如何解决这个问题吗?

0 个答案:

没有答案