是否可以验证 aws v4 签名?

RaG*_*aGe 6 amazon-web-services aws-api-gateway

我有一个通过 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
Run Code Online (Sandbox Code Playgroud)

小智 3

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

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

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

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

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