You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本授权令牌的安全存储与复用方案咨询

安全存储API授权令牌的方案(本地&服务器环境)

针对你的Python脚本需要跨本地和服务器复用未过期令牌的需求,以下是几个安全且独立于脚本的存储方案:

1. 本地机器:用系统原生密钥链存储

直接利用各操作系统的安全凭据管理工具,比明文文件安全数倍,无需额外维护加密逻辑:

  • 安装跨平台的keyring库:pip install keyring
  • 存储/读取令牌的代码片段:
import keyring

# 存储令牌,service_name和username用来标识你的API服务
def save_auth_token(token):
    keyring.set_password("MyAPI_Service", "auth_token", token)

# 读取令牌,返回None表示未存储
def load_auth_token():
    return keyring.get_password("MyAPI_Service", "auth_token")

这个库会自动适配:Windows用凭据管理器、macOS用钥匙串、Linux用Secret Service,令牌不会以明文形式暴露。

2. 服务器环境:环境变量+加密临时文件

服务器上如果脚本是间隔运行(比如定时任务),可以结合环境变量存加密密钥,令牌加密后存在文件里:

  • 先安装加密库:pip install cryptography
  • 加密存储/读取的代码:
from cryptography.fernet import Fernet
import os
import os.path

# 加密密钥从环境变量读取,第一次运行可以生成后手动设置到服务器环境
def get_encrypt_key():
    key = os.environ.get("API_TOKEN_ENCRYPT_KEY")
    if not key:
        # 第一次运行生成密钥,记得把输出的密钥设置到环境变量
        key = Fernet.generate_key().decode()
        print(f"请设置环境变量:export API_TOKEN_ENCRYPT_KEY={key}")
        raise SystemExit(1)
    return key.encode()

def save_encrypted_token(token, file_path="/tmp/api_token.enc"):
    cipher = Fernet(get_encrypt_key())
    encrypted_data = cipher.encrypt(token.encode())
    with open(file_path, "wb") as f:
        f.write(encrypted_data)
    # 限制文件权限,只有当前用户可读
    os.chmod(file_path, 0o600)

def load_encrypted_token(file_path="/tmp/api_token.enc"):
    if not os.path.exists(file_path):
        return None
    cipher = Fernet(get_encrypt_key())
    with open(file_path, "rb") as f:
        encrypted_data = f.read()
    try:
        return cipher.decrypt(encrypted_data).decode()
    except:
        # 解密失败说明令牌被篡改或密钥不对,返回None重新获取
        return None
  • 注意:服务器上的环境变量可以通过crontab配置、容器环境变量或者配置管理工具设置,不要把密钥写进脚本或提交到代码仓库。

3. 通用补充建议

  • 每次读取令牌后,先检查令牌的过期时间(API返回令牌时一般会附带expires_in字段),过期了就重新请求新令牌
  • 你的client ID和secret key也别硬编码,同样用上述方式存储(比如keyring或环境变量)
  • 服务器上的加密文件要设置严格的权限(比如chmod 600),只有运行脚本的用户能读写

内容的提问来源于stack exchange,提问作者pitstank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:47:50