我有一个.net核心(netcoreapp1.1)Web API。其中一个端点用于我们的Alexa技能。除了签名验证之外,我能够解决Amazons QA流程的所有问题。
对于那些不熟悉亚马逊要求的人:
Base64-解码请求上的Signature标头值以获取加密签名。
使用从签名证书中提取的公钥解密加密签名以生成声明的哈希值。
从完整的HTTPS请求正文生成SHA-1哈希值以生成派生的哈希值
比较断言的哈希值和派生的哈希值,以确保它们匹配。
参考(我能够成功完成#4以上的所有步骤): https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/developing-an-alexa-skill-as-a-web-service?ref_=pe_679090_102923190#checking-the-signature-of-the-request
Here's an example of how many are doing this validation in .net 4.5 / 4.6 not .net core.
请注意,SHA1Managed()类并不存在于.net核心加密中,或者至少我还没有能够找到要添加的正确的nuget包。
这是我的翻译。每次哈希验证都会返回false。我将签名和全身注销并在本地重现/测试,但没有骰子。
.../oauth2/v2.0/token?p={{policy}}...