JWT 驗證輔助工具
此輔助工具提供編碼、解碼、簽署和驗證 JSON Web Tokens (JWT) 的函數。JWT 通常用於 Web 應用程式中的身分驗證和授權。此輔助工具提供強大的 JWT 功能,並支援各種加密演算法。
導入
若要使用此輔助工具,您可以如下方式導入它
ts
import { decode, sign, verify } from 'hono/jwt'
資訊
JWT 中介軟體 也會從 hono/jwt
導入 jwt
函數。
sign()
此函數會藉由編碼有效負載,並使用指定的演算法和密碼簽署來產生 JWT 權杖。
ts
sign(
payload: unknown,
secret: string,
alg?: 'HS256';
): Promise<string>;
範例
ts
import { sign } from 'hono/jwt'
const payload = {
sub: 'user123',
role: 'admin',
exp: Math.floor(Date.now() / 1000) + 60 * 5, // Token expires in 5 minutes
}
const secret = 'mySecretKey'
const token = await sign(payload, secret)
選項
必填 payload: unknown
要簽署的 JWT 有效負載。您可以包含其他宣告,如有效負載驗證 中所示。
必填 secret: string
用於 JWT 驗證或簽署的密鑰。
選填 alg: AlgorithmTypes
用於 JWT 簽署或驗證的演算法。預設值為 HS256。
verify()
此函數會檢查 JWT 權杖是否為真且仍然有效。它會確保權杖未被竄改,並且僅在您新增 有效負載驗證 時才檢查有效性。
ts
verify(
token: string,
secret: string,
alg?: 'HS256';
): Promise<any>;
範例
ts
import { verify } from 'hono/jwt'
const tokenToVerify = 'token'
const secretKey = 'mySecretKey'
const decodedPayload = await verify(tokenToVerify, secretKey)
console.log(decodedPayload)
選項
必填 token: string
要驗證的 JWT 權杖。
必填 secret: string
用於 JWT 驗證或簽署的密鑰。
選填 alg: AlgorithmTypes
用於 JWT 簽署或驗證的演算法。預設值為 HS256。
decode()
此函數會解碼 JWT 權杖,而不執行簽章驗證。它會從權杖中擷取並傳回標頭和有效負載。
ts
decode(token: string): { header: any; payload: any };
範例
ts
import { decode } from 'hono/jwt'
// Decode the JWT token
const tokenToDecode =
'eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJzdWIiOiAidXNlcjEyMyIsICJyb2xlIjogImFkbWluIn0.JxUwx6Ua1B0D1B0FtCrj72ok5cm1Pkmr_hL82sd7ELA'
const { header, payload } = decode(tokenToDecode)
console.log('Decoded Header:', header)
console.log('Decoded Payload:', payload)
選項
必填 token: string
要解碼的 JWT 權杖。
decode
函數可讓您檢查 JWT 權杖的標頭和有效負載,而無需執行驗證。這對於除錯或從 JWT 權杖中擷取資訊非常有用。
有效負載驗證
在驗證 JWT 權杖時,會執行以下有效負載驗證
exp
:會檢查權杖以確保它尚未過期。nbf
:會檢查權杖以確保它未在指定時間之前使用。iat
:會檢查權杖以確保它不是在未來發出的。
如果打算在驗證期間執行這些檢查,請確保您的 JWT 有效負載(以物件的形式)包含這些欄位。
自訂錯誤類型
此模組還定義自訂錯誤類型以處理與 JWT 相關的錯誤。
JwtAlgorithmNotImplemented
:表示要求的 JWT 演算法未實作。JwtTokenInvalid
:表示 JWT 權杖無效。JwtTokenNotBefore
:表示權杖在有效日期之前使用。JwtTokenExpired
:表示權杖已過期。JwtTokenIssuedAt
:表示權杖中的 "iat" 宣告不正確。JwtTokenSignatureMismatched
:表示權杖中的簽章不符。
支援的演算法類型
此模組支援以下 JWT 加密演算法
HS256
:使用 SHA-256 的 HMACHS384
:使用 SHA-384 的 HMACHS512
:使用 SHA-512 的 HMACRS256
:使用 SHA-256 的 RSASSA-PKCS1-v1_5RS384
:使用 SHA-384 的 RSASSA-PKCS1-v1_5RS512
:使用 SHA-512 的 RSASSA-PKCS1-v1_5PS256
:使用 SHA-256 和 MGF1 與 SHA-256 的 RSASSA-PSSPS384
:使用 SHA-386 和 MGF1 與 SHA-386 的 RSASSA-PSSPS512
:使用 SHA-512 和 MGF1 與 SHA-512 的 RSASSA-PSSES256
:使用 P-256 和 SHA-256 的 ECDSAES384
:使用 P-384 和 SHA-384 的 ECDSAES512
:使用 P-521 和 SHA-512 的 ECDSAEdDSA
:使用 Ed25519 的 EdDSA