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

时间:2014-04-21 06:50:18

标签: c# jquery asp.net rest authentication

我正在开发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

4 个答案:

答案 0 :(得分:0)

你试试这样:

 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/

答案 1 :(得分:0)

您可以尝试使用以下代码代替" request.Headers.Add("授权","基本" +编码);"

  request.Headers.Add(HttpRequestHeader.Authorization, "Basic " + 
  Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("user:password")));

答案 2 :(得分:0)

我相信你可以添加

request.PreAuthenticare = true

答案 3 :(得分:0)

您可能会寻找HttpWebRequest.Credentials属性。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(loginInstance);
request.Credentials = CredentialCache.DefaultCredentials;

上面的示例包含当前登录用户的凭据。

“ Credentials属性可以是NetworkCredential,在这种情况下,NetworkCredential对象中包含的用户,密码和域信息将用于验证请求,也可以是CredentialCache”。

MSDN Reference