2016-10-05 17 views
5

Tôi đang hiển thị một số dữ liệu trên trang web của tôi trả về từ máy chủ nút. Nó hoạt động hoàn hảo cho đến ngày hôm nay. Bây giờ tôi nhận được lỗi dưới đây trên bàn điều khiển máy chủ của tôi khi tôi đi đến trang web của tôi. Tôi sử dụng Auth0 để đăng nhập trong người dùng.UnauthorizedError: thuật toán không hợp lệ express-jwt

UnauthorizedError: invalid algorithm 
    at C:\workspace\New\MyApp\node_modules\express-jwt\lib\index.js:100:22 
    at C:\workspace\New\MyApp\node_modules\express-jwt\node_modules\jsonwebtoken\index.js:155:18 
    at nextTickCallbackWith0Args (node.js:420:9) 
    at process._tickCallback (node.js:349:13) 

Điều gì có thể là vấn đề?

Trả lời

4

Tôi gặp vấn đề tương tự. Tôi sử dụng Auth0 để đăng nhập trong người dùng. Bạn phải kiểm tra loại thuật toán.

Nếu bạn đang sử dụng Auth0 sau đó đi đến

Khách hàng -> Settings -> Advanced Settings -> OAuth

và kiểm tra các loại thuật toán. Nó phải là HS256.

Nếu bạn hiện không sử dụng Auth0 thì hãy kiểm tra loại thuật toán.

+1

Cảm ơn bạn. đã cứu ngày của tôi. – Bishan

1

HS256 kém an toàn hơn vì nó là đối xứng, (cùng một bí mật được chia sẻ giữa máy khách và máy chủ). Xem câu hỏi này: RS256 vs HS256: What's the difference?

Bạn có thể duy trì RSA256 bằng cách sử dụng các mô-đun node-jwks-rsa để lấy chìa khóa ký:

import jwt from 'express-jwt' 
import jwksRsa from 'jwks-rsa' 

const secret = jwksRsa.expressJwtSecret({ 
    cache: true, 
    rateLimit: true, 
    jwksRequestsPerMinute: 5, 
    jwksUri: 'https://<YOUR_AUTH0_DOMAIN>/.well-known/jwks.json', 
}) 

const jwtCheck = jwt({ 
    secret: secret, 
    audience: <YOUR_AUTH0_CLIENT_ID>, 
    issuer: 'https://<YOUR_AUTH0_DOMAIN>/', 
    algorithms: ['RS256'], 
}) 

app.use(jwtCheck) 
Các vấn đề liên quan