为什么AuthenticationHeaderValue需要该方案?

时间:2016-10-10 21:58:37

标签: c# .net http-headers authorization dotnet-httpclient

我按以下方式设置HttpClient的授权标头:

httpClient
    .DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(null, "abc");

......但我得到了例外:

  

AuthenticationHeaderValue的“scheme”不能为空。

为什么AuthenticationHeaderValue必须有一个计划?这是否需要特定的RFC?

2 个答案:

答案 0 :(得分:11)

该方案用于确定您正在使用的身份验证类型:

  • 基本
  • 的Oauth
  • 承载
  • 摘要

标题如下所示:

{
   "key": "Authorization",
   "value": "<scheme> <parameter>"
}

尝试使用Postman根据HTTP支持的不同类型的身份验证查看生成的内容。

答案 1 :(得分:1)

有时您不能使用方案设置Authorization标头。我现在正在研究的一个项目也是如此。我需要从TOPdesk连接到API,但是未指定任何方案。

TOPdesk的Authorization标头必须具有类似TOKEN id="0d1739df-8952-41c0-94cd-b25287446b22"的值,因此我不能使用方案。我像下面的示例一样通过添加Authorization标头解决了该问题,并且它的工作原理像一个超级按钮。

client.DefaultRequestHeaders.Add("Authorization", $"TOKEN id=\"{_token}\"");

我知道这是一个老问题,但我认为将来可能有人会看这个答案并觉得有用。我以同样的方式遇到了这个问题。