簡體   English   中英

firebase_admin auth 的 verify_id_token 方法拋出的 Token used too early 錯誤

[英]Token used too early error thrown by firebase_admin auth's verify_id_token method

每當我跑步

from firebase_admin import auth
auth.verify_id_token(firebase_auth_token)

它拋出以下錯誤:

Token used too early, 1650302066 < 1650302067. Check that your computer's clock is set correctly.

我知道底層的 google auth API 確實會檢查令牌的時間,但是如此處所述應該有 10 秒的時鍾偏差。 顯然,我的服務器時間減少了 1 秒,但是運行它仍然失敗,即使這遠低於允許的 10 秒偏差。 有沒有辦法來解決這個問題?

這是 firebase_admin.verify_id_token 驗證令牌的方式:

verified_claims = google.oauth2.id_token.verify_token(
                    token,
                    request=request,
                    audience=self.project_id,
                    certs_url=self.cert_url)

這是 google.oauth2.id_token.verify_token(...) 的定義

def verify_token(
    id_token,
    request,
    audience=None,
    certs_url=_GOOGLE_OAUTH2_CERTS_URL,
    clock_skew_in_seconds=0,
):

如您所見,verify_token 函數允許指定“clock_skew_in_seconds”,但 firebase_admin 函數沒有傳遞它,因此使用默認值 0,並且由於您的服務器時鍾關閉 1 秒,verify_token 的檢查失敗。

我認為這是 firebase_admin.verify_id_token 中的一個錯誤,也許您可​​以針對 firebase admin SDK 打開一個問題,但除此之外,您只能確保您的時鍾是准確的或顯示的時間比實際時間早

編輯:

實際上,我在 GitHub 上為 firebase/firebase-admin-Python 打開了一個問題,並創建了一個相應的拉取請求,因為無論如何我已經查看了所有源文件......

如果合並拉取請求,則允許服務器的時鍾最多延遲一分鍾。

不是永久性修復,但您也可以通過將本地時鍾時間推遲 15-30 秒來更改本地時鍾時間並解決此問題。 希望谷歌提供更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM