プライベートチャネルとアクセス
目的: プライベートチャネルの所有権と認可動作を定義すること。
前提条件
- 有効なアカウント Bearer トークンを少なくとも 1 つ持っていること。
- 書き込み/読み取りクライアント間でチャネル 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。