[英]Shared cookie authentication between ASP.NET Core RC2 and .NET 4.5.1 apps
我们有两个运行共享cookie身份验证的.NET应用程序。 一个是ASP.NET Core RC1应用程序,另一个是经典的.NET 4.5.1应用程序。
这是使用Startup.cs
的Configuration
方法中过时的Microsoft.Owin.Security.Cookies.Interop
Configuration
的:
这工作正常,但不支持RC2的方法。
我们如何才能使用RC2的共享cookie身份验证?
结合https://github.com/GrabYourPitchforks/aspnet5-samples/tree/dev/CookieSharing并在Asp.Net Core 1(MVC6)和MVC 5应用程序之间共享身份验证cookie,我能够提出一个可行的解决方案。 我不知道这是否是“正确”的方法,但它确实有效,所以在这里:
在两个应用程序中使用nuget-package Microsoft.Owin.Security.Interop 1.0.0-rc2-final
。
使用DataProtectionProvider
创建TicketDataFormat
,为加密密钥指定磁盘上的相同位置,以及相同的目的。
在两个应用程序中以owin方式配置cookie身份验证。 指定相同的CookieName
和TicketDataFormat
:
.NET 4.5.1,在Startup.cs
的Configure方法中:
var authenticationType = "Cookies";
var cookieName = "myCookieName";
var cookieEncryptionKeyPath= "C:/mypath";
var dataProtectionProvider = DataProtectionProvider.Create(new DirectoryInfo(cookieEncryptionKeyPath));
var dataProtector = dataProtectionProvider.CreateProtector("Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware", authenticationType, "v2");
var ticketDataFormat = new AspNetTicketDataFormat(new DataProtectorShim(dataProtector));
app.SetDefaultSignInAsAuthenticationType(authenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = authenticationType,
CookieName = cookieName,
TicketDataFormat = ticketDataFormat
});
Startup.cs
的Configure方法中的.NET CORE RC2:
var authenticationType = "Cookies";
var cookieName = "myCookieName";
var cookieEncryptionKeyPath= "C:/mypath";
var protectionProvider = DataProtectionProvider.Create(new DirectoryInfo(cookieEncryptionKeyPath));
var dataProtector = protectionProvider.CreateProtector("Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware", authenticationType, "v2");
var ticketFormat = new TicketDataFormat(dataProtector);
app.UseCookieAuthentication(
new CookieAuthenticationOptions
{
CookieName = options.CookieName,
CookieDomain = options.CookieDomain,
TicketDataFormat = ticketFormat
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.