web-dev-qa-db-ja.com

AuthenticationHeaderValueにスキームが必要なのはなぜですか?

HttpClientの認証ヘッダーを次のように設定しています。

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

...しかし例外が発生しています:

AuthenticationHeaderValueの「スキーム」をnullにすることはできません。

なぜAuthenticationHeaderValueにスキームが必要なのですか?これは特定のRFCで必要ですか?

8
Nick

このスキームは、使用している認証の種類を決定するために使用されます。

  • 基本
  • Oauth
  • ベアラー
  • ダイジェスト
  • 等.

ヘッダーは次のようになります。

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

Postman を使用して、HTTPでサポートされているさまざまなタイプの認証に基づいて何が生成されるかを確認してください。

13
Michael

スキームでAuthorizationヘッダーを設定できない場合があります。これは、私が現在取り組んでいるプロジェクトにも当てはまります。 TOPdesk からAPIに接続する必要がありますが、スキームが指定されていません。

TOPdeskのAuthorizationヘッダーにはTOKEN id="0d1739df-8952-41c0-94cd-b25287446b22"のような値が必要なので、スキームを使用できません。次の例のようにAuthorizationヘッダーを追加することで問題を解決しましたが、これは魅力のように機能します。

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

古い質問だとは思いますが、将来誰かがこの答えを見て、役に立つと思うかもしれません。私も同じようにこの質問に出くわしました。

6
Max