API Gateway WebSocket SigV4身份验证

0

【以下的问题经过翻译处理】 我正在学习API Gateway的新Websocket功能,通过以下博客文章开始入门: https://aws.amazon.com/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/

然而,这个例子没有使用身份验证,我需要了解如何使用它。在文章中,wscat用作websocker客户端,我不认为有办法使用它来调用sigv4 API(除非我错了?)

是否有任何可以连接到需要sigv4身份验证的Websocket的工作代码(可以使用任何语言:Python,Java,NodeJS等)?

profile picture
专家
已提问 5 个月前26 查看次数
1 回答
0

【以下的回答经过翻译处理】 这是可能的,我使用 Sigv4 以两种不同的方式连接到 WSS 端点:使用标头和查询字符串。

使用标头的wscat命令示例:

wscat -H "Sec-WebSocket-Version:13" \
-H "Sec-WebSocket-Key:d6Bb3S0ZIibBDRfF460/Hw==" \
-H "Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits" \
-H "Date:20211011T205720Z" \
-H "Authorization:AWS4-HMAC-SHA256 Credential=AKIAS123456789012345/20211011/us-east-1/managedblockchain/aws4_request, SignedHeaders=date;host, Signature=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-c wss://nd-aaaaaaaaaaaaaaaaaaaaaaaaaa.wss.ethereum.managedblockchain.us-east-1.amazonaws.com

使用查询字符串的wscat命令示例:

wscat --connect "wss://nd-aaaaaaaaaaaaaaaaaaaaaaaaaa.wss.ethereum.managedblockchain.us-east-1.amazonaws.com/?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAS123456789012345%2F20211018%2Fus-east-1%2Fmanagedblockchain%2Faws4_request&X-Amz-Date=20211018T151804Z&X-Amz-Expires=30&X-Amz-SignedHeaders=host&X-Amz-Signature=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

重要提示:网络浏览器的 WebSocket 实现不接受标头,因此您必须使用查询字符串版本。

用于输出具有Header认证的wscat命令的代码:

请参考这些非常有用的示例:https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则