RSA署名付きJWT
皆さんこんにちは!
この記事では、RSAキーでJSON Webトークンに署名する方法を学びます.
始めましょう!
まず第一に、私はプロジェクトフォルダを作成するつもりです.次に、
では、公開鍵と秘密鍵を生成しましょう.あなたがキー長を増やすならば、トークン長も増加します.これはHTTPリクエスト本体サイズが増加することを意味します.しかし、それは我々がどのようなペイロードの種類に依存します.
注意してください、私は
これは、我々が同期的にトークンに署名する方法です.この関数は、JSON Webトークンを文字列で返します.
アプリを実行します.js
Github repository
読書に感謝します.
この記事では、RSAキーでJSON Webトークンに署名する方法を学びます.
始めましょう!
プロジェクトの初期化
まず第一に、私はプロジェクトフォルダを作成するつもりです.次に、
jsonwebtoken
パッケージをインストールします.cd path/to/your/workspace
# Create project folder
mkdir jwt-rsa
# Change directory
cd jwt-rsa
npm init -y
# Install JWT
npm install --save jsonwebtoken
RSAトークンを生成する
では、公開鍵と秘密鍵を生成しましょう.あなたがキー長を増やすならば、トークン長も増加します.これはHTTPリクエスト本体サイズが増加することを意味します.しかし、それは我々がどのようなペイロードの種類に依存します.
# Create a folder named keys
mkdir keys
# Minimum RSA key length is 1024 bits
# Maximum RSA key length is 16384 bits
# Don't add passphrase
ssh-keygen -t rsa -b 1024 -m PEM -f keys/rsa.key
# Write public key to keys/rsa.key.pub file
openssl rsa -in keys/rsa.key -pubout -outform PEM -out keys/rsa.key.pub
また、パブリック/プライベートキーペアを取得するには、このonline toolを使用することができます.フォルダ構造
signtoken ()およびverifytoken ()メソッドの実装
注意してください、私は
issuer
、audience
またはexpiresIn
などのようなすべてのJWTのオプションを使用するつもりはない.algorithm
を除くこれは、我々が同期的にトークンに署名する方法です.この関数は、JSON Webトークンを文字列で返します.
jwt.sign(payload, secretOrPrivateKey, options)
日本気象協会js
signToken()
:ペイロードオブジェクトをパラメータとして受け取り、トークンとしてトークンを返します.verifyToken()
はパラメータとしてトークンを受け取り、署名したペイロードを返します.//* jwt.js
const fs = require('fs')
const path = require('path')
const jwt = require('jsonwebtoken')
const privateKey = fs.readFileSync(path.join(__dirname, 'keys', 'rsa.key'), 'utf8')
const publicKey = fs.readFileSync(path.join(__dirname, 'keys', 'rsa.key.pub'), 'utf8')
module.exports = {
signToken: (payload) => {
try {
return jwt.sign(payload, privateKey, { algorithm: 'RS256'});
} catch (err) {
/*
TODO throw http 500 here
! Dont send JWT error messages to the client
! Let exception handler handles this error
*/
throw err
}
},
verifyToken: (token) => {
try {
return jwt.verify(token, publicKey, { algorithm: 'RS256'});
} catch (err) {
/*
TODO throw http 500 here
! Dont send JWT error messages to the client
! Let exception handler handles this error
*/
throw err
}
}
}
ペイロードに署名し、トークンを確認する
//* app.js
const { signToken, verifyToken } = require('./jwt')
const token = signToken({ userId: 1 })
console.log({ token })
const verified = verifyToken(token)
console.log({ verified })
何が起こったか見てみましょう
アプリを実行します.js
node app.js
そして、あなたはこのように何かを見ますGithub repository
読書に感謝します.
Reference
この問題について(RSA署名付きJWT), 我々は、より多くの情報をここで見つけました https://dev.to/tayfunakgc/jwt-with-rsa-signature-1jdテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol