【问题标题】:Amazon API Gateway authorization AWS_IAM亚马逊 API 网关授权 AWS_IAM
【发布时间】:2017-11-07 18:54:11
【问题描述】:

AWS_IAM 作为 Amazon API Gateway 中的授权模型是什么意思?

如果我在 AWS 控制台中测试 Lambda,它可以工作并打印“Hello World”,但如果我使用端点 URL 并在另一个浏览器的选项卡中打开它,它会显示 {"message":"Missing Authentication Token"} 我如何获取此身份验证令牌?

【问题讨论】:

    标签: aws-api-gateway amazon-cognito amazon-iam


    【解决方案1】:

    创建一个新的 IAM 用户

    转到 AWS IAM 并创建一个具有 编程访问权限 的新用户来访问您的 API 网关。然后将具有足够权限 (AmazonAPIGatewayInvokeFullAccess) 的策略附加到用户/组,以便能够访问您的 API 网关端点。完成所有步骤后,您将看到新用户的密钥/秘密。

    使用 Postman 使用 AWS 签名发出 API 请求

    现在,为了简化操作,安装Postman,然后在您的请求页面中使用Authorization 选项卡,选择AWS Signature

    为您的新用户填写AccessKey/SecretKey,您操作的AWS Region(例如us-west-1)并点击Update Request按钮。 届时,Postman 将为您的请求填写必要的标头,您可以向您的 API 网关发出授权请求。

    【讨论】:

    • 谢谢,我希望这个解决方案能够与 OpenID Connect 集成。我需要搜索另一个解决方案:)
    • 为此,您应该查看自定义授权方 Lambda 函数。然后,您的函数可以针对您想要的任何第 3 方进行身份验证,然后结果可以在您的 API 网关中缓存所需的时间。
    • 所以我不能通过增强(简化)工作流程来做到这一点? docs.aws.amazon.com/cognito/latest/developerguide/…
    • 如何在静态网页上实现相同的功能,而不是使用 Postman?
    • 静态网站无法使用 AWS 机密。您想使用用户收到的来自某个身份提供者(例如 Auth0)的 JWT 令牌来换取他们的登录名/密码。从用户浏览器发送到您的网关的 JWT 令牌随后将由您的 API 网关的自定义授权方进行验证。然后,这样的 Authorizer 将是一个简单的 Lambda 函数,它会为您验证令牌并允许用户请求进入您的网关。
    【解决方案2】:

    在我们的论坛上重复我的回答:

    AWS_IAM 身份验证意味着您必须使用 AWS 签名版本和 AWS 凭证对请求进行签名。有关签名版本 4 here 的更多详细信息。

    您可能希望查看Postman 之类的工具来生成测试签名。

    【讨论】:

    • 谢谢。这样,我总是需要访问密钥和秘密,并且无法包含 openid 连接来进行身份验证。我对吗?自定义授权人应该做这项工作吗?
    • 正确。您可以使用自定义授权方来支持其他身份验证方法。
    • @BobKinney:如何使用 AWS_IAM 身份验证获取上下文授权者数据?它给了我空白值。我在 api 网关中使用 lamda 函数。但是对于 AWS_IAM 角色,我没有得到任何价值。能否请您对此提出反馈意见?
    • @Bob Kinney 如何在静态网页上实现相同的功能而不是使用 Postman?
    猜你喜欢
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2020-05-28
    • 2015-03-22
    • 2012-12-08
    • 2022-12-03
    相关资源
    最近更新 更多