jwt は単なる略語で、完全なスペルは JSON Web Tokens です。これは、人気のあるクロスドメイン認証ソリューションであり、ネットワーク上で特定のクレームを宣言するために使用される JSON ベースのトークンです。
JWT の原則
jwt 検証方法では、サーバーがリクエストするたびにユーザー情報を暗号化してトークンを生成します。保存されたキーを使用してトークンの正当性を検証するだけで、セッション データを保存する必要がなく、サーバーはステートレスになり、拡張が容易になります。
暗号化前のユーザー情報:
{ "username": "vist", "role": "admin", "expire": "2018-12-08 20:20:20" }
クライアントが受信したトークン:
7cd357af816b907f2cc9acbe9c3b4625
JWT 構造
Aトークンは 3 つの部分に分かれています:
header
payload
Signature(signature)
3 つの部分は、次のように「.」で区切られます。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Header
JWT ヘッダー部分は、メタデータを記述する JSON オブジェクト。通常:
{ "typ": "JWT", "alg": "HS256" }
typ は宣言タイプで、「JWT」を指定します。
alg は暗号化アルゴリズムで、デフォルトは「HS256」です
Load
ペイロードはデータのキャリアであり、必要な実際のデータ情報を保存するために使用されます。送信される場合も JSON オブジェクトです。
JWT 公式推奨フィールド:
iss: jwt 発行者
sub: ユーザー向け jwt
aud: jwt を受信する側
{ "username": "vist", "role": "admin" }
署名
署名部分は、最初の 2 つの部分 (ヘッダー部分、ペイロード) はデータの改ざんを防ぎます。 次の手順に従って生成します: 1. 最初にシークレットを指定します2. ヘッダーとペイロードの情報をそれぞれ Base64 に変換します3.ヘッダーで指定されたアルゴリズムを使用して暗号化します。#最後に、署名 = HMACSHA256(base64UrlEncode(header) "."base64UrlEncode(payload),secret)
クライアントによって取得された署名:
header.payload.signature
JWT を再暗号化することもできます。
JWT の使用法1. サーバーは、ユーザーのログイン状態に応じてユーザー情報をトークンに暗号化し、クライアントに返します
2 . クライアント クライアントは、サーバーから返されたトークンを受信し、それを cookie
3 に保存します。クライアントとサーバー間の各通信によってトークンがもたらされ、http リクエスト ヘッダー情報に配置できます。 : 承認フィールド内
4. サーバーはトークンを復号化し、内容を検証し、対応するロジックを完了します
##JWT 機能
JWT はより簡潔で、Passed in HTML および HTTP 環境での使用に適しています。
JWT は、次のような 1 回限りの検証に適しています: アクティベーション電子メール
JWT はステートレス認証に適しています
JWT はサーバーサイド CDN コンテンツ配信に適しています
データベース セッション クエリよりも時間を節約できます。
JWT はデフォルトでは暗号化されません。
トークンをキャンセルしたり、トークンの権限を変更したりすることはできません。使用中は
以上がjwtとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。