【问题标题】:Is it possible to validate a aws v4 signature?是否可以验证 aws v4 签名?
【发布时间】:2020-04-11 01:55:56
【问题描述】:

我有一个通过 apigateway 提供的 API,它使用 AWS_IAM 身份验证。我正在寻找使用 lambda 授权器,以便我可以实现自定义授权。我意识到我可以使用 cognito 或自定义 OAuth 应用程序,并让我的客户发送相关的身份验证令牌。

但是我当前的客户已经发送了一个 AWS v4 签名(用于 AWS_IAM 实施),我可以使用它来识别用户并验证签名是否有效吗?

在授权者 lambda 中收到的令牌如下所示:

AWS4-HMAC-SHA256 Credential=ASIASLKDFSLKDF923C/20200408/us-east-1/execute-api/aws4_request, SignedHeaders=host;x-amz-date;x-amz-security-token, Signature=2c65e09dedasdfasdfwfewfa592a60bcc2623296174e78780a2caad

【问题讨论】:

    标签: amazon-web-services aws-api-gateway


    【解决方案1】:

    我不这么认为。您可以找到有关签名过程如何工作的更多信息here

    但为了节省您的点击次数,签名是使用哈希函数创建的。在这种情况下,您无法从收到的签名中获取原始值。这是设计使然。

    这消除了您识别签署请求的用户的可能性。

    您可能会验证签名。但这不适用于 AWS 环境。这是因为要能够验证签名,您应该知道发送请求的用户,并且知道这一点,可以访问他的 AWS_ACCESS_KEY 和 AWS_SECRET_ACCESS_KEY。使用这两个信息,您可以尝试根据收到的请求重新创建签名并与它的签名进行比较。

    但我很确定您不会找到任何合法途径来获取此类信息...

    【讨论】:

    • 开始了支持对话,他们说我可以计算服务器端的签名并将其与收到的请求签名进行比较。但是我真的没有合理的方法来获取生成签名所需的所有信息——主要是秘密访问密钥。所以我得出了和你一样的结论。
    • 我的情况不同,我正在编写一个代理 api 来与其他 api 服务对话。我需要为那些底层 api 计算 aws 签名,以便为代理 api 生成一个并将其与用户发送给我的内容进行比较。巧妙!谢谢大家的灵感。
    猜你喜欢
    • 2023-03-25
    • 2015-01-05
    • 1970-01-01
    • 2022-11-28
    • 2020-10-27
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多