不断获取:JsonWebTokenError: jwt malformed with Apollo 4

问题描述 投票:0回答:0

我正在使用 Auth0 和 Apollo Server 4(刚刚更新到新版本)并且由于某种原因我在验证我的不记名令牌时收到此错误:“JsonWebTokenError:jwt malformed”

文档说这是因为“令牌没有三个组件(由 . 分隔)”,而且我的令牌似乎缺少一个组件,因为其中有两个“..”。

这里是持票人“eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiaXNzIjoiaHR0cHM6Ly9kZXYteWpkczdzMHcudXMuYXV0aDAuY29tLyJ9..ra0kpvVLjOY5SXNL.QcHMSTrOB1gew FkjwJdg3MHCr0UfdS0tKA2XdskUKp8_10puH_oq6meSs9x6f_LDZHeYfJso8QaofxDhNvlpWU2zQFbmPD_tJtTui4jCqNFpYM6Aapw6d7ADeckl0vjsBVs9AdJHUF_6tlBtI6s8Qk6r 4UtufKSGfpm5ucb2FeCz-9DREH19QGCBzundoi5goSKK4Br8VhZTrP89KZDwQYSYWR-SXXrAUSz3mhDPbYQjrPeyVZtt4WCHwgCweF-iLHkMI6g82zKYbNUHimfcSZcmNgYS3sTL6MkKLKr9o OkgLyR0KDA2r22vKracFdoZB0g.Lk0ClIc1usAEXFaGzO-hDg"

这是我的服务器代码:

import { ApolloServer } from '@apollo/server';
import { startStandaloneServer } from '@apollo/server/standalone';
import resolvers from './graphql/Resolvers.js';
import { typeDefs } from './graphql/gqlSchema.js';
import verifyToken from './verifyToken.js';
import config from './config.cjs';
import startMongo from './Mongo/StartMongo.js';

const server = new ApolloServer({
  cors: { origin: 'https://www.timerwise.com' },
  typeDefs,
  resolvers,
});
const { url } = await startStandaloneServer(server, {
  context: async ({ req }) => {
    let isAuthenticated = false;
    let token;

    try {
      const authHeader = req.headers.authorization || '';

      if (authHeader) {
        const token = authHeader.split(' ')[1];

        const payload = await verifyToken(token);
        isAuthenticated = payload && payload.sub ? true : false;
      }
    } catch (error) {
      console.error(error);
    }

    return { req, auth: { token, isAuthenticated } };
  },
  listen: { port: config.PORT },
});

startMongo();

console.log(`🚀 Server ready at ${url}`);

这是我的令牌验证码:

import jwt from 'jsonwebtoken';

import jwksClient from 'jwks-rsa';
import config from './config.cjs';

const verifyToken = async (bearerToken) => {
  const client = jwksClient({ jwksUri: `https://${config.AUTH0_DOMAIN}/.well-known/jwks.json` });

  function getJwksClientKey(header, callback) {
    client.getSigningKey(header.kid, function (error, key) {
      const signingKey = key.publicKey || key.rsaPublicKey;
      callback(null, signingKey);
    });
  }

  return new Promise((resolve, reject) => {
    jwt.verify(
      bearerToken,
      getJwksClientKey,
      {
        audience: config.AUDIENCE,
        issuer: `https://${config.AUTH0_DOMAIN}/`,
        algorithms: ['RS256'],
      },
      function (err, decoded) {
        console.log(bearerToken);
        if (err) reject(err);
        resolve(decoded);
      }
    );
  });
};

export default verifyToken;

我最近更新到 Apollo Server 4,问题开始了。但是对于我的生活,我无法弄清楚出了什么问题。

node.js graphql jwt apollo apollo-server
© www.soinside.com 2019 - 2024. All rights reserved.