如何在ASP.Net中发送用于Web请求集的身份validation标头
我正在开发ASP.net应用程序,它使用ASP.Net Web API来使用REST服务。 我正在尝试为我的网站使用基本身份validation。 完成基本身份validation后,我计划将其与SSL一起使用。
目前在登录按钮上单击我正在使用用户名和密码的Base64编码发送Auth标头,如下所示:
string responseData = string.Empty; string authToken = string.Empty; string loginInstance = url; // Create request. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(loginInstance); request.Method = "POST"; request.ContentType = "application/json"; request.CookieContainer = new CookieContainer(); String username = txtUserName.Text; String password = txtPassword.Text; String encoded = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password)); request.Headers.Add("Authorization", "Basic " + encoded); request.ContentLength = 0; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8); String resultData = reader.ReadToEnd(); bool result = false; result = Convert.ToBoolean(resultData); return result;
我假设我需要向所有需要安全并通过身份validation的web api请求发送身份validation标头。
有没有办法将身份validation标头附加到我发送的每个请求甚至一组请求? 请注意:大多数Web API请求都是通过JQuery调用的。
如果这不是推荐的实施方法,请告诉我。
问候,
Abhilash
你试过这样的:
WebRequest request = (HttpWebRequest)WebRequest.Create("https://yoururl"); request.Headers.Add(HttpRequestHeader.Authorization, "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("user:password")));
使用消息处理程序在asp.net web api中进行基本的http认证。 http://www.piotrwalat.net/basic-http-authentication-in-asp-net-web-api-using-message-handlers/
您可以尝试使用以下代码替换“request.Headers.Add(”授权“,”基本“+编码);” 。
request.Headers.Add(HttpRequestHeader.Authorization, "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("user:password")));
我相信你可以添加
request.PreAuthenticare = true
您可以查找HttpWebRequest.Credentials
属性。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(loginInstance); request.Credentials = CredentialCache.DefaultCredentials;
上面的示例包含当前登录用户的凭据。
“Credentials属性可以是NetworkCredential,在这种情况下,NetworkCredential对象中包含的用户,密码和域信息用于validation请求,或者它可以是CredentialCache”。
MSDN参考