web-dev-qa-db-ja.com

JSON Web Signature(JWS)とJSON Web Token(JWT)の違いは何ですか?

JavaでRESTfulサービスをコーディングしてきました。これは私がこれまで理解してきたことです(間違っている場合は修正してください):

トークン認証は、JSON Web Tokens(JWT)を使用して行われます。3つの部分:ヘッダー、ペイロード、および秘密(クライアントとサーバー間で共有)。

私はこの概念を理解し、JWTについて読んでいる間JSON Web Signature(JWS)につまずいた。

JWSは、ヘッダー、ペイロード、および共有シークレットを持つJWTに似たエンコードされたエンティティでもあります。

質問:2つの概念、つまりJWTとJWSの違いは何ですか?技術的に似ている場合、実装の違いは何ですか?

トークンベースの認証を使用するのはこれが初めてなので、コンセプトを完全に誤解している可能性があります。

追伸 このWebサイト の例を参照しながら、JWSについて学びました。

44
leo

JWTは実際にはses仕様からの署名用のJWS:

JSON Web Token(JWT)は、2者間で転送されるクレームを表すコンパクトでURLセーフな手段です。 JWTのクレームは、JSON Web署名(JWS)構造のペイロードまたはJSON Web暗号化(JWE)構造のプレーンテキストとして使用されるJavaScript Object Notation(JSON)オブジェクトとしてエンコードされます。デジタル署名、MAC、および/または暗号化。

したがって、JWTは、JSONオブジェクトをペイロードとして持つJWS構造です。 issaudexpなど、いくつかのオプションのキー(またはクレーム)が定義されています。

これは、その完全性保護が共有秘密に限定されるだけでなく、公開/秘密キー暗号化も使用できることも意味します。

42
Hans Z.