为什么AuthenticationHeaderValue需要该方案?

Nic*_*ick 7 .net c# authorization http-headers dotnet-httpclient

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

httpClient
    .DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(null, "abc");
Run Code Online (Sandbox Code Playgroud)

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

AuthenticationHeaderValue的"scheme"不能为null.

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

Mic*_*ael 13

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

  • 基本
  • 端Oauth
  • 来人
  • 消化
  • 等等

标题将如下所示:

{
   "key": "Authorization",
   "value": "<scheme> <parameter>"
}
Run Code Online (Sandbox Code Playgroud)

尝试使用Postman查看基于HTTP支持的不同类型的身份验证生成的内容.

  • 真的很惊讶没有包含这些值的枚举。:哦 (2认同)

Max*_*Max 6

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

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

client.DefaultRequestHeaders.Add("Authorization", $"TOKEN id=\"{token}\"");
Run Code Online (Sandbox Code Playgroud)

我知道这是一个古老的问题,但我认为将来也许有人会看一下这个答案并发现它有用。我以同样的方式遇到了这个问题。

  • 在这种情况下,该方案肯定是“TOKEN”吗? (2认同)