gpt4 book ai didi

.net - ASP.NET TicketDataFormat.Unprotect(cookieValue) 返回 null

转载 作者:行者123 更新时间:2023-12-05 03:08:25 26 4
gpt4 key购买 nike

我正在尝试解密由另一个 .NET 4.6.2 MVC 应用程序设置的身份验证 cookie,该应用程序是在 Startup.Auth 中使用以下内容创建的:

            TicketDataFormat = new AspNetTicketDataFormat(
new DataProtectorShim(
DataProtectionProvider.Create(new DirectoryInfo(@"C:\Keys\"))
.CreateProtector("blah")))

这就是我尝试解密它的方法:

//  Create a data protector to facilitate in decrypting the cookie.
var provider = DataProtectionProvider.Create(new DirectoryInfo(keyDirectory));
var dataProtector = provider.CreateProtector(dataProtectorPurpose);

// Decrypt the cookie, obtaining an authentication ticket.
var ticketDataFormat = new TicketDataFormat(dataProtector);
var ticket = ticketDataFormat.Unprotect(cookieValue);

在我开始进行一些身份定制之前,这一直运行良好。我创建了一个新的 IdentityUser,它继承自 IdentityUser,这样我就可以添加一些额外的字段。是不是现在读取身份失败了?

谢谢

最佳答案

我已经通过大量的尝试解决了这个问题。

原来是以下问题的组合:

  • 提供给 DataProtectionProvider CreateProtector 方法的目的和子目的字符串未设置为“Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware”,“Cookies”、“v2”。我只是将它们作为阅读文档时的另一个字符串值,我认为这可以是任何字符串,只要它们在需要共享 cookie 的应用程序之间相同即可。

  • 其中一个应用程序使用的是 Microsoft.AspNetCore.DataProtection NuGet 包的 1.1.2 版,而另一个应用程序使用的是 1.1.1 版。我升级了 1.1.1 -> 1.1.2。

现在似乎一切正常。因此,在一个应用中拥有自定义用户身份而在另一个应用中没有并不重要,cookie 仍然可以被理解并提取 ClaimsIdentity。

关于.net - ASP.NET TicketDataFormat.Unprotect(cookieValue) 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45307764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com