缺少身份验证令牌 - AWS API 网关消息

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

我有一个API网关获取方法。我可以使用测试功能成功测试它。它调用 lambda 函数并成功返回。 但是,将 API 网关函数的调用 URL 复制到浏览器中时,我收到以下错误消息:

{"message": "Missing Authentication Token"}
  1. 我为我的 api 网关创建了一个授权者 类型是 Lambda 函数 令牌来源:method.request.header.Authorization 令牌验证 - 可选:无

  2. 我创建了授权者 Lambda 函数,代码如下:

export const handler = async (event) => {
    const token = event.authorizationToken;

    const policy = {
        principalId: 'user123', // Unique identifier for the user
        policyDocument: {
            Version: '2012-10-17',
            Statement: [
                {
                    Action: 'execute-api:Invoke',
                    Effect: 'Allow',
                    Resource: 'arn:aws:execute-api:eu-north-1:xxx:c8mhri79ja/prod/*/*',
                },
            ],
        },
    };

    return policy;
};
  1. 我设置了 VPC,为安全组设置了子网,因为它是为我尝试通过 api 网关调用的其他 Lambda 函数设置的。

  2. 使用授权者 lambda 分配的执行角色已设置 AWSLambdaBasicExecutionRole 策略

  3. 如果我从 API Gateway 控制台运行测试,则执行不会出现错误。这样网关和 lambda 函数就可以正常工作了。

  4. 如果我将资源名称添加到调用 URL 的末尾,我会收到以下错误消息:

{"message": "Unauthorized"}

为什么我收到与未设置任何授权者时收到的相同的错误消息? 我怎样才能消除这个错误?

amazon-web-services api-gateway
1个回答
0
投票

您正在直接在事件对象上查找令牌 -

event.authorizationToken
,该令牌不存在。

请求标头中存在授权令牌,因此您的令牌可能位于

event.headers.authorization
event.headers.Authorization
适用于旧版本的 API 网关)。

© www.soinside.com 2019 - 2024. All rights reserved.