自定义授权方 necessary/only 是针对 AWS API 网关进行授权的方式吗

Are custom authorizers necessary/only way to authorize against the AWS API Gateway

我有用于开发人员身份验证的认知身份流程,并取回 AccessKeyId、SecretAccessKey 和 SessionToken(尽管我认为不需要这个)。然后我使用这些凭据来验证我的 api-gatweay,但我一直收到 403 Forbidden。 (我生成的凭据的基础角色具有完全访问权限)

我看到有一种方法可以让自定义授权方 lambda 执行此操作,但我想知道是否还有另一种方法可以执行此操作。我想知道的原因是,如果我对 api 网关的 post 请求使用我自己的个人访问权限和密钥,它就可以工作!!

您将无法使用自定义授权方来验证 AWS 签名。自定义授权方用于非 AWS 身份验证解决方案。

此外,您需要在签署请求时使用 SessionToken,也许这就是问题所在。您的个人凭据之所以有效,是因为它们是长期的,但 Cognito 出售短期会话凭据。

如何使用会话令牌 -> http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#RequestWithSTS

如果您在 iOS、Android 或 JavaScript 中构建移动应用程序,则从 API Gateway 生成的 SDK 具有内置的签名者 -> http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-generate-sdk.html

如果您在某个方法上启用了 AWS_IAM 授权,并且您正在使用 Cognito 凭据向该方法发出签名请求,那么如果出现问题,您应该会收到带有 403 响应的描述性错误消息签名。