検索
Nodejs jwtとは何ですかNov 23, 2021 pm 04:52 PM
jwtnodejs

nodejs では、jwt の正式名は Json Web トークンです。これは、ネットワーク アプリケーション環境間でステートメントを転送するために実装された JSON に基づくオープン標準です。 JWT クレームは通常、リソース サーバーからリソースを取得するために、アイデンティティ プロバイダーとサービス プロバイダーの間で認証されたユーザー ID 情報を渡すために使用されます。

Nodejs jwtとは何ですか

#このチュートリアルの動作環境: Windows7 システム、nodejs バージョン 12.19.0、DELL G3 コンピューター。

nodejs の JWT とは

Json Web トークン (JWT) は、ネットワーク アプリケーション環境間でクレームを転送するために使用される実行のタイプです。 JSON オープン スタンダード (RFC 7519) に基づいています。トークンはコンパクトかつ安全になるように設計されており、分散サイトでのシングル サインオン (SSO) シナリオに特に適しています。

JWT クレームは通常、認証されたユーザー ID 情報は、リソース サーバーからリソースを取得するために、アイデンティティ プロバイダーとサービス プロバイダーの間で渡されます。他のビジネス ロジックに必要な追加の宣言情報も追加できます。トークンは、認証に直接使用することもできます。

JWT は、HTTP 通信中に ID 認証を実行します。

HTTP 通信はステートレスであることがわかっているため、クライアントのリクエストはサーバーが処理された後、元のクライアントに返すことはできません。したがって、アクセスされたクライアントを識別する必要があります。一般的な方法は、セッション メカニズムを使用することです。クライアントがサーバーに正常にログインした後、サーバーはセッション ID を生成し、クライアントに返します。クライアントはセッション ID を Cookie に保存します。再度リクエストを行うと、Cookie 内のセッション ID がサーバーに送信されます。サーバーはセッションをキャッシュします。クライアント リクエストが来ると、サーバーはどのユーザーのリクエストであるかを認識します。

上記の分析により、セッションには次の問題があることがわかります:

1. セッションは次の場所に保存されます。サーバー側では、顧客の訪問数が増加すると、サーバーは多数のセッションを保存する必要があり、これはサーバーにとって大きなテストになります;

2. サーバーがクラスターの場合、ユーザーいずれかのサーバーにログインすると、サーバーはセッションがサーバーのメモリに保存されますが、ユーザーが他のサーバーにアクセスするとアクセスできなくなります。通常、共有できるようにするためにキャッシュ整合性テクノロジが使用されます。

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) 署名;


Nodejs jwtとは何ですか

実装プロセス

–> ユーザーがログインすると、サーバーはトークン (暗号化された文字列) を生成し、フロントエンドに送信します。トークンを保存します (任意の場所に保存します) どちら)

–> フロントエンドがデータ要求を開始すると、トークン

–> サーバーはトークンが合法、合法であれば操作を続行、違法であれば操作を終了

トークンの使用シナリオ: ステートレス リクエスト、ユーザー ログイン ステータスの維持、サードパーティ ログイン (トークン認証 2.0)

サポートアルゴリズム

##

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
});

更多node相关知识,请访问:nodejs 教程!!

以上がNodejs jwtとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Vercel是什么?怎么部署Node服务?Vercel是什么?怎么部署Node服务?May 07, 2022 pm 09:34 PM

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node.js gm是什么node.js gm是什么Jul 12, 2022 pm 06:28 PM

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

火了!新的JavaScript运行时:Bun,性能完爆Node火了!新的JavaScript运行时:Bun,性能完爆NodeJul 15, 2022 pm 02:03 PM

今天跟大家介绍一个最新开源的 javaScript 运行时:Bun.js。比 Node.js 快三倍,新 JavaScript 运行时 Bun 火了!

nodejs中lts是什么意思nodejs中lts是什么意思Jun 29, 2022 pm 03:30 PM

在nodejs中,lts是长期支持的意思,是“Long Time Support”的缩写;Node有奇数版本和偶数版本两条发布流程线,当一个奇数版本发布后,最近的一个偶数版本会立即进入LTS维护计划,一直持续18个月,在之后会有12个月的延长维护期,lts期间可以支持“bug fix”变更。

聊聊Node.js中的多进程和多线程聊聊Node.js中的多进程和多线程Jul 25, 2022 pm 07:45 PM

大家都知道 Node.js 是单线程的,却不知它也提供了多进(线)程模块来加速处理一些特殊任务,本文便带领大家了解下 Node.js 的多进(线)程,希望对大家有所帮助!

node爬取数据实例:聊聊怎么抓取小说章节node爬取数据实例:聊聊怎么抓取小说章节May 02, 2022 am 10:00 AM

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

深入浅析Nodejs中的net模块深入浅析Nodejs中的net模块Apr 11, 2022 pm 08:40 PM

本篇文章带大家带大家了解一下Nodejs中的net模块,希望对大家有所帮助!

怎么获取Node性能监控指标?获取方法分享怎么获取Node性能监控指标?获取方法分享Apr 19, 2022 pm 09:25 PM

怎么获取Node性能监控指标?本篇文章来和大家聊聊Node性能监控指标获取方法,希望对大家有所帮助!

See all articles

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター