如何在ASP.Net中为web请求集发送身份验证头
本文关键字:身份验证 请求 web ASP Net 中为 | 更新日期: 2023-09-27 17:59:13
我正在开发ASP.net应用程序,该应用程序使用ASP.net Web API使用REST服务。我正在尝试对我的网站使用基本身份验证。我计划在完成基本身份验证后将其与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;
我想我需要向所有需要安全并通过身份验证的web api请求发送身份验证头。
有没有一种方法可以将身份验证头附加到我发送的每个请求,甚至附加到一组请求?请注意:大多数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("Authorization","Basic"+encoded);"吗。
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,在这种情况下,NetworkCredentials对象中包含的用户、密码和域信息用于对请求进行身份验证,也可以是CredentialCache"。
MSDN参考