如何在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

如何在ASP.Net中为web请求集发送身份验证头

你试过这样吗:

 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参考