目次
トークンは逆アセンブルされ、内部のヘッダーとペイロードが解析されて表示される可能性があるため、ペイロードには個人情報を保存しないようにしてください。
ノードで jwt を使用して操作を実行してみましょう。
個人的には、この
インストール構成の方法による、必要なセカンダリカプセル化に応じて、より適切な方法を選択できます。
上記のカプセル化方法を実行した後、実際に実践して、効果があるかどうかを確認できます。
ホームページ ウェブフロントエンド jsチュートリアル ノードでの jwt の使用を 4 つの側面から見てみましょう

ノードでの jwt の使用を 4 つの側面から見てみましょう

Jan 10, 2022 pm 07:19 PM
jwt node

nodejs で jwt を使用するにはどうすればよいですか?以下の記事ではjwtの使い方を4つの側面から紹介していきますので、ぜひ参考にしてください。

ノードでの jwt の使用を 4 つの側面から見てみましょう

はじめに: http はステートレスであるため、リクエスト応答プロセス中にユーザー ID 情報が保存および記録されないため、多くのユーザーが存在します。 . Cookie、セッション、jwt など、ユーザー ID を保存する方法を特定します。最近作成したインターフェイス サービスでは、ユーザー情報の保存と管理に jwt を使用しています。ローカル Cookie ストレージやサーバー側のセッション ストレージと比較して、jwt はより安全で、より経済的で便利になりました。この記事では、node## での jwt の提供に焦点を当てています。 # 使い方を簡単にまとめてみましょう。

#ディレクトリ

jwtの紹介
  • インストール構成
  • カプセル化方法
  • 実践演習
  • この記事では、上記の 4 つの側面から jwt の使い方を紹介します。

jwt の概要

コンセプト

JWT

正式名称は JSON Web Token で、オープン標準ですRFC 7519 は、関係者間で情報を JSON オブジェクトとして安全に転送するためのコンパクトで自己完結型の方法を定義しています。 JWT は、秘密キー、または RSA または ECDSA を使用する公開/秘密キーのペアを使用して署名でき、署名を検証できます。

コンポーネント

jwt 署名トークンは通常、Header (ヘッダー情報)、Payload (ローダー)、Signature (署名) の 3 つの部分で構成されます。例:

xxxxx.yyyyy.zzzzzz

header
  • は通常、ストレージ トークンのタイプと署名アルゴリズムです。たとえば、
{
  "alg": "HS256",
  "typ": "JWT"
}
ログイン後にコピー

Payload
  • です。
  • 一般に、ストレージステートメント、つまりユーザー情報と添付データは、登録ステートメント、パブリックステートメント、およびプライベートステートメントに分けられます。

例:

{
  "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 jwt

NAME                      | 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 | [![NPM](https://nod… | =poad           | 2021-10-15 | 1.0.1    | jwt appstore
rator-core                |
ログイン後にコピー

Install jwt

個人的には、この

jsonwebtoken

は非常に優れていると思います。この記事 このパッケージを使用するだけです。

一般的な使用法

署名
署名の構文

:jwt.sign(ペイロード、secretOrPrivateKey、[オプション、コールバック])例:

// 一般签名
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
ログイン後にコピー

Verification
検証構文

: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,
          }
        }
      })
    }
    ログイン後にコピー
Decoding
  • 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Express を使用してノード プロジェクトでファイルのアップロードを処理する方法 Express を使用してノード プロジェクトでファイルのアップロードを処理する方法 Mar 28, 2023 pm 07:28 PM

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

nvmでノードを削除する方法 nvmでノードを削除する方法 Dec 29, 2022 am 10:07 AM

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

PHP での API 認証と暗号化に JWT と JWE を使用する方法 PHP での API 認証と暗号化に JWT と JWE を使用する方法 Jun 17, 2023 pm 02:42 PM

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

JWT 認証に ThinkPHP6 を使用するにはどうすればよいですか? JWT 認証に ThinkPHP6 を使用するにはどうすればよいですか? Jun 12, 2023 pm 12:18 PM

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

Nodeのプロセス管理ツール「pm2」を徹底分析 Nodeのプロセス管理ツール「pm2」を徹底分析 Apr 03, 2023 pm 06:02 PM

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

PHP の OAuth: JWT 認証サーバーを作成する PHP の OAuth: JWT 認証サーバーを作成する Jul 28, 2023 pm 05:27 PM

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

PHPにおける安全なJWTトークン生成・検証技術の分析 PHPにおける安全なJWTトークン生成・検証技術の分析 Jul 01, 2023 pm 06:06 PM

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

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? Mar 05, 2025 pm 05:57 PM

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

See all articles