Совместная проверка подлинности cookie между приложениями ASP.NET Core RC2 и .NET 4.5.1

У нас есть два .NET-приложения, использующие общую аутентификацию cookie. Одним из них является приложение ASP.NET Core RC1, а другим - классическое приложение .NET 4.5.1.

В настоящее время это настроено с использованием устаревшихMicrosoft.Owin.Security.Cookies.Interop вConfiguration методStartup.cs:

Это прекрасно работает, но не поддерживается для RC2.

Как мы можем начать работу с общей аутентификацией cookie для RC2?

 Matthew Verstraete30 мая 2016 г., 17:59
Я надеюсь, что вы можете понять это. Я нахожусь в одной лодке с необходимостью передавать куки с RC2 на 4.6.1.

Ответы на вопрос(1)

Решение Вопроса

https://github.com/GrabYourPitchforks/aspnet5-samples/tree/dev/CookieSharing а такжеСовместное использование cookie для аутентификации между приложениями Asp.Net Core 1 (MVC6) и MVC 5 Я смог придумать рабочее решение. Я понятия не имею, является ли это «правильным» способом, но это работает, так что вот так:

Используйте пакет nugetMicrosoft.Owin.Security.Interop 1.0.0-rc2-final в обоих приложениях.

СоздатьTicketDataFormat с помощьюDataProtectionProvider указание того же места на диске для ключей шифрования, а также для той же цели.

Сконфигурируйте аутентификацию с использованием cookie-файлов в обоих приложениях. Укажите то же самоеCookieName а такжеTicketDataFormat:

.NET 4.5.1, в методе ConfigureStartup.cs:

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
        });

.NET CORE RC2 в методе настройкиStartup.cs:

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
                });

Ваш ответ на вопрос