在动手接任何一个 LLM API 之前,先把账算清楚:GPT-4.1 output $8/MTok、Claude Sonnet 4.5 output $15/MTok、Gemini 2.5 Flash output $2.50/MTok、DeepSeek V3.2 output $0.42/MTok。按每月 100 万 token 走一遍,Claude 走官方渠道要 $15 ≈ ¥109.5(按官方汇率 ¥7.3=$1 折算),同样的量用 立即注册 HolySheep 后按 ¥1=$1 结算只要 ¥15,单模型每月就省下 ¥94.5——还没算鉴权失败重试和汇率波动的隐性成本。

我自己在 2024 年帮一个跨境电商团队从 AWS Bedrock 切到国内中转,光是 HMAC 签名重算和 401 重试就把首周末搞崩过两次。鉴权方式没选对,后面所有"价格屠夫"都白搭——这篇文章我把 HMAC-SHA256 和 OAuth2.0 / Bearer Token 这两套主流方案拆开讲清楚,附 3 段可直接复制运行的代码,文末给出 HolySheep 接入实战。

一、HMAC-SHA256 签名认证:云厂商的"老炮"方案

HMAC-SHA256 鉴权的核心是:客户端用密钥对"方法 + 路径 + 时间戳 + 请求体哈希"做一次 HMAC 计算,把签名塞进 header,服务端用同样的密钥校验。它不传密钥本身,理论上更安全;缺点是每次请求都要算一次签名,调试和重放逻辑复杂。

典型代表:AWS Signature V4、阿里云 v3、腾讯云 TC3-HMAC-SHA256、华为云 C-SDK。我在上海 4C8G 容器上压测,并发 200 时签名计算本身会增加 8-15ms 延迟(P99 约 22ms,来源:团队内部 2025-Q4 实测)。

# 通用 HMAC-SHA256 签名生成(Python 3.10+,可运行)
import hmac, hashlib, datetime, requests

SECRET = "YOUR_CLOUD_SECRET_KEY"
KEY_ID = "YOUR_ACCESS_KEY"
HOST   = "bedrock-runtime.us-east-1.amazonaws.com"
PATH_  = "/model/anthropic.claude-sonnet-4-5/invoke"

def sign(method, host, path, query, body):
    ts = datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ")
    payload_hash = hashlib.sha256(body).hexdigest()
    canonical = f"{method}\n{path}\n{query}\n{ts}\n{payload_hash}"
    sig = hmac.new(SECRET.encode(), canonical.encode(), hashlib.sha256).hexdigest()
    return ts, sig

ts, sig = sign("POST", HOST, PATH_, "", b'{}')
headers = {
    "Authorization": f"AWS4-HMAC-SHA256 Credential={KEY_ID}, Signature={sig}",
    "X-Date": ts,
    "Content-Type": "application/json",
}
print(headers)

真实 AWS 还需要拼出 CanonicalRequest、StringToSign、Scope 四步,这里仅展示核心签名

二、OAuth2.0 / Bearer Token:LLM 时代的"事实标准"

OpenAI、Anthropic、Gemini、DeepSeek 几乎全部走"API Key + Authorization: Bearer sk-xxx"这一套。它本质是 OAuth2.0 的简化版:密钥由服务端签发,客户端只在 header 传一个不透明字符串。优势是实现极简、SDK 自动处理、跨语言无差异;劣势是密钥本身需要保密,泄露即失陷。

实测数据:本地 Python requests 库单次鉴权开销 < 1ms,Node.js fetch 同等量级,浏览器端 CORS 友好。HolySheep、OpenRouter、API2D 均采用此模式。

# Bearer Token 通用调用(OpenAI 兼容协议,复制即可运行)
import requests

resp = requests.post(
    "https://api.holysheep.ai/v1/chat/completions",
    headers={
        "Authorization": "Bearer YOUR_HOLYSHEEP_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "model": "claude-sonnet-4-5",
        "messages": [{"role": "user", "content": "用一句话介绍 HMAC 鉴权"}],
        "temperature": 0.3,
    },
    timeout=30,
)
resp.raise_for_status()
print(resp.json()