現有A系統,B系統,A系統啟動的時候調用B系統的注冊接口API1(把A系統配置信息注冊到B系統),A系統定時向B系統接口AP2發送心跳信息,B系統根據業務情況,調用A系統的業務接口AP3,請設計兩系統的接口認證方式。
針對A系統與B系統間的接口交互需求(注冊API1、心跳API2、業務調用API3),設計一套兼顧安全性、可維護性和性能的認證方案如下:
??1. 整體認證架構??
采用 ??雙向Token+數字簽名?? 的混合認證機制:
- ??Token機制??:用于會話狀態管理(如心跳保活、業務調用身份標識)
- ??數字簽名??:基于非對稱加密驗證請求完整性,防止篡改
- ??認證流程分離??:注冊接口獨立使用高強度認證,心跳與業務接口使用輕量級動態憑證
??2. 接口認證詳細設計??
??(1) 注冊接口 API1??
A系統啟動時調用此接口向B系統注冊自身信息。
- ??認證方式??:預共享密鑰(Pre-shared Key, PSK)或雙向TLS
- ??請求參數??:
{"system_id": "A_SYSTEM_ID","public_key": "A_PUBLIC_KEY_PEM", // A系統的RSA公鑰"metadata": "{IP, 端口, 服務列表...}" // 其他配置信息 }
- ??安全措施??:
- 傳輸層:強制HTTPS加密
- 請求簽名:使用預分配的密鑰生成HMAC簽名,B系統驗證簽名合法性
- 響應:B系統返回
access_token
和refresh_token
(用于后續API2、API3)
??(2) 心跳接口 API2??
A系統定時發送心跳證明存活。
- ??認證方式??:動態Token + 時間戳簽名
- ??請求參數??:
POST /api2?ts=1672531200 Headers: Authorization: Bearer <access_token>Signature: RSA(<access_token|ts>, A_PRIVATE_KEY)
- ??安全措施??:
- ??防重放攻擊??:時間戳校驗(B系統拒絕超過±30秒的請求)
- ??Token有效性??:B系統驗證
access_token
是否由自己簽發且未過期 - ??簽名驗證??:用A系統的公鑰解密簽名,比對內容一致性
- ??心跳超時處理??:B系統若連續3次未收到心跳,則標記A系統為離線并禁用其
access_token
??(3) 業務調用接口 AP3??
B系統主動調用A系統的業務接口。
- ??認證方式??:雙向Token驗證 + 請求簽名
- ??B系統調用流程??:
- 生成請求唯一ID?
nonce
?和時間戳?ts
- 使用B系統的私鑰簽名:
sig = sign(<nonce|ts|payload>, B_PRIVATE_KEY)
- 發送請求:
POST /ap3 Headers:Authorization: Bearer <B_to_A_token> // B系統專屬TokenX-Nonce: <nonce>X-Timestamp: <ts>X-Signature: <sig> Body: <payload>
- 生成請求唯一ID?
- ??A系統驗證邏輯??:
- 校驗
B_to_A_token
是否有效(由A在注冊時頒發給B) - 驗證
nonce
未被重復使用(防重放) - 用B系統的公鑰驗證簽名
- 校驗
??3. 令牌管理與更新機制??
??令牌類型?? | ??用途?? | ??生命周期?? | ??更新方式?? |
---|---|---|---|
access_token | API2心跳認證 | 1小時 | 定期刷新(API2返回新Token) |
refresh_token | 刷新access_token | 7天 | 注冊時生成,失效后需重新注冊 |
B_to_A_token | B系統調用AP3的憑證 | 長期有效 | A系統在注冊時生成并返回給B |
- ??令牌刷新??:
A系統在心跳響應中檢測access_token
臨近過期時,主動調用B的刷新接口,使用refresh_token
獲取新Token - ??密鑰輪轉??:
A系統每次重啟時生成新密鑰對,通過API1更新公鑰
??4. 安全加固措施??
- ??傳輸層加密??:所有接口強制HTTPS(TLS 1.3+)
- ??IP白名單??:B系統僅允許預注冊的A系統IP調用AP3
- ??請求限流??:
- API2心跳頻率限制:每分鐘≤1次
- AP3業務接口:按業務優先級分配配額
- ??敏感操作審計??:記錄Token生成、刷新、失效日志,便于追蹤異常
??5. 容錯與異常處理??
- ??心跳丟失恢復??:
A系統若檢測到心跳失敗,自動重試3次后觸發重新注冊流程 - ??Token失效處理??:
- AP3調用返回
401 Unauthorized
時,B系統需重新申請B_to_A_token
- A系統收到無效Token時主動清理本地會話狀態
- AP3調用返回
- ??密鑰泄露應對??:
支持B系統主動吊銷A系統的公鑰證書,強制A重新注冊
??方案優勢??
- ??分層認證??:注冊接口獨立保障系統級信任,業務接口輕量化認證
- ??防篡改與重放??:數字簽名+時間戳+Nonce三重防護
- ??動態信任鏈??:通過Token生命周期管理和密鑰輪轉減少長期風險
- ??可擴展性??:支持新增系統(如C系統)通過相同注冊流程接入