【问题标题】:Are custom authorizers necessary/only way to authorize against the AWS API Gateway自定义授权人是必要的/唯一的方式来授权 AWS API Gateway
【发布时间】:2016-06-15 21:31:46
【问题描述】:

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

我看到有一种方法可以使用自定义授权 lambda 来执行此操作,但我想知道是否还有其他方法可以执行此操作。我想知道这一点的原因是,如果我使用自己的个人访问权限和密钥对 api-gateway 的发布请求,它可以工作!!

【问题讨论】:

    标签: amazon-cognito aws-api-gateway


    【解决方案1】:

    您将无法使用自定义授权方来验证 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 响应的描述性错误消息。

    【讨论】:

    • 我得到的响应是 { "message": "请求中包含的安全令牌无效。" }
    • 您能否指向一个链接,该链接显示如何使用会话令牌对请求进行签名。请注意,我正在尝试从 .net 客户端执行此操作。
    • 有趣的是,它们是否是签名请求的一部分尚不清楚:docs.aws.amazon.com/general/latest/gr/…;理论上,API 网关请求可以像 AWS API 请求一样签名,该 SDK 使用以下内容进行签名:github.com/aws/aws-sdk-net/blob/master/sdk/src/Core/…
    猜你喜欢
    • 1970-01-01
    • 2016-11-30
    • 2020-06-17
    • 2019-03-04
    • 2018-04-17
    • 2018-03-21
    • 2018-03-09
    • 2019-09-06
    • 1970-01-01
    相关资源
    最近更新 更多