diff --git a/packages/toolbox-core/src/toolbox_core/auth_methods.py b/packages/toolbox-core/src/toolbox_core/auth_methods.py index 9d1c77a0..83b85025 100644 --- a/packages/toolbox-core/src/toolbox_core/auth_methods.py +++ b/packages/toolbox-core/src/toolbox_core/auth_methods.py @@ -71,7 +71,9 @@ def _update_cache(new_token: str) -> None: # verify_oauth2_token not only decodes but also validates the token's # signature and claims against Google's public keys. # It's a synchronous, CPU-bound operation, safe for async contexts. - claims = id_token.verify_oauth2_token(new_token, Request()) + claims = id_token.verify_oauth2_token( + new_token, Request(), clock_skew_in_seconds=60 + ) expiry_timestamp = claims.get("exp") if not expiry_timestamp: diff --git a/packages/toolbox-core/tests/test_auth_methods.py b/packages/toolbox-core/tests/test_auth_methods.py index db145a2c..d8fe1cbc 100644 --- a/packages/toolbox-core/tests/test_auth_methods.py +++ b/packages/toolbox-core/tests/test_auth_methods.py @@ -154,7 +154,9 @@ def test_get_google_id_token_success_local_creds( mock_default.assert_called_once_with() mock_session.assert_called_once_with(mock_creds) mock_creds.refresh.assert_called_once_with(mock_request_instance) - mock_verify.assert_called_once_with(MOCK_ID_TOKEN, ANY) + mock_verify.assert_called_once_with( + MOCK_ID_TOKEN, ANY, clock_skew_in_seconds=60 + ) assert token == f"{auth_methods.BEARER_TOKEN_PREFIX}{MOCK_ID_TOKEN}" assert auth_methods._token_cache["token"] == MOCK_ID_TOKEN assert auth_methods._token_cache["expires_at"] == MOCK_EXPIRY_DATETIME