web-dev-qa-db-ja.com

署名付き認証トークンとは何ですか?

現在、私はJWTについて学び、トークンベースの認証から始めました。 記事 からの文章がわかりません:

トークンベースの認証は、サーバーへの各要求にsignedトークンが付随していることを確認することで機能します。このトークンは、サーバーが信頼性を確認してから、要求に応答するだけです。

署名されたトークンとは何ですか?トークンに署名するとはどういう意味ですか? SOで質問が見つかりません。

12
Artem Malchenko

署名は、検証できるものです。

解決しようとしている主な問題はこれです。サーバーは任意の値、つまりトークンを作成し、それをクライアントに提供します。その後、クライアントはそれを何かの証拠としてサーバーに返します(たとえば、認証されていることの証明)。さて、サーバーはトークンが本物であり、クライアントがそれを作成しただけではないことをどのように確認できますか?

そこで署名が入ります。これはトークンの一部であり、サーバーは以前にその署名を作成したこと、およびこの特定のトークンに対して署名が作成されたことを確認できます。一言で言えば、署名はトークンの内容のハッシュとサーバーだけが所有する秘密です。署名を検証するために、サーバーはトークンの内容とそれだけが持つシークレットのハッシュを繰り返します。一致する場合は、トークンの署名が同じ方法で作成されている必要があり、信頼性の2つの望ましい属性が保証されます。

JWTシグネチャが具体的にどのように計算されるかについての厄介な詳細については、 仕様 をお読みください。

10
deceze