通过重定向进行基本身份验证

本文关键字:身份验证 重定向 | 更新日期: 2023-09-27 18:32:19

我有一个需要基本身份验证标头的 Web 服务。但是,当我使用

   var header = "Authorization: Basic " + 
                CreateBasicHttpAuthenticationHeader(login, password);
   webRequest.Headers.Add(header);
   var webResponse = (HttpWebResponse)webRequest.GetResponse();

它返回 303 - 请参阅其他:

POST https://myservice/rates HTTP/1.1
Authorization: Basic QXZ...NjY=
Content-Type: application/x-content
X-API-Version: 1.1
If-Unmodified-Since: Mon, 23 Sep 2013 08:32:27 GMT
User-Agent: UserAgent

响应:

HTTP/1.1 303 See Other
Date: Mon, 23 Sep 2013 08:30:57 GMT
X-Opaque-ID: q8nxxxxc
Location: https://myservice/rates 
Content-Length: 0

然后,.Net 会自动向新位置发送 GET 请求:

GET https://myservice/rates HTTP/1.1
Content-Type: application/x-content
X-API-Version: 1.1
If-Unmodified-Since: Mon, 23 Sep 2013 08:32:27 GMT
User-Agent: UserAgent

但这次不发送授权标头。您知道一种方法可以告诉它在所有呼叫中发送所有标头吗?我应该告诉它不要遵循内容吗?

通过重定向进行基本身份验证

您必须停用 HttpRequest 的 AllowRedirect 属性。

然后,您必须使用基本的身份验证标头构建自己的重定向系统。

这并不好,但除此之外,.Net 框架会在重定向时删除您的标头。