Net Core 多台主機 連接 第三方登入 發生Exception

Net Core MVC or Razor Page 多台Server 串接 第三方登入 發生錯誤訊息

狀況:

當初在使用Google登入時候,

本機沒問題

Sit 沒問題

一旦上至Stg以及Prod則發生問題

唯一的差別就是機器多了一台,並且做好了Load Balance

在此時即發生

Microsoft.AspNetCore.Antiforgery.AniforgeryValidationException: The antiforgery token could not be decrypted. ---> System.Security.Cryptography.CryptographicException: The key{xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} was not found in the key ring.

此時我也不懂,也就詢問了技術群組,Will保哥告知了我,先把MachineKey先統一

但我也不懂什麼是Machine Key ,如何使用在 Net Core 上

於是在我不斷的尋找之下,找出了以下

 

解決內容:

這最後結果就是加入了db table以及加入 key

參考網址為: 

https://docs.microsoft.com/zh-tw/aspnet/core/security/data-protection/implementation/key-storage-providers?view=aspnetcore-3.1&tabs=visual-studio

我使用的是 EF 的方式

我是PostgreSQL

1. Nuget 加入 Microsoft.AspNetCore.DataProtection.EntityFrameworkCore

2. 針對我的DbContext 加入 PersistKeysToDbContext

3. 移至我的DbContext,繼承IDataProtectionKeyContext

並且加入

public DbSet<DataProtectionKey> DataProtectionKeys { get; set; }

4. 使用 Code First Migrations

完成後即可