我在快速API中使用中间件来validationauth0
const checkJwt = jwt({ // Dynamically provide a signing key based on the kid in the header and the singing keys provided by the JWKS endpoint. secret: jwksRsa.expressJwtSecret({ cache: true, rateLimit: true, jwksRequestsPerMinute: 5, jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json` }), // Validate the audience and the issuer. audience: process.env.AUTH0_AUDIENCE, issuer: `https://${process.env.AUTH0_DOMAIN}/`, algorithms: ['RS256'] });
…
server.use('/api', checkJwt, routes);
它在我的本地开发机器上工作,但是当我在生产中运行时,我得到:
Error: getaddrinfo ENOTFOUND undefined undefined:443 at errnoException (dns.js:28:10) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
我在生产中运行ubuntu 12,在开发中运行mac。
您似乎忘了在生产系统上设置AUTH0_DOMAIN
环境变量。
你的代码根据github的例子是正确的,
但在这个例子中有很多的环境变量设置运行这个代码部分。
DEBUG=express,jwks JWKS_HOST=https://my-authz-server AUDIENCE=urn:my-resource-server ISSUER=https://my-authz-server/ node server.js
。
启动应用程序之前,请检查您的生产配置。
getaddrinfo ENOTFOUND
这是在请求的服务器地址无法连接时出现的基本的Internet传输协议错误。 可以是一个非常简单的错误,可以是完全复杂的东西:
错误:getaddrinfo ENOTFOUND undefined undefined:443
我认为问题是解析,因为显示的代码块是注释你正在提供的URI,请尝试这个:
const uri = "https:\/\/"+${process.env.AUTH0_DOMAIN}+"/.well-known/jwks.json" const checkJwt = jwt({ // Dynamically provide a signing key based on the kid in the header and the singing keys provided by the JWKS endpoint. secret: jwksRsa.expressJwtSecret({ cache: true, rateLimit: true, jwksRequestsPerMinute: 5, jwksUri: uri }), // Validate the audience and the issuer. audience: process.env.AUTH0_AUDIENCE, issuer: `https://${process.env.AUTH0_DOMAIN}/`, algorithms: ['RS256'] });
对于jwt选项中的发行者类似的编辑