AWS Lambda授权器使用JsonWebToken遇“Invalid Token”错误排查
核心排查方向及修复方案
修正请求头获取逻辑
Lambda Authorizer的事件结构中,请求头存放在headers字段下,而非直接挂载在event根节点。原始代码中event["adminToken"]的写法大概率无法正确拿到令牌,导致传递给验证函数的是无效值。
修正代码:const bearer = event.headers?.adminToken; // 从headers中正确提取请求头显式指定JWT签名算法
多数JWT库默认会自动猜测算法,容易因算法不匹配触发"invalid token"错误。需确保验证时使用的算法与生成令牌时完全一致(比如HS256/RS256)。
示例代码:// 假设生成令牌用的是HS256算法,显式指定 const decoded = await jwt.verify(token, secret, { algorithms: ['HS256'] });校验令牌完整性与格式
- 用本地工具拆分JWT的Header/Payload/Signature三部分,检查Base64编码是否正确,是否存在多余空格、转义字符;
- 确认令牌未过期(检查
exp字段是否晚于当前时间); - 确保生成令牌时使用的
secret与Lambda中定义的"sof-admin-token"完全一致,包括大小写、特殊字符。
补充Lambda Authorizer必填返回结构
原始代码未返回标准IAM政策文档,即使鉴权逻辑正确,Api Gateway也会判定授权失败。必须返回包含policyDocument的结构:return { principalId: "authorized-user", policyDocument: { Version: "2012-10-17", Statement: [ { Action: "execute-api:Invoke", Effect: auth, Resource: event.methodArn } ] } };
完整修正后的示例代码
import jwt from 'jsonwebtoken'; import { GetCommand } from "@aws-sdk/lib-dynamodb"; import { docClient } from "./your-docclient-config"; // 确保docClient初始化正确 export const handler = async (event) => { const secret = "sof-admin-token"; let auth = "Deny"; try { const bearer = event.headers?.adminToken; if (bearer) { console.log("Received bearer:", bearer); // 兼容带/不带Bearer前缀的情况 const token = bearer.startsWith("Bearer ") ? bearer.split(" ")[1] : bearer; console.log("Extracted token:", token); const decoded = await jwt.verify(token, secret, { algorithms: ['HS256'] }); console.log("Decoded token:", decoded); const command = new GetCommand({ TableName: "sof-admin-db", Key: { email: decoded.data } }); const response = await docClient.send(command); if (response.Item && response.Item.role.includes("admin")) { auth = "Allow"; } } } catch (error) { console.error("Authorization failed:", error.message); } console.log("Final auth result:", auth); return { principalId: "user", policyDocument: { Version: "2012-10-17", Statement: [ { Action: "execute-api:Invoke", Effect: auth, Resource: event.methodArn } ] } }; };
内容的提问来源于stack exchange,提问作者Sergio Terrazas
相关产品推荐
相关产品推荐

