2016-10-05 14 views
5

Wyświetlane są niektóre dane na mojej stronie internetowej, które zwracają się z serwera węzła. Działa doskonale do dziś. Teraz dostaję poniżej błędu na mojej konsoli serwera, kiedy idę do mojej strony internetowej. Używam Auth0 do logowania się do użytkowników.UnauthorizedError: nieprawidłowy algorytm 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) 

Co może być problemem?

Odpowiedz

4

Miałem ten sam problem. Używam Auth0 do logowania się do użytkowników. Musisz sprawdzić typ algorytmu.

Jeśli używasz Auth0 następnie przejść do

Client -> Ustawienia -> Ustawienia zaawansowane -> OAuth

i sprawdzić typ algorytmu. Musi to być HS256.

Jeśli nie używasz Auth0, sprawdź również typ algorytmu.

+1

dziękuję. uratowałem mój dzień. – Bishan

1

HS256 jest mniej bezpieczny, ponieważ jest symetryczny (ten sam sekret jest dzielony między klientem a serwerem). Zobacz na to pytanie: RS256 vs HS256: What's the difference?

można utrzymać RSA256 za pomocą modułu node-jwks-rsa aby pobrać klucz podpisujący:

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)