私有頻道與存取控制
目的:定義私有頻道所有權與授權行為。
前置條件
- 至少具備一組有效帳戶 Bearer 權杖。
- 在寫入與讀取客戶端間維持一致的頻道 ID。
API/Script 流程
- 宣告頻道所有權:
- 對尚未歸屬的頻道首次做認證寫入
POST /log?cid=<id>,會設定頻道擁有帳戶。
- 對尚未歸屬的頻道首次做認證寫入
- 以擁有者身分讀取:
- 使用擁有者權杖呼叫
GET /log?cid=<id>可取得頻道日誌。
- 使用擁有者權杖呼叫
- 非擁有者存取控制:
- 帳戶不相符的讀寫會回傳
404。
- 帳戶不相符的讀寫會回傳
- 未驗證存取控制:
- 私有頻道無權杖寫入回傳
401。 - 私有頻道無權杖讀取回傳
404。
- 私有頻道無權杖寫入回傳
- WebSocket 私有存取:
- 升級到
/ws?cid=<id>需要有效擁有者權杖。
- 升級到
HTTP/curl 流程
JSONLOG_BASE_URL="http://localhost:3002"
OWNER_TOKEN="<owner_account_token>"
OTHER_TOKEN="<other_account_token>"
CID="team-private"
# 擁有者宣告/使用頻道
curl -sS -X POST "${JSONLOG_BASE_URL}/log?cid=${CID}" \
-H "authorization: Bearer ${OWNER_TOKEN}" \
-H "content-type: application/json" \
--data '{"message":"owner log"}'
# 非擁有者無法讀取私有頻道
curl -sS "${JSONLOG_BASE_URL}/log?cid=${CID}" \
-H "authorization: Bearer ${OTHER_TOKEN}"
# 未驗證寫入會被阻擋
curl -sS -X POST "${JSONLOG_BASE_URL}/log?cid=${CID}" \
-H "content-type: application/json" \
--data '{"message":"blocked"}'
驗證
- 擁有者讀寫成功回傳
200。 - 非擁有者私有頻道操作回傳
404。 - 私有頻道寫入缺少權杖回傳
401。