ノードでの jwt の使用を 4 つの側面から見てみましょう
nodejs で jwt を使用するにはどうすればよいですか?以下の記事ではjwtの使い方を4つの側面から紹介していきますので、ぜひ参考にしてください。
jwtの紹介はじめに: http はステートレスであるため、リクエスト応答プロセス中にユーザー ID 情報が保存および記録されないため、多くのユーザーが存在します。 . Cookie、セッション、jwt など、ユーザー ID を保存する方法を特定します。最近作成したインターフェイス サービスでは、ユーザー情報の保存と管理に jwt を使用しています。ローカル Cookie ストレージやサーバー側のセッション ストレージと比較して、jwt はより安全で、より経済的で便利になりました。この記事では、node## での jwt の提供に焦点を当てています。 # 使い方を簡単にまとめてみましょう。
#ディレクトリ
- インストール構成
- カプセル化方法
- 実践演習
- この記事では、上記の 4 つの側面から jwt の使い方を紹介します。
jwt の概要
コンセプトJWT
正式名称は JSON Web Token で、オープン標準ですRFC 7519 は、関係者間で情報を JSON オブジェクトとして安全に転送するためのコンパクトで自己完結型の方法を定義しています。 JWT は、秘密キー、または RSA または ECDSA を使用する公開/秘密キーのペアを使用して署名でき、署名を検証できます。
コンポーネントjwt 署名トークンは通常、Header (ヘッダー情報)、Payload (ローダー)、Signature (署名) の 3 つの部分で構成されます。例:
xxxxx.yyyyy.zzzzzz。
- は通常、ストレージ トークンのタイプと署名アルゴリズムです。たとえば、
{ "alg": "HS256", "typ": "JWT" }
- です。 一般に、ストレージステートメント、つまりユーザー情報と添付データは、登録ステートメント、パブリックステートメント、およびプライベートステートメントに分けられます。
例:
{ "sub": "1234567890", "name": "John Doe", "admin": true }
- 署名アルゴリズムを使用してヘッダーとペイロードに署名します
例:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
標準の jwt 署名トークンは次のようになります
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeK KF2Q T4fwpMeJf36POk6yJV_adQssw5c。
ユーザー承認アクセス
- たとえば、ユーザーがログインした後、サーバーは jwt トークンを発行します。ユーザーがデータをリクエストするたびに、このトークンがリクエスト ヘッダーに含まれます。サーバー側で検証に合格した後にデータを取得できます。この方法ではオーバーヘッドが非常に少なく、サーバー側にストレージを必要としません。ドメイン間で使用することもできます。
- 当事者間で情報を暗号化して保存し、署名の内容が改ざんされていないかどうかを確認します。
トークンは逆アセンブルされ、内部のヘッダーとペイロードが解析されて表示される可能性があるため、ペイロードには個人情報を保存しないようにしてください。
インストール構成
ノードで jwt を使用して操作を実行してみましょう。
npm Web サイトには多くの jwt パッケージがあり、適切だと思うものを選択できます。
Search jwtNAME | DESCRIPTION | AUTHOR | DATE | VERSION | KEYWORDS
jwt | JSON Web Token for… | =mattrobenolt | 2012-05-05 | 0.2.0 |
express-jwt | JWT authentication… | =woloski… | 2021-08-11 | 6.1.0 | auth authn authentication authz authorization http jwt token oauth express
jsonwebtoken | JSON Web Token… | =dschenkelman… | 2019-03-18 | 8.5.1 | jwt
jwt-decode | Decode JWT tokens,… | =jeff.shuman… | 2020-11-16 | 3.1.2 | jwt browser
passport-jwt | Passport… | =themikenichol… | 2018-03-13 | 4.0.0 | Passport Strategy JSON Web Token JWT
koa-jwt | Koa middleware for… | =stiang… | 2021-09-24 | 4.0.3 | auth authn authentication authz authorization http jwt json middleware token oauth permissions koa
jsrsasign | opensource free… | =kjur | 2021-12-01 | 10.5.1 | crypto cryptography Cipher RSA ECDSA DSA RSAPSS PKCS#1 PKCS#5 PKCS#8 private key public key CSR PKCS#10 hash function HMac ASN.1 certexpress-jwt-permissions | Express middleware… | =angryunicorn… | 2021-08-18 | 1.3.6 | express middleware JWT permissions authorization token security
njwt | JWT Library for… | =robertjd | 2021-12-03 | 1.2.0 | jwt
fastify-jwt | JWT utils for… | =starptech… | 2021-12-03 | 4.1.0 | jwt json token jsonwebtoken fastify
did-jwt | Library for Signing… | =simonas-notcat… | 2021-12-03 | 5.12.1 |
hapi-auth-jwt2 | Hapi.js… | =nelsonic | 2020-09-08 | 10.2.0 | Hapi.js Authentication Auth JSON Web Tokens JWT
auth0-lock | Auth0 Lock | =jeff.shuman… | 2021-11-02 | 11.31.1 | auth0 auth openid authentication passwordless browser jwt
jwks-rsa | Library to retrieve… | =jeff.shuman… | 2021-10-15 | 2.0.5 | jwks rsa jwt
restify-jwt-community | JWT authentication… | =frbuceta | 2021-12-05 | 1.1.21 | auth authentication authorization http jwt token oauth restify
did-jwt-vc | Create and verify… | =simonas-notcat… | 2021-11-23 | 2.1.8 |
jwt-service | A simple wrapper… | =nfroidure | 2021-11-01 | 8.0.0 | jwt knifecycle
angular-jwt | Library to help you… | =jeff.shuman… | 2019-03-20 | 0.1.11 |
@thream/socketio-jwt | Authenticate… | =divlo | 2021-07-23 | 2.1.1 | socket socket.io jwt
appstore-connect-jwt-gene | [。 例:
// 一般签名 var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'secret'); // 加私钥签名 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256'}); // 设置过期时间 jwt.sign({ data: 'bar' }, 'secret', { expiresIn: 60 * 60 }); // 1h
:jwt.verify(token, secretOrPublicKey, [オプション、コールバック])例:
// 一般验证 var decoded = jwt.verify(token, 'secret'); console.log(decoded.foo) // bar // 公钥验证 var cert = fs.readFileSync('public.pem'); jwt.verify(token, cert, function(err, decoded) { console.log(decoded.foo) // bar });
:jwt .decode (token [, options])例:
var decoded = jwt.decode(token, {complete: true}); console.log(decoded.header); console.log(decoded.payload);
インストール構成の方法による、必要なセカンダリカプセル化に応じて、より適切な方法を選択できます。
依存パッケージと構成の紹介const jwt = require("jsonwebtoken"); const config = { secret: '2021123456**', time: 60 * 60, }
ログイン後にコピー
function create (data, time) { let token = jwt.sign(data, config.secret, { algorithm: "HS256", expiresIn: time || config.time, }) return token; }
ログイン後にコピー
function verify (token) { return jwt.verify(token, config.secret, function (err, decoded) { if (err) { return { code: 1, msg: 'invalid', data: null, } } else { return { code: 2, msg: 'valid', data: decoded, } } }) }
ログイン後にコピー
function decoded (token, complete = true) { return jwt.decode(token, { complete, }); }
ログイン後にコピー上記は比較的単純な方法ですが、それでも公開鍵と秘密鍵を使用したい場合は、上記のインストール構成を使用できます。
上記のカプセル化方法を実行した後、実際に実践して、効果があるかどうかを確認できます。
- 新建一个文件夹
test
,新建一个文件index.js
用于存放测试案例,jwt.js
用于存储调用方法。
mkdir test cd test npm init -y npm i jsonwebtoken
- jwt方法
// jwt.js const jwt = require('jsonwebtoken'); const config = { secret: '2021123456', // 密钥 time: 60*60, // 过期时间 } // 创建签名令牌 function create (data, time) { let token = jwt.sign(data, config.secret, { algorithm: 'HS256', expiresIn: time || config.time, }); return token; } // 验证令牌 function verify (token) { return jwt.verify(token, config.secret, function (err, decoded) { if (err) { return { code: 1, msg: 'invalid', data: null, } } else { return { code: 2, msg: 'valid', data: decoded, } } }) } // 解码令牌 function decoded (token, complete = true) { return jwt.decode(token, { complete, }); } const token = { create, verify, decoded, } module.exports = token;
- 创建token,验证token,解码token
// index.js const jwt = require('./jwt'); // 生成令牌 let token = jwt.create({'id': 1, 'name': 'mark'}, 60*60*2); console.log(token); /* eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJpZCI6MSwibmFtZSI6Im1hcmsiLCJpYXQiOjE2MzkxMDYyNzMsImV4cCI6MTYzOTExMzQ3M30. 20O1r0NVMf-j-9RwNcgls9ja0n1rGqSKN51_cRcvpE8 */ // 验证令牌 let verifyRes = jwt.verify(token); console.log(verifyRes); /* { code: 2, msg: 'valid', data: { id: 1, name: 'mark', iat: 1639106273, exp: 1639113473 } } */ // 解码令牌 let deRes = jwt.decoded(token, true); console.log(deRes); /* { header: { alg: 'HS256', typ: 'JWT' }, payload: { id: 1, name: 'mark', iat: 1639106273, exp: 1639113473 }, signature: '20O1r0NVMf-j-9RwNcgls9ja0n1rGqSKN51_cRcvpE8' } */
运行一下命令node index.js
测试是否正确。
好了,以上就是jwt在node中的一些应用和实践方法!
更多node相关知识,请访问:nodejs 教程!!
以上がノードでの jwt の使用を 4 つの側面から見てみましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ファイルのアップロードをどのように処理するか?次の記事では、Express を使用してノード プロジェクトでファイルのアップロードを処理する方法を紹介します。

nvm でノードを削除する方法: 1. 「nvm-setup.zip」をダウンロードして C ドライブにインストールします; 2. 「nvm -v」コマンドで環境変数を構成し、バージョン番号を確認します; 3. 「nvm」を使用しますinstall" コマンド ノードのインストール; 4. "nvm uninstall" コマンドでインストールしたノードを削除します。

インターネットの発展に伴い、データ対話のための API インターフェイスを提供する必要がある Web サイトやアプリケーションがますます増えています。この場合、APIの認証と暗号化が非常に重要な問題となります。一般的な認証および暗号化メカニズムとして、JWT と JWE が PHP で使用されることが増えています。さて、この記事では、PHP で API 認証と暗号化に JWT と JWE を使用する方法を説明します。 JWT の基本概念 JWT は JSONWe の略です

JWT (JSONWebToken) は、JSON オブジェクトをセキュリティ トークンとして使用して、複数のシステム間でユーザー ID 情報を安全に送信する軽量の認証および認可メカニズムです。 ThinkPHP6 は、PHP 言語をベースとした効率的かつ柔軟な MVC フレームワークであり、JWT 認証メカニズムを含む多くの便利なツールと機能を提供します。この記事では、Web アプリケーションのセキュリティと信頼性を確保するための JWT 認証に ThinkPHP6 を使用する方法を紹介します。

この記事では、Node のプロセス管理ツール「pm2」について説明し、pm2 が必要な理由、pm2 のインストール方法と使用方法について説明します。皆様のお役に立てれば幸いです。

PHP での OAuth: JWT 認証サーバーの作成 モバイル アプリケーションの台頭とフロントエンドとバックエンドの分離の傾向により、OAuth は最新の Web アプリケーションに不可欠な部分になりました。 OAuth は、標準化されたプロセスとメカニズムを提供することで、ユーザーのリソースを不正アクセスから保護する承認プロトコルです。この記事では、PHP を使用して JWT (JSONWebTokens) ベースの OAuth 認証サーバーを作成する方法を学びます。 JWT の一種です。

PHP における安全な JWT トークンの生成および検証テクノロジの分析 ネットワーク アプリケーションの開発に伴い、ユーザーの認証と認可がますます重要になっています。 JsonWebToken (JWT) は、Web アプリケーションで情報を安全に送信するためのオープン標準 (RFC7519) です。 PHP 開発では、ユーザーの認証と認可に JWT トークンを使用することが一般的になっています。この記事では、PHP における安全な JWT トークンの生成と検証テクノロジを紹介します。 1. JWT の生成方法と作成方法を理解するための JWT の基本的な知識

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています
