我有一个服务器将接收带有 SigV4 授权标头的请求,并且基于 SigV4 的验证,我将授予数据访问权限。我们如何验证SigV4?我一直在尝试获取用于验证 SigV4 的文档,但无法获取?有什么办法可以反编译签名并检查身份验证然后授权吗?
Sigv4 签名算法是
kSecret = your secret access key
kDate = HMAC("AWS4" + kSecret, Date)
kRegion = HMAC(kDate, Region)
kService = HMAC(kRegion, Service)
kSigning = HMAC(kService, "aws4_request")
Run Code Online (Sandbox Code Playgroud)
这使用了HMAC。HMAC 使用共享密钥而不是非对称公钥/私钥。
因此,为了验证签名,您的服务器需要知道每个客户端的密钥,或者至少是kSigning通过将该密钥绑定到特定日期、区域和服务而派生的密钥。
这样做的缺点是,能够验证来自任何(客户端、日期、区域、服务)的请求的服务器也能够生成新请求并将其签名为该身份。根据您的体系结构,如果服务器不比其所有客户端更受信任,这可能会成为问题。