18

我在我的网站上显示一些从节点服务器返回的数据。直到今天它都可以完美运行。现在,当我转到我的网页时,我的服务器控制台上出现以下错误。我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 回答
6

用这个

expressJwt({
  secret: process.env.JWT_SECRET,
  algorithms: ['sha1', 'RS256', 'HS256'],
})
于 2020-10-25T07:24:24.077 回答
1

在您的 expressJwt 参数()中使用以下代码:

algorithms: ['sha1', 'RS256', 'HS256'],   


Copy the algorithms and change/paste it on your function this methods helps me in postman, paw, robo 3t
于 2021-01-04T13:17:15.387 回答