私は JWTトークンに最適なAuthorization
HTTPヘッダータイプが何であるか疑問に思います 。
おそらく最も普及しているタイプの1つはBasic
です。例えば:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
ログインとパスワードなどの2つのパラメータを処理します。そのため、JWTトークンには関係ありません。
また、私はBearer typeについて聞きました、例えば:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
しかし、その意味はわかりません。それはクマと関係がありますか?
HTTPのAuthorization
ヘッダでJWTトークンを使う特別な方法はありますか? Bearer
を使うべきか、あるいは単純化して単に使うべきですか:
Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
ありがとう。
編集:
あるいはJWT
というHTTPヘッダだけでもいいでしょう:
JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
クライアントがアクセストークン(JWTまたはその他のトークン)を送信するのに最適なHTTPヘッダーは、Authorization
認証方式のBearer
ヘッダーです。
この計画は RFC6750 によって記述されています。
例:
GET /resource HTTP/1.1 Host: server.example.com Authorization: Bearer eyJhbGciOiJIUzI1NiIXVCJ9...TJVA95OrM7E20RMHrHDcEfxjoYZgeFONFh7HgQ
より強力なセキュリティ保護が必要な場合は、次のIETFドラフトを検討することもできます。 https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture 。このドラフトは(放棄された?) https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac に代わる良い方法のようです。
このRFCと上記の仕様がOAuth2フレームワークプロトコルに関連していても、クライアントとサーバー間のトークン交換を必要とする他のどのコンテキストでも使用できます。
あなたがあなたの質問で言及したカスタムのJWT
スキームとは異なり、 Bearer
はIANAに登録されています 。
Basic
およびDigest
認証方式に関しては、それらはユーザ名と秘密( RFC7616 および RFC 7617 を参照)を使った認証専用であるため、この文脈では適用できません。
Bearer
認証スキームが探しています。
それはクマに関連していますか?
エラー...いいえ:)
Oxford Dictionaries によると、ここにbearerの定義があります:
ベアラー / ˈbɛːrə /
名詞
何かを運ぶまたは保持する人または物。
お金を支払うために小切手またはその他の注文を提示する人。
最初の定義には、messenger、agent、conveyor、 エメッセリー、キャリア、provider。
RFC 6750 によるベアラートークンの定義は次のとおりです。
ベアラートークン
トークンの所有者(「持ち手」)が、トークンを所有する他の当事者が使用できる方法でトークンを使用できるプロパティを持つセキュリティトークン。ベアラトークンを使用する場合、ベアラは暗号化キーマテリアルの所有を証明する必要はありません(所有の証明)。
Bearer
認証スキームは IANA に登録されており、元々 RFC 6750 でOAuth 2.0認証フレームワーク用に定義されています。しかし、OAuth 2.0を使用しないアプリケーションでアクセストークンにBearer
スキームを使用することを妨げるものはありません。
できる限り標準に準拠し、独自の認証スキームを作成しないでください。
アクセストークンは、Authorization
認証スキームを使用して、 Bearer
要求ヘッダーで送信する必要があります。
HTTP/1.1で定義されている
Authorization
要求ヘッダーフィールドでアクセストークンを送信する場合、クライアントはBearer
認証スキームを使用してアクセストークンを送信します。例えば:
GET /resource HTTP/1.1 Host: server.example.com Authorization: Bearer mF_9.B5f-4.1JqM
[...]
クライアントは、
Authorization
HTTP承認スキームでBearer
要求ヘッダーフィールドを使用して、ベアラートークンで認証された要求を行う必要があります。 [...]
トークンが無効または欠落している場合、Bearer
スキームを WWW-Authenticate
応答ヘッダーに含める必要があります。
3。 WWW-Authenticate応答ヘッダーフィールド
保護されたリソースリクエストに認証資格情報が含まれていない場合、または保護されたリソースへのアクセスを可能にするアクセストークンが含まれていない場合、リソースサーバーにはHTTP
WWW-Authenticate
応答ヘッダーフィールド[...]を含める必要があります。この仕様で定義されるすべてのチャレンジは、auth-scheme値
Bearer
を使用する必要があります。このスキームの後には、1つ以上のauth-param値が必要です。 [...]。たとえば、認証なしの保護されたリソース要求への応答:
HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer realm="example"
また、期限切れのアクセストークンを使用した認証試行による保護されたリソース要求への応答:
HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer realm="example", error="invalid_token", error_description="The access token expired"