【问题标题】:Why is the scheme required for AuthenticationHeaderValue?为什么 AuthenticationHeaderValue 需要方案?
【发布时间】:2017-02-19 09:54:31
【问题描述】:

我正在通过以下方式设置HttpClient 的授权标头:

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

...但我得到了例外:

AuthenticationHeaderValue 的“scheme”不能为空。

为什么AuthenticationHeaderValue 必须有一个方案?这是特定 RFC 要求的吗?

【问题讨论】:

  • 令人失望的是,接受的答案并没有真正回答您的问题,为什么您必须使用方案,或者在没有方案的情况下如何做到这一点,因为并不总是需要方案(例如自定义授权标头检查) .

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


【解决方案1】:

该方案用于确定您正在使用哪种身份验证:

  • 基本
  • 认证
  • 承载者
  • 摘要

标题将如下所示:

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

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

【讨论】:

【解决方案2】:

有时您无法使用方案设置授权标头。我现在正在做的一个项目也是如此。我需要从TOPdesk 连接到 API,但没有指定方案。

来自 TOPdesk 的 Authorization 标头必须具有像 TOKEN id="0d1739df-8952-41c0-94cd-b25287446b22" 这样的值,所以我不能使用方案。我通过添加如下示例的授权标头解决了这个问题,它就像一个魅力。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    相关资源
    最近更新 更多