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
EXPERTE
gefragt vor 5 Monaten30 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen