驗證機制
租戶、終端使用者與代理模式(proxy mode)三種 API 存取方式各自使用的標頭。
憑證種類
| 方式 | 標頭 | 代表身分 |
|---|---|---|
| 租戶 API 金鑰 | X-API-Key: tk_…(或 Authorization: Bearer tk_…) | 你的租戶 |
| 代理模式終端使用者 | X-API-Key: tk_… + X-End-User: <your-user-id> | 由你的後端聲明的特定終端使用者 |
| 平台終端使用者 | Authorization: Bearer <jwt> | 透過 /auth/login 或 OAuth 登入的終端使用者 |
另有選用的 X-Space-Id 標頭可指定特定空間;不帶這個標頭時,會使用該使用者的預設空間。
不論用哪一種方式,最後都會解析成一個主體(租戶 · 使用者 · 空間),資料庫工作階段也會以 Postgres 的資料列層級安全性限縮在該身分上。也就是說,隔離是在 API 之下強制執行的,不是靠應用程式邏輯。
我該用哪一種
- 伺服器對伺服器整合(由你的產品驅動對話):用代理模式。金鑰留在你的後端,每次請求由後端聲明終端使用者身分,使用者永遠看不到金鑰。
- 使用者直接登入平台的自有前端應用:用終端使用者 JWT。
- 管理性自動化(管理文件、代理、用量):直接用租戶金鑰呼叫管理端點。
租戶 API 金鑰是伺服器端的機密,絕對不要放進瀏覽器程式碼或行動應用裡。瀏覽器情境請改用可嵌入的小工具,它是以 share token 進行驗證的。
代理模式範例
curl https://chat.agent4.io/chat \
-H "X-API-Key: tk_live_…" \
-H "X-End-User: crm-user-8841" \
-H "Content-Type: application/json" \
-d '{ "message": "What documents do I need for a refinance?" }'終端使用者 id 可以是你系統裡任何一個穩定的識別碼。平台第一次看到它時就會建立該使用者與其預設空間,並把所有紀錄、記憶與文件都限縮在他名下。
錯誤
| 狀態碼 | 意義 |
|---|---|
401 | 憑證缺漏或無效 |
403 | 身分有效,但沒有該空間或代理的存取權 |
429 | 當月 token 額度已用盡 |