同僚と私自身は、トークンのトークンの検証方法を理解しようとしていましたが、私たちの読んだところでは、自分自身を混乱させるようです。jwtトークンの確認[rsa]
誰かが私の考えは
- トークンは、秘密鍵を使って署名されている正しいかどうかを確認することができますしてください。署名は、秘密鍵を使用して暗号化されたヘッダーとペイロードの組み合わせであり、署名の最後の部分としてjwtに追加されます。
- トークンを確認するために、受信者は公開鍵を使用してこのプロセスを複製できます。ヘッダーとペイロードを暗号化して、署名と同じかどうかを確認します。これは復号化ではないことに注意してください。受信者はトークンを解読していません(これは私たちが確信している主な事です)。 - 新しいトークンを暗号化する秘密鍵がないため、受信者は新しいトークンを発行できません。
私はRS256とHS256の両方でjwtのドキュメントを読んでいますが、それでも私の思考、したがって投稿を確認するのに苦労しています。
検証するには、クライアントは、提供された公開鍵を使用して、署名がトークンb64u(hhhhhh).b64u(pppppp)の最初の部分と一致することを確認します._この部分はどうやって起こりますか? –
コンパイル済みのJWTで、 'hhhhh'と' ppppp'がb64urlでコード化されています。テキストが混乱する可能性があります。 – pedrofb
クライアントはbase64から署名をデコードし、提供された公開鍵(擬似コード 'verify = verify(signedData、b64_decode(signature)、publicKey)'と一致することを検証します。 'signedData'は' hhhhh.ppppp 'デジタル署名検証は、ほとんどのプログラミング言語でネイティブにサポートされています(内部的には、公開鍵を使用して、signedDataと一致する署名に含まれるハッシュをチェックします)。 – pedrofb