How to unencrypt Web API 2 JWT tokens?
我正在尝试使用Web API 2提供的OAuth承载令牌,但是我不知道如何解密它们或获取数据。
我真正想做的是找到或写一个与此Google工具等效的工具https://developers.google.com/wallet/digital/docs/jwtdecoder,以获取从Web获得的令牌API。 Google工具可让您粘贴表示JWT令牌的文本字符串,然后将其拆分并对其内部的JSON取消编码。
在Visual Studio 2013中,如果选择"新建ASP.NET"项目,然后选择具有单个用户帐户的Web API模板,则会得到一个包含令牌终结点的示例项目。如果启动项目,则可以发布请求" grant_type = password
您对令牌的生成是正确的。该令牌是一个加密或签名的字符串,包含已登录用户的所有声明和票证属性的反序列化版本。如果在IIS模式(SystemWeb)中,则通过machineKey节点中的" decryptionKey"和" validationKey"键值进行加密和签名。如果作为自宿主OWIN应用程序运行,则加密将使用DPAPI对其进行保护,并且实际上使用3DES算法。
要解密它,您需要在API控制器操作方法中调用此代码(不是必需的,但是如果您想查看此加密令牌中的内容):
1 2 | string token ="Your token goes here"; Microsoft.Owin.Security.AuthenticationTicket ticket= Startup.OAuthBearerOptions.AccessTokenFormat.Unprotect(token); |
如果您需要配置AuthZ服务器以发布JWT签名令牌,以便可以使用诸如Google JWT解码器之类的在线工具对它们进行解密;那么我建议您在这里阅读有关使用Owin
在ASP.NET Web API 2中使用JSON Web令牌的博客文章