поделиться аутентификацией cook ie между. NET Framework и. Net Core - PullRequest
1 голос
/ 03 февраля 2020

Я хотел бы поделиться аутентификационным поваром ie, предоставленным приложением ASP. NET Framework, и использовать его в ASP. NET Базовом приложении. Для шифрования cook ie я использую Data Protection, которая по умолчанию используется в. NET Core и требует пакета Microsoft.AspNetCore.DataProtection.SystemWeb для. NET Framework.

Когда. NET Ядро генерирует и защищает повар ie Аутентификация работает для. NET Базовое приложение. Когда. NET Framework генерирует и защищает повар ie. NET Базовое приложение не использует его.

В соответствии с https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/compatibility/replacing-machinekey?view=aspnetcore-3.1 должным образом защищенный повар ie должен начинаться с "CfDJ8", который представляет собой представление base64 заголовка magi c "09 F0 C9 F0", который идентифицирует полезная нагрузка, защищенная системой защиты данных. Повар ie, сгенерированный. NET Ядро запускается с "CfDJ8", но приготовление ie, сгенерированное. NET Framework начинается с "09F0C9F0". Кажется, что cook ie правильно сгенерирован и защищен, но. NET Core использует base64 для кодирования cook ie, а. NET Framework использует шестнадцатеричные строки.

Вопрос в том, как настроить общую кодировку cook ie для аутентификации cook ie, зашифрованную ASP. NET Core Data Protection?

1 Ответ

0 голосов
/ 03 февраля 2020

Вы должны использовать API защиты данных в классе c asp. net. Чтобы достичь этого, вы можете обратиться к нижеуказанным шагам или напрямую проверить этот Документ

Для обмена файлами cookie аутентификации между двумя различными приложениями ASP. NET 5 настройте каждое приложение, которое должно совместно использовать файлы cookie. следующим образом.

Установите пакет Microsoft.AspNet.Authentication.Cookies.Shareable в каждое из ваших приложений ASP. NET 5. В Startup.cs найдите вызов UseIdentity, который обычно будет выглядеть следующим образом:

// Add cookie-based authentication to the request pipeline.
app.UseIdentity();

Удалите вызов UseIdentity, заменив его четырьмя отдельными вызовами UseCookieAuthentication. (UseIdentity вызывает эти четыре метода под прикрытиями.) При вызове UseCookieAuthentication, который устанавливает готовность приложения ie, предоставьте экземпляр DataProtectionProvider, который был инициализирован в месте хранения ключа.

// Add cookie-based authentication to the request pipeline.
// NOTE: Need to decompose this into its constituent components
// app.UseIdentity();

app.UseCookieAuthentication(null, IdentityOptions.ExternalCookieAuthenticationScheme);
app.UseCookieAuthentication(null, IdentityOptions.TwoFactorRememberMeCookieAuthenticationScheme);
app.UseCookieAuthentication(null, IdentityOptions.TwoFactorUserIdCookieAuthenticationScheme);
app.UseCookieAuthentication(null, IdentityOptions.ApplicationCookieAuthenticationScheme,
    dataProtectionProvider: new DataProtectionProvider(
        new DirectoryInfo(@"c:\shared-auth-ticket-keys\")));

Внимание: при использовании таким образом DirectoryInfo должна указывать на место хранения ключа, специально отведенное для файлов cookie аутентификации. Имя приложения игнорируется (намеренно, поскольку вы пытаетесь заставить несколько приложений совместно использовать полезные нагрузки). Следует рассмотреть возможность настройки DataProtectionProvider таким образом, чтобы ключи шифровались в состоянии покоя, как показано в следующем примере.

app.UseCookieAuthentication(null, IdentityOptions.ApplicationCookieAuthenticationScheme,
  dataProtectionProvider: new DataProtectionProvider(
      new DirectoryInfo(@"c:\shared-auth-ticket-keys\"),
      configure =>
      {
          configure.ProtectKeysWithCertificate("thumbprint");
      }));

Промежуточное программное обеспечение аутентификации cook ie будет использовать явно предоставленную реализацию DataProtectionProvider, которая из-за принятия явный каталог в своем конструкторе изолирован от системы защиты данных, используемой другими частями приложения.

Asp. net будет использовать защиту данных, которая вводится DI для шифрования файлов cookie, в этом случае вы необходимо включить autin auth в вашем приложении classi c asp. net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...