如何使用Authenticationresult设置Httpwebrequest身份验证标头

时间:2016-09-27 20:23:42

标签: c# http authentication web

我需要使用AuthenticationContext中的AuthenticationResult为我的http web请求设置auth标头:

 AuthenticationContext authContext = new AuthenticationContext("http://blabla/token");

 Task<AuthenticationResult> resultTask = authContext.AcquireTokenAsync(
               "http://blabla/service",
               "SomeGuid",
               new Uri("http://authlogin"),
               new Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters(PromptBehavior.Auto, false));

 resultTask.Wait();
 AuthenticationResult result = resultTask.Result;
 HttpWebRequest request = WebRequest.CreateHttp("http://MyApi/method");
 //Set headers for request

我需要将身份验证结果传递给我的请求标头。我知道我可以做到

request.Headers[HttpRequestHeader.Authorization] = //something

我只是不知道应该是什么。任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:0)

Here是关于基本HTTP身份验证的Wiki文章,它在标题中传递。

为方便起见,这里有一些代码实现了基本的Auth Token:

string auth = string.Format("{0}:{1}", userName, password);
string enc = Convert.ToBase64String(Encoding.ASCII.GetBytes(auth));
string cred = string.Format("{0} {1}", "Basic", enc);
reqest.Headers[HttpRequestHeader.Authorization] = cred;

请注意,您可以通过设置request.Credential来替换它,而不是构建自己的标头值。这使得代码更清晰,但是如果服务器响应Auth故障(401),您的请求将不会通过Auth报头,因此这种方法会在安全端点上产生更多网络流量。