基于我所知道的(如果我错了,请纠正我)'access_token'相当于AspNetUser表中的'protected ticket'字段。它只是哈希。
我打算做的是反序列化受保护的票证以获取access_token值。
我正在尝试支持SSO方案,其中,用户可以使用相同的访问令牌访问多个应用程序。
答案 0 :(得分:2)
不幸的是,如果使用的哈希函数是加密哈希值,这种情况表明,这在定义上是不可能的(或应该是......)。加密哈希函数被设计成非常昂贵(理想情况下是不可能的)反转,因此最有效的方法是尝试强制执行哈希,即。通过哈希函数运行输入,直到得到一个产生所需输出的输入。即便如此,也不知道你需要多长时间才能找到它。强烈建议不要编写任何依赖于常规强制加密哈希的内容。
当然,可能的输入可能非常小(即,最多16位左右),或者所使用的函数不是加密散列函数(即,它类似于base64编码或rot-13)。在这种情况下,您可能有一种方法可以有效地反转“哈希”。
但是,我强烈怀疑情况并非如此。在这项努力中,我认为你只是运气不好,必须找到另一种方法来获得你想要的功能。
答案 1 :(得分:0)
我想我有点晚了,但应该是可能的。 ProtectedTicket 的数据将由 Microsoft.Owin.Security.ISecureDataFormat.Protect 保护。这不是单向哈希。所以可以逆转。您可以在 Katana 项目(Microsoft 的 Owin 实现)中的 Github 上查找:
如您所见,该接口还提供了 Unprotect 方法。没有测试,但你可以试一试。