在我的 Web 应用程序中,我需要验证从 Live SDK 5.6 获取的 JWT 身份验证令牌。
不久前,这些令牌的签名是使用签名密钥的 Base64 编码标头+有效负载的 HMACSHA256 哈希,该签名密钥是应用程序秘密(来自 account.live.com/developers/applications)+“JWTSig”。
现在看来,情况并非如此。
有谁知道这些令牌现在是如何签名的?
对不起我的英语不好。
做到这一点的最好方法是获得JWT
从 Azure 移动服务返回的令牌并验证它是否使用来自 Azure 移动服务的相同主密钥进行签名AMS
。 GitHub 上有一个项目演示了如何执行此操作:
JWT 验证器 https://github.com/Magenic/JWTvalidator
这基本上是另一个 GitHub 项目的衍生品,该项目在此处具有原始 ASP.NET 示例:
身份验证令牌示例 https://github.com/gowthamand7/SkyToGoogle/tree/master/LiveSDK-master/LiveSDK-master/Samples/Asp.net/AuthenticationTokenSample
主要验证发生在调用ValidateSignature()
方法,该方法获取 JWT Claim 段的 UTF-8 表示形式的字节,并使用以下共享密钥计算它们的 HMAC SHA-256 MAC:Azure Mobile Services
。如果 JWT 加密段和之前计算的值,则可以确认该密钥已用于在 JWT 上生成 HMAC,并且 JWT 声明段的内容未被篡改。
我发现的一件主要事情是remove所附的"JWTSig"
字符串被附加到主密钥中ValidateSignature()
方法。看来正在签名的令牌不再将该字符串附加到主密钥中AMS
。在我删除该段之前,我在让验证通过方面遇到了各种各样的麻烦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)