在我的Web应用程序中,我需要验证从Live SDK 5.6获得的JWT身份验证令牌。 不久之前,这些令牌的签名是使用签名密钥的base64编码头+有效负载的HMACSHA256哈希值,这是应用密钥(来自account.live.com/developers/applications)+" JWTSig"。 现在似乎并非如此。
有谁知道这些令牌现在如何签署?
抱歉我的英文。
答案 0 :(得分:0)
执行此操作的最佳方法是从Azure移动服务返回JWT
令牌,并使用AMS
中的相同主密钥对其进行签名验证。 GitHub上有一个项目,展示了如何做到这一点:
这基本上是另一个GitHub项目的衍生物,它在这里有原始的ASP.NET样本:
主要验证在调用ValidateSignature()
方法时发生,该方法获取JWT Claim段的UTF-8表示的字节,并使用{{1}中的共享密钥计算它们上的HMAC SHA-256 MAC }。如果JWT加密段和先前计算的值,则确认该密钥用于在JWT上生成HMAC并且JWT索赔段的内容未被篡改。
我发现的一个主要问题是删除将附加的Azure Mobile Services
字符串附加到"JWTSig"
方法中的主密钥。看来签名的令牌不再将该字符串附加到ValidateSignature()
的主密钥。在删除该段之前,我遇到了各种麻烦。