为什么AuthenticationHeaderValue需要方案
本文关键字:方案 AuthenticationHeaderValue 为什么 | 更新日期: 2023-09-27 18:12:21
我正在按以下方式设置HttpClient
的授权头:
httpClient
.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(null, "abc");
…但是我得到了一个例外:
AuthenticationHeaderValue的scheme不能为空。
为什么AuthenticationHeaderValue
必须有方案?这是特定RFC所要求的吗?
该方案用于确定您正在使用的身份验证类型:
- 基本
- Oauth
- 无记名
- 等。
标题看起来像这样:
{
"key": "Authorization",
"value": "<scheme> <parameter>"
}
尝试使用Postman查看基于HTTP支持的不同类型的身份验证生成的内容
有时您无法使用方案设置授权头。这也是我现在正在做的一个项目的情况。我需要从TOPdesk连接到API,但是没有指定方案。
来自TOPdesk的授权头必须有一个像TOKEN id="0d1739df-8952-41c0-94cd-b25287446b22"
这样的值,所以我不能使用方案。我通过添加Authorization头解决了这个问题,就像下面的例子一样,效果非常好。
client.DefaultRequestHeaders.Add("Authorization", $"TOKEN id='"{token}'"");
对我来说,我需要的授权令牌只是一个base64编码的字符串,没有方案。
示例:授权:SnVzdCBhIGR1bW15IHRva2Vu"。我所连接的API端点拒绝接受类似"基本"这样的方案。或者其他任何东西。我不得不使用:
HttpRequestMessage hrMessage = new HttpRequestMessage ();
hrMessage.Headers.TryAddWithoutValidation("Authorization", "SnVzdCBhIGR1bW15IHRva2Vu");
。