ホームページ >ウェブフロントエンド >フロントエンドQ&A >Nodejs jwtとは何ですか
#このチュートリアルの動作環境: Windows7 システム、nodejs バージョン 12.19.0、DELL G3 コンピューター。nodejs では、jwt の正式名は Json Web トークンです。これは、ネットワーク アプリケーション環境間でステートメントを転送するために実装された JSON に基づくオープン標準です。 JWT クレームは通常、リソース サーバーからリソースを取得するために、アイデンティティ プロバイダーとサービス プロバイダーの間で認証されたユーザー ID 情報を渡すために使用されます。
nodejs の JWT とは
Json Web トークン (JWT) は、ネットワーク アプリケーション環境間でクレームを転送するために使用される実行のタイプです。 JSON オープン スタンダード (RFC 7519) に基づいています。トークンはコンパクトかつ安全になるように設計されており、分散サイトでのシングル サインオン (SSO) シナリオに特に適しています。JWT クレームは通常、認証されたユーザー ID 情報は、リソース サーバーからリソースを取得するために、アイデンティティ プロバイダーとサービス プロバイダーの間で渡されます。他のビジネス ロジックに必要な追加の宣言情報も追加できます。トークンは、認証に直接使用することもできます。Json Web トークンはどのように作成されますか?
1. セッションの保存にはサードパーティのキャッシュが使用されますが、これは不便です。クライアントはユーザー名とパスワードを使用してサーバーにログインします; 2. サーバーはクライアントの身元が確認されます; 3. サーバーはユーザーのトークンを生成し、それをサーバーに返しますclient; 4. クライアントはトークンをローカル ブラウザに、通常は Cookie に保存します ;5. クライアントがリクエストを開始するとき、トークンを運ぶ必要があります;6. サーバーはリクエストを受信すると、まずトークンを検証してからデータを返します。サーバー トークンを保存する必要はなく、トークンに含まれる情報のみを検証する必要があります。 ; ユーザー情報が確認できる限り、クライアントがバックグラウンドでどのサーバーにアクセスしても問題ありません。
Json Web トークンとはどのようなものですか?
名前から、これが json であることがわかります。 は 3 つの部分で構成されます: Header (ヘッダー)、通常はデフォルトのものを使用しますが、ほとんど変更はありません:{ ‘typ’:‘JWT’, ‘alg’:‘HS256’ }(playload)、すべてがここにインストールされます、デフォルトのコンテンツは:
{ ‘iss’:‘签发者’, ‘sub’:‘面向的用户’, ‘aud’:‘接收方’, ‘exp’: 过期时间, ‘iat’: 创建时间, ‘nbf’: 在什么时间之前,该Token不可用, ‘jti’:‘Token唯一标识’ }ユーザーはニーズに応じて定義できます。トークンで送信されるコンテンツは通常、ユーザー名、ロール、およびその他の情報をトークンに組み込みます。 (署名)、最初の 2 つの部分が文字列に変換された後、base64 エンコードを使用して暗号化して文字列を取得します。
トークン = ヘッダー (base64) ペイロード (base64) 署名;
実装プロセス
–> ユーザーがログインすると、サーバーはトークン (暗号化された文字列) を生成し、フロントエンドに送信します。トークンを保存します (任意の場所に保存します) どちら) –> フロントエンドがデータ要求を開始すると、トークン –> サーバーはトークンが合法、合法であれば操作を続行、違法であれば操作を終了 トークンの使用シナリオ: ステートレス リクエスト、ユーザー ログイン ステータスの維持、サードパーティ ログイン (トークン認証 2.0) サポートアルゴリズム## 开发时使用 安装 使用 更多node相关知识,请访问:nodejs 教程!!
alg参数值
数字签名或MAC算法
HS256
使用SHA-256哈希算法的HMAC
HS384
使用SHA-384哈希算法的HMAC
HS512
使用SHA-512哈希算法的HMAC
RS256
使用SHA-256哈希算法的RSASSA-PKCS1-v1_5
RS384
使用SHA-384哈希算法的RSASSA-PKCS1-v1_5
RS512
使用SHA-512哈希算法的RSASSA-PKCS1-v1_5
PS256
使用SHA-256哈希算法的RSASSA-PSS(仅节点^ 6.12.0 OR> = 8.0.0)
PS384
使用SHA-384哈希算法的RSASSA-PSS(仅节点^ 6.12.0 OR> = 8.0.0)
PS512
使用SHA-512哈希算法的RSASSA-PSS(仅节点^ 6.12.0 OR> = 8.0.0)
ES256
使用P-256曲线和SHA-256哈希算法的ECDSA
ES384
使用P-384曲线和SHA-384哈希算法的ECDSA
ES512
使用P-521曲线和SHA-512哈希算法的ECDSA
没有
不包含数字签名或MAC值
npm install jsonwebtoken --save
const jwt = require('jsonwebtoken');//加载包
//产生token默认算法hs256
let token=jwt.sign({user:'123'},'123114655sad46aa');//此方法接收两个参数,第一个是要加密保存的数据(一个对象,不要放隐秘性的数据,如密码),第二个是要加密的私钥(一个字符串,越乱越好)
console.log(token);//返回一个加密字符串
// 服务器签发的token
//eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMTIzIiwiaWF0IjoxNTcwMDc2NjU5fQ.3FT6v8zVptdWGBILD1m1CRY6sCP1I3E947krUh_E3
//客户端请求数据的时候验证token
//客户端传递过来的token
let tokens=token;
jwt.verify(tokens,'123114655sad46aa',function (err,data) {
//verify接收两个参数,第一个参数是客户端传递过来的token,第二个参数是加密时的私钥;第三个参数是回调函数
console.log(err);//签名通过返回null,签名不通过返回err(JsonWebTokenError: invalid signature)
console.log(data);// 通过返回解密数据,失败返回unfinished
});
以上がNodejs jwtとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。