可以使用缓存来避免频繁地向 apigateway.googleapis.com 发送 JWKS 查询。以下是一个使用 Python 缓存的示例代码:
import requests
import functools
import time
# 设置缓存有效期为 10 分钟
CACHE_EXPIRATION = 600
# 创建一个缓存字典
@functools.lru_cache()
def jwks_cache(url):
response = requests.get(url)
return response.json()
def verify_token(token):
# 获取 JWKS URL
jwks_url = "https://apigateway.googleapis.com/jwks_uri"
# 从缓存中获取 JWKS
jwks = jwks_cache(jwks_url)
# 验证 JWT
# ...
# 定期清理缓存,避免缓存过期时间太长
def clean_cache():
while True:
time.sleep(CACHE_EXPIRATION)
jwks_cache.cache_clear()
# 启动清理缓存的线程
import threading
cleaner = threading.Thread(target=clean_cache)
cleaner.start()