2017-02-08 15 views
2

私のASP.Net MVCのコアアプリケーションを復号化することができませんでした以下のようなAntiforgeryミドルウェア追加しました:ASP.NETコアにAntiforgeryを使用してエラーを得た - antiforgeryトークンは、

startup.cs

services.AddMvc(); 
services.AddSession(); 
services.AddCaching(); 
services.AddSession(o => 
{ 
    o.IdleTimeout = TimeSpan.FromMinutes(120); 
}); 
services.AddAntiforgery(); 

私はビューとコントローラ

ビューで下に追加しました:

<form action="/Home/Login" method="post" id="staff-login" autocomplete="off"> 
 

 
@Html.AntiForgeryToken() 
 

 
......

コントローラ

[HttpPost, ValidateAntiForgeryToken] 
public IActionResult Login(IFormCollection formCollection) 
{...} 

問題は、ユーザーがさまざまな形式に遭遇したときに、ユーザーが常に下に取得することです。

System.InvalidOperationException:偽造防止トークンを に復号化できませんでした。 ---> System.Security.Cryptography.CryptographicException: キーリングにキー{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}が見つかりませんでした。

私は、web.config内の検証/復号化キーの静的なペアを設定することを示唆している解決策が見つかりましたが、このソリューションは古典的なasp.netアプリケーションのみです。 ASP.Netコアではどうすればよいですか?

+0

この説明を確認してください:https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/default-settings。同じキー値を再利用する必要があります(キーを特定のディレクトリパスに保存する)。 –

答えて

1

LinuxのコンテナにホストされているASP .netコアアプリケーションで、私はまさにそのエラーを抱えていました。

docsから、特定の基準を満たさないと、キーがプロセス内にのみ残っているように見えますが、私の場合でも動作していなかったようです。

最初に、デフォルト設定でエラーが発生しました。
私は、ファイルシステム上のキーの特定の設定を追加しました:

  services.AddDataProtection() 
       .PersistKeysToFileSystem(new System.IO.DirectoryInfo(@"/var/my-af-keys/")); 

また、これは、私は、アプリケーション名を設定しなければならなかった問題が修正されませんでした:私は確認されていない

  services.AddDataProtection() 
       .SetApplicationName("fow-customer-portal") 
       .PersistKeysToFileSystem(new System.IO.DirectoryInfo(@"/var/dpkeys/")); 

をが、その可能性のあるLXCホスティングの意味は、.netコアはアプリのアイデンティティを維持できません。

関連する問題