これは実際には、プロセス全体を理解するために多くの個別の質問に分解されます。
私が理解していることから、JWT は互いに別々に base64 にエンコードされた 3 つの JSON オブジェクトです。次に、Base64 文字列がピリオドで区切られます。これは純粋に「より短いメッセージ」の目的で行われますか?
これらには、ヘッダー、「ペイロード」、および署名が含まれます。ヘッダーとペイロードは、傍受した人なら誰でも 100% 読み取ることができます。これらは、JSON にデコードして読み取ることができる単なる base64 文字列です。
次に、MAGIC: サーバーは、デコードできない SIGNATURE を受信します。署名は、実際にはヘッダー、ペイロード、および秘密鍵のハッシュです。したがって、サーバーはヘッダー、ペイロード、および ITS OWN 秘密鍵を受け取り、ハッシュを作成します。このハッシュがメッセージに付属の署名と一致する場合、メッセージは信頼されています。署名が一致しない場合、メッセージは無効です。
このすべての問題?ここの 2 つの別々のキーはどこにありますか? メッセージの暗号化に使用されたキーと、メッセージの復号化に使用されたキーは同じようです。これが私の質問の根源です。他に何も答えない場合は、これを手伝ってください。
それ以外は、プロセスを正しく理解しているのだろうか?また、「公開鍵に同意」し、ここで公開鍵と秘密鍵の「混合物」を取引する標準はどこにありますか? 私が見るのは、エンコード/デコードに使用されているのと同じキーだけです。しかし、合意はいつ行われたのですか?これを .NET と Auth0 のコンテキストで表示すると、全体的に q.
誰かが後でこのqを見ることに興味があるなら、私が見た/読んだ/使用したランダムなもの:
JWT の概要: https://scotch.io/tutorials/the-anatomy-of-a-json-web-token
公開鍵/非対称暗号: https://youtu.be/3QnD2c4Xovk