DOCS

OAuth 2.0 驗證

使用非對稱金鑰密碼術向 Zonos 驗證您的後端服務 — 無需共享祕密。

Zonos 支援透過 OAuth 2.0 JWT Bearer Token Grant (RFC 7523) 的機器對機器驗證。您的服務使用您的 RSA 私鑰簽署短期 JWT;Zonos 使用您註冊的公鑰驗證它,並返回範圍限於您組織的 Bearer 令牌。

流程摘要:

  1. 生成 RSA 金鑰對,並向 Zonos 註冊您的公鑰
  2. 在執行時,使用您的私鑰簽署 JWT 宣告,並將其 POST 到令牌端點。
  3. Zonos 返回短期存取令牌
  4. 在每個 API 請求上包含存取令牌作為 Authorization: Bearer <token>

令牌生命週期和快取 

存取令牌預設在 5 分鐘後到期。快取令牌並主動刷新 — 不要在每個 API 呼叫上要求新令牌。每次刷新都需要新簽署的 JWT 宣告。

1import time, requests
2 
3_cache = {"access_token": None, "expires_at": 0}
4 
5def get_access_token():
6 if time.time() < _cache["expires_at"] - 30:
7 return _cache["access_token"]
8 
9 assertion = build_jwt_assertion()
10 data = requests.post(
11 "https://auth.zonos.com/oauth/token",
12 json={
13 "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
14 "assertion": assertion,
15 },
16 ).json()
17 
18 _cache["access_token"] = data["access_token"]
19 _cache["expires_at"] = time.time() + data["expires_in"]
20 return _cache["access_token"]

錯誤參考 

所有錯誤都遵循 OAuth 2.0 錯誤回應格式 (RFC 6749 §5.2):

1{
2 "error": "invalid_grant",
3 "error_description": "JWT assertion has expired"
4}
HTTP 狀態error原因
400unsupported_grant_typegrant_type 不是 urn:ietf:params:oauth:grant-type:jwt-bearer
400invalid_request遺漏或格式不正確的欄位
401invalid_grant無效的簽名、過期的宣告、未知的組織或未註冊的金鑰
500server_error內部錯誤 — 如果持續存在,請聯絡 Zonos 支援

常見 invalid_grant 原因:

  • exp 在過去 — 確保您的系統時鐘是 NTP 同步的
  • aud 不是 "zonos-auth"
  • iss 與您註冊的組織 ID 不相符
  • 公鑰已輪換但尚未與 Zonos 更新

安全最佳實踐 

  • 保護您的私鑰。 將其儲存在專用祕密管理器中 — 永遠不要在原始碼管理、環境變數或日誌中。
  • 保持宣告短期。 60–300 秒是標準的;沒有理由發佈更長的宣告。
  • 包含 jti 每個宣告的唯一值可啟用伺服器端重播偵測。
  • 定期輪換金鑰對。 在撤銷舊金鑰之前向 Zonos 註冊新公鑰以避免停機。
  • 永遠不要記錄 access_tokenassertion 值。 將兩者視為認證。
預約演示

這個頁面有幫助嗎?


獲取支持·法律文件·© 2026 Zonos
在此頁面: