18

ノードサーバーから返されるデータをウェブサイトに表示しています。今日まで完璧に機能しています。Web ページにアクセスすると、サーバー コンソールに以下のエラーが表示されます。ユーザーのサインインに使用Auth0します。

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)

問題は何ですか?

4

4 に答える 4

21

HS256 は対称であるため、安全性が低くなります (クライアントとサーバー間で同じシークレットが共有されます)。この質問を参照してください: RS256 vs HS256: 違いは何ですか?

node-jwks-rsaモジュールを使用して署名キーを取得することで、RS256 を維持できます。

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_AUDIENCE_OR_CLIENT_ID>,
  issuer: 'https://<YOUR_AUTH0_DOMAIN>/',
  algorithms: ['RS256'],
})

app.use(jwtCheck)
于 2017-08-24T04:50:25.957 に答える
11

私も同じ問題を抱えていました。ユーザーのサインインには Auth0 を使用します。アルゴリズムの種類を確認する必要があります。

Auth0 を使用している場合は

クライアント -> 設定 -> 詳細設定 -> OAuth

アルゴリズムの種類を確認します。HS256 である必要があります。

Auth0 を使用していない場合は、アルゴリズムの種類も確認してください。

于 2016-10-06T01:39:55.933 に答える