DOCS

OAuth 2.0 驗證

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

Zonos 支持通過 OAuth 2.0 JWT Bearer 令牌授予 (RFC 7523) 進行機器到機器驗證。您的服務使用您的 RSA 私鑰簽署短期有效的 JWT;Zonos 使用您註冊的公鑰驗證該 JWT 並返回一個以您的組織為範圍的 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