[C#]google oauth JWT is not yet valid

 如果伺服器與Google服務器的系統時間不同,當我們在驗證從Google收到的令牌時,可能會得到Exception「JWT is not yet valid」,此時大概有兩種解決方法,1.調整伺服器時間到世界標準時間;2.建立一個IClock Class,在ValidateAsync()方法中傳遞一個時鐘(因為實務上可能很難對伺服器做修改,所以還是乖乖改code吧)。

解方方法2 範例:



1.建立一個繼承IClock的類別

   public class clock : IClock
        {
            public DateTime Now => DateTime.Now.AddMinutes(5);

            public DateTime UtcNow => DateTime.UtcNow.AddMinutes(5);
        }

2.在驗證Token的時候傳遞一個時鐘

   // 驗證憑證     
                var settings = new GoogleJsonWebSignature.ValidationSettings()
                {
                    Clock = new clock(),
                    Audience = new List() { GoogleClientId }
                };
                GoogleJsonWebSignature.Payload payload = GoogleJsonWebSignature.ValidateAsync(formCredential, settings).Result;


相關文章:


留言

這個網誌中的熱門文章

[Visual Studio]位於網際網路或是限制區域上 或是檔案上標有 web 字樣 所以無法處理該檔案。若希望處理這些檔案 請移除 web 字樣。

[IIS] IIS執行時,發生拒絕存取路徑 問題

[windows] xcopy 備份至 「網路磁碟機」