web-dev-qa-db-ja.com

デプロイ後にASP.Net Core Identityのログインステータスが失われる

ASP.Net CoreとMS Identityを使用していますが、各展開後にログインユーザーがログアウトされる理由を理解しようとしています。 IIS 8.5で実行しています

私はこのスレッドでメソッドを試しています(静的マシンキーの設定) 展開後のASP.NET Identity 2の再ログイン サーバーレベルで静的キーを生成するIIS UIそして、以下をウェブサイトのweb.configに追加します:

<system.web>
    <machineKey validationKey="XXX"
        decryptionKey="XXX"
        validation="SHA1" decryption="AES"/>
</system.web>

ただし、問題は残っています。

  • ユーザーがログイン
  • サイトを停止
  • スタートサイト
  • ユーザーは再度ログインする必要があります

しかし、私もこれを行います:

  • ユーザーがログイン
  • サイトを再起動
  • ユーザーはまだログインしています

ユーザーがログオフする原因は何ですか?それを回避する方法について何か考えはありますか?

25
Jean

(クリスのコメントの後に別の答えに分割されたソリューション)

ログインステータスを維持するための解決策を見つけました。それは、Webサイトの停止/開始、およびWebサイトのソースフォルダーの更新を乗り切ります。

public void ConfigureServices(IServiceCollection services)
{
    services.AddDataProtection()
            // This helps surviving a restart: a same app will find back its keys. Just ensure to create the folder.
            .PersistKeysToFileSystem(new DirectoryInfo("\\MyFolder\\keys\\"))
            // This helps surviving a site update: each app has its own store, building the site creates a new app
            .SetApplicationName("MyWebsite")
            .SetDefaultKeyLifetime(TimeSpan.FromDays(90));
}

これらの追加の行とマシンキーセットを使用すると、サイトの停止/開始後およびIISサーバーの再起動後、およびサイトが再構築された場合でも、ログインデータは残ります。

詳細情報: https://docs.Microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview

Justseregaによる提案: https://docs.Microsoft.com/en-us/aspnet/core/Host-and-deploy/iis/?tabs=aspnetcore2x#data-protection

17
Jean

認証はデータ保護スタックを使用します。データ保護が構成されていない場合、キーはメモリに保持され、アプリの再起動時に破棄されます。

アプリの再起動時にキーリングがメモリに保存されている場合:

  • Cookieベースの認証トークンはすべて無効になります。
  • ユーザーは次のリクエストで再度サインインする必要があります。
  • キーリングで保護されたデータは復号化できなくなります。これには、CSRFトークンとASP.NET Core MVC tempdata cookieが含まれる場合があります。

データ保護を設定する必要があります。詳細はこちら https://docs.Microsoft.com/en-us/aspnet/core/Host-and-deploy/iis/?tabs=aspnetcore2x#data-protection =

3
Sergei Shvets