了解 "iat" token 聲明的重要性並排除 "Invalid issued at time" 錯誤
在這篇文章中,我們將探索 ID token 中 "iat" 聲明的重要性,以及如何排除 "Invalid issued at time in ID token" 錯誤。
在這篇文章中,我們將探索 ID token 中 "iat" 聲明的重要性,以及如何排除 "Invalid issued at time in ID token" 錯誤。
在我們的社群中,我們時不時會聽到用戶提到這個令人費解的問題——“Invalid issued at time in the ID token”。用戶抱怨說:“昨天還能用,今天突然不能用了”或者“在這台電腦上可以用,但在另一台不行”。
在這篇文章中,我們將探討這個問題在 Logto 中為何發生,並提供相應的解決方法幫助你解決它。
在 OAuth 2.0 和 OpenID Connect (OIDC) 中,ID token 在安全傳遞用戶身份信息之間起重要作用。ID token 中有一個聲明稱為 "iat"(發行時間),表示 ID token 由授權伺服器發行的時間戳。
現在,“Invalid issued at time” 錯誤的根本原因幾乎已經清楚。
為減少重放攻擊並考慮時鐘偏差,Logto 以前為 ID token 設置了 60 秒的容忍窗口。任何設定的時間差異超過 60 秒的受信方都被視為有潛在風險,並將未能通過 ID token 驗證。因此,出現了 “Invalid token at time” 錯誤。
然而在現實中,時鐘偏差時常發生,有時你的電腦無法連接到世界時間伺服器來同步電腦時間。有時授權伺服器不同步。有時甚至更糟,雙方都不同步。
此外,在 SSO 場景中,各個客戶端和 SSO 提供者之間的時間差距可能更大。
為了緩解問題並考慮安全措施,Logto 現在將 iat 容忍度從 60 秒增加到非 SSO 驗證的 5 分鐘,SSO 場景中的 10 分鐘。
同時,你可以使用這個便利的工具網站檢查你的電腦時間是否與世界時間同步:https://time.is 手動同步時間或切換到其他時間伺服器,確保時間差總是在我們的容忍窗口內。
ID token 中的 "iat" 聲明是現代應用程式中增強身份和訪問管理安全性的關鍵元素。採用處理 "iat" 聲明的最佳實踐可確保身份驗證過程的堅固和安全。
還要確保你的電腦時間總是與世界時間伺服器同步。