我想共享 ASP.NET Framework 应用程序提供的身份验证 cookie 并在 ASP.NET Core 应用程序中使用它。为了加密 cookie,我使用数据保护,这是 .NET Core 中的默认设置,并且需要 .NET Framework 包 Microsoft.AspNetCore.DataProtection.SystemWeb。
当 .NET Core 生成并保护 cookie 时,身份验证适用于 .NET Core 应用程序。当 .NET Framework 生成并保护 cookie 时,.NET Core 应用程序不会使用它。
根据https://learn.microsoft.com/en-us/aspnet/core/security/data-protection/compatibility/replacing-machinekey?view=aspnetcore-3.1 https://learn.microsoft.com/en-us/aspnet/core/security/data-protection/compatibility/replacing-machinekey?view=aspnetcore-3.1正确保护的 cookie 应以“CfDJ8”开头,它是神奇的“09 F0 C9 F0”标头的 Base64 表示形式,用于标识受数据保护系统保护的有效负载。 .NET Core 生成的 cookie 以“CfDJ8”开头,但 .NET Framework 生成的 cookie 以“09F0C9F0”开头。
看起来 cookie 已正确生成并受到保护,但 .NET Core 使用 base64 来编码 cookie,而 .NET Framework 使用十六进制字符串。
问题是,如何为 ASP.NET Core Data Protection 加密的身份验证 cookie 设置通用 cookie 编码?
我按照此处的指南在 .NET Framework Webforms 应用程序和较新的 aspnetcore 5 应用程序之间共享 cookie。
https://learn.microsoft.com/en-us/aspnet/core/security/cookie-sharing?view=aspnetcore-5.0 https://learn.microsoft.com/en-us/aspnet/core/security/cookie-sharing?view=aspnetcore-5.0
就我而言,Webforms 应用程序验证并发出 cookie。我看到 cookie 已生成并正确设置,加密的标头文本表明数据保护系统已生效(请参见下面的屏幕截图)。
Webforms 应用程序工作正常,但是 aspnetcore 应用程序不使用此 cookie!任何具有 [Authorize] 属性的操作都会返回到登录页面。是否还需要在 aspnet core 方面完成任何其他操作才能使其正常工作?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)