4

在我的 Web 应用程序中,我需要验证从 Live SDK 5.6 获得的 JWT 身份验证令牌。不久前,这些令牌的签名是使用签名密钥的 base64 编码标头+有效负载的 HMACSHA256 哈希,这是应用程序机密(来自 account.live.com/developers/applications)+“JWTSig”。现在看来情况并非如此。

有谁知道现在这些令牌是如何签名的?

对不起我的英语不好。

4

1 回答 1

0

执行此操作的最佳方法是获取JWT从 Azure 移动服务返回的令牌并验证它是使用来自AMS. GitHub上有一个项目展示了如何做到这一点:

JWT 验证器

这基本上是另一个 GitHub 项目的衍生品,这里有原始 ASP.NET 示例:

AuthenticationTokenSample

主要验证发生在调用该ValidateSignature()方法时,该方法获取 JWT Claim 段的 UTF-8 表示的字节,并使用来自Azure Mobile Services. 如果 JWT 加密段和之前计算的值,则可以确认密钥用于在 JWT 上生成 HMAC,并且 JWT 声明段的内容没有被篡改。

我发现的一件主要事情是从附加到方法中的主密钥中删除附加的字符串。似乎被签名的令牌不再将该字符串附加到主密钥。在我删除该段之前,我在通过验证之前遇到了各种各样的麻烦。"JWTSig"ValidateSignature()AMS

于 2015-02-18T03:54:45.183 回答