Kiểm tra thời gian hết hạn mã thông báo JWT trực tuyến
Xin lưu ý rằng var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');5 hoặc bất kỳ khiếu nại nào khác chỉ được đặt nếu tải trọng là một đối tượng theo nghĩa đen. Tải trọng chuỗi hoặc bộ đệm không được kiểm tra tính hợp lệ của JSON Show
var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');8 là một chuỗi (được mã hóa utf-8), bộ đệm, đối tượng hoặc KeyObject chứa bí mật cho thuật toán HMAC hoặc khóa riêng được mã hóa PEM cho RSA và ECDSA. Trong trường hợp khóa riêng có cụm mật khẩu, một đối tượng var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');9 có thể được sử dụng (dựa trên tài liệu về tiền điện tử), trong trường hợp này, hãy đảm bảo bạn vượt qua tùy chọn // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });0. Khi ký bằng thuật toán RSA, độ dài mô-đun tối thiểu là 2048 trừ khi tùy chọn allowInsecureKeySizes được đặt thành true. Khóa cá nhân dưới kích thước này sẽ bị từ chối kèm theo lỗi // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });1
Hãy nhớ rằng var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');5, var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');94 và var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');50 là NumericDate, xem phần Hết hạn mã thông báo liên quan (yêu cầu hết hạn) Tiêu đề có thể được tùy chỉnh thông qua đối tượng var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');51 Theo mặc định, jwts được tạo sẽ bao gồm yêu cầu bồi thường var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');50 (được phát hành tại) trừ khi chỉ định rõ var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');52. Nếu var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');50 được chèn vào tải trọng, nó sẽ được sử dụng thay vì dấu thời gian thực để tính toán những thứ khác như var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');5 với khoảng thời gian trong var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');56 Dấu hiệu đồng bộ với mặc định (HMAC SHA256) var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh'); Dấu hiệu đồng bộ với RSA SHA256 // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' }); Ký không đồng bộ var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');5 Lùi ngày một jwt 30 giây var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');5 Hết hạn mã thông báo (yêu cầu exp)Tiêu chuẩn cho JWT xác định yêu cầu _______05 khi hết hạn. Hết hạn được thể hiện dưới dạng NumericDate
Điều này có nghĩa là trường var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');5 phải chứa số giây kể từ kỷ nguyên Ký mã thông báo với 1 giờ hết hạn var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');9 Một cách khác để tạo mã thông báo như thế này với thư viện này là var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');5 jwt. xác minh (mã thông báo, secretOrPublicKey, [tùy chọn, gọi lại])(Không đồng bộ) Nếu một cuộc gọi lại được cung cấp, chức năng hoạt động không đồng bộ. Cuộc gọi lại được gọi với tải trọng đã giải mã nếu chữ ký hợp lệ và thời hạn tùy chọn, đối tượng hoặc nhà phát hành hợp lệ. Nếu không, nó sẽ được gọi với lỗi (Đồng bộ) Nếu không cung cấp lệnh gọi lại, chức năng sẽ hoạt động đồng bộ. Trả về tải trọng được giải mã nếu chữ ký hợp lệ và tùy chọn hết hạn, đối tượng hoặc nhà phát hành hợp lệ. Nếu không sẽ báo lỗi
var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');59 là chuỗi JsonWebToken // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });10 là một chuỗi (được mã hóa utf-8), bộ đệm hoặc KeyObject chứa bí mật cho thuật toán HMAC hoặc khóa công khai được mã hóa PEM cho RSA và ECDSA. Nếu // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });11 được gọi là không đồng bộ, thì // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });10 có thể là một hàm sẽ tìm nạp khóa bí mật hoặc khóa chung. Xem bên dưới để biết ví dụ chi tiết Như đã đề cập trong nhận xét này, có những thư viện khác mong đợi bí mật được mã hóa base64 (byte ngẫu nhiên được mã hóa bằng base64), nếu đó là trường hợp của bạn, bạn có thể vượt qua // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });13, bằng cách này, bí mật sẽ được giải mã bằng base64 và xác minh mã thông báo sẽ sử dụng // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });1
// sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });1Cần xem qua JWT mà không cần xác minh? jwt. giải mã (mã thông báo [, tùy chọn])(Đồng bộ) Trả về tải trọng đã giải mã mà không cần xác minh xem chữ ký có hợp lệ hay không
var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');59 là chuỗi JsonWebToken // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });1
Ví dụ // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });1 Lỗi & MãCác lỗi có thể xảy ra trong quá trình xác minh. Lỗi là đối số đầu tiên của cuộc gọi lại xác minh Token Hết hạnLỗiNém lỗi nếu mã thông báo hết hạn Đối tượng lỗi
// sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });1 JsonWebTokenErrorĐối tượng lỗi
var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');0 Not BeforeErrorBị ném nếu thời gian hiện tại trước yêu cầu nbf Đối tượng lỗi
var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'shhhhh');1 Các thuật toán được hỗ trợMảng các thuật toán được hỗ trợ. Các thuật toán sau hiện đang được hỗ trợ alg Tham số Giá trị Chữ ký số hoặc Thuật toán MACHS256HMAC sử dụng thuật toán băm SHA-256HS384HMAC sử dụng thuật toán băm SHA-384HS512HMAC sử dụng thuật toán băm SHA-512RS256RSASSA-PKCS1-v1_5 sử dụng thuật toán băm SHA-256RS384RSASSA-PKCS1-v1_5 sử dụng thuật toán băm SHA-384RS512RSASSA-PKCS1-v1_5 . 12. 0 HOẶC >=8. 0. 0)PS384RSASSA-PSS sử dụng thuật toán băm SHA-384 (chỉ nút ^6. 12. 0 HOẶC >=8. 0. 0)PS512RSASSA-PSS sử dụng thuật toán băm SHA-512 (chỉ nút ^6. 12. 0 HOẶC >=8. 0. 0)ES256ECDSA sử dụng đường cong P-256 và thuật toán băm SHA-256ES384ECDSA sử dụng đường cong P-384 và thuật toán băm SHA-384ES512ECDSA sử dụng đường cong P-521 và thuật toán băm SHA-512không cóKhông bao gồm chữ ký số hoặc giá trị MACLàm mới JWTTrước hết, chúng tôi khuyên bạn nên suy nghĩ cẩn thận nếu tự động làm mới JWT sẽ không gây ra bất kỳ lỗ hổng nào trong hệ thống của bạn Chúng tôi không thoải mái khi đưa phần này vào thư viện, tuy nhiên, bạn có thể xem ví dụ này để biết cách thực hiện điều này. Ngoài ví dụ đó, còn có một vấn đề và yêu cầu kéo để có thêm kiến thức về chủ đề này LÀM
Báo cáo vấn đềNếu bạn tìm thấy lỗi hoặc nếu bạn có yêu cầu về tính năng, vui lòng báo cáo chúng tại phần các vấn đề về kho lưu trữ này. Vui lòng không báo cáo các lỗ hổng bảo mật trên công cụ theo dõi vấn đề GitHub công khai. Chương trình tiết lộ có trách nhiệm nêu chi tiết quy trình tiết lộ các vấn đề bảo mật Làm cách nào tôi có thể nhận được thời gian hết hạn của mã thông báo JWT?Phân tích cú pháp JWT
. use a lib(like jwt_decode) to decode your JWT token, where it's most likely contains an expiration timestamp that you can check(compare it with the current timestamp for this moment) and if it exceeded(expired) just delete it from local storage and redirect user to login page.
Làm cách nào để giải mã mã thông báo JWT trực tuyến?Sử dụng công cụ theo các bước sau. . Trước tiên, hãy nhớ rằng JWT là mã thông báo thường được sử dụng làm thông tin xác thực cho các ứng dụng SSO. . Lấy JWT bạn muốn giải mã hoặc JWS hoặc JWE có chứa JWT. . Nhập mã thông báo Nhấn nút Giải mã Đọc đầu ra được giải mã cho tiêu đề và tải trọng Làm cách nào để đặt thời gian hết hạn mã thông báo JWT tính bằng giây?Xác minh JWT
. Chúng tôi nhận được TokenExpiredError. jwt hết hạn. Để giải quyết vấn đề này, chỉ cần kéo dài thời gian hết hạn thành 1 ngày như {expiresIn. '1d'} . |