認証とトークン
BOUNTY の API と MCP を呼ぶときの「誰として呼ぶか」と「何を許すか」をまとめた頁。呼び方は、ログインした本人として呼ぶ、トークンを付けて呼ぶ、認証なしで読む、の三つしかない。
トークンは必ず誰か一人の持ち主として動き、その人が今できることより広いことはできない。運営が外部のサービスにトークンを渡すときの手順と注意は、この頁の後半にある。
呼び方は三つ
- ログイン
- ブラウザやアプリで BOUNTY にログインした本人として呼ぶ。Web はログインのクッキー、アプリはログインで受け取ったアプリ用トークンを使う。画面の操作はすべてこの呼び方で、別の人の代わりに呼ぶ入口は無い。
- トークン
- 外のサービスや AI から、トークンを Authorization ヘッダに Bearer として付けて呼ぶ。トークンは運営が発行する API トークンと、MCP のログインで AI が受け取るものの二種類。どちらも scope(使ってよい範囲)が決まっている。
- 認証なし
- 公開の情報(公開中のイベント・プログラム・契約の OpenAPI など)は、ログインもトークンも無しで読める。API の頁で「認証なし」と書かれた入口だけがこの呼び方を受け付ける。
トークンの種類
BOUNTY が受け付けるトークンは次の四種類。それぞれのカードの「形」はトークンの見た目、「入口」は受け取る場所、「寿命」は使える長さと更新できる長さ。
- 形
Bearer(JWT)- 入口
POST /api/v1/auth/token- 寿命
1 時間 · 更新 400 日
- 形
bty_pat_…- 範囲
scope- 発行
運営
- 形
OAuth 2.1 · PKCE S256- 入口
/mcp- 寿命
1 時間 · 更新 30 日
- 形
cookie- Bearer と併用
しない
scope(使ってよい範囲)
scope はトークンに許す範囲の名前。トークンを使うたびに、BOUNTY は「その scope が付いているか」と「持ち主が今その操作をしてよいか」の両方を確かめる。scope が付いていても、持ち主の役割や所属が足りなければ断る。
行の右の「だれでも」「運営」「管理者」は、その scope を持てる人。「MCP」の札は AI からつなぐときに許可を求められる scope、「既定」の札は AI が範囲を指定せずに許可を求めたときに当てる scope(だれでも持てるものだけで、運営の範囲は AI が名指しで求めたときだけ)。
- 募集
boshuMCP既定だれでも - プログラム・コンテンツ企画の下書き
contentMCP既定だれでも - 会社ページ・メンバーの下書き
companyMCP既定だれでも - 当日パスのテンプレート下書き
passesMCP既定だれでも - チケット登録リンクの読み取り(イベントの管理者)
ticketsだれでも
運営だけが持てる scope は、運営の役割でログインしているときだけこの表に出る。
AI からつなぐ(OAuth)
Claude・ChatGPT・Claude Code・Codex などの AI を BOUNTY につなぐときの仕組み。利用者はトークンを貼らず、AI の画面から BOUNTY のログイン画面へ移り、ログインして許可を押すだけでつながる。
許可の画面には、つなごうとしているアプリの名前と、許す範囲(scope)が出る。範囲は本人が持てるものまでに絞られ、運営でない人に運営の範囲は出ない。許可したあとも、使うたびに本人の今の権限で絞り直す。
AI が受け取るトークンは MCP の入口の中からだけ使える。期限が来ると AI のクライアントが更新用のトークンで新しいものを受け取り、更新のたびに古い更新用トークンは使えなくなる。使い終わった古い更新用トークンがもう一度使われたら、その連携ごと止める。
- AI クライアント → BOUNTY: 登録 /api/oauth/register
- AI クライアント → 本人: /oauth/authorize · S256
- 本人 → BOUNTY: ログイン・同意
- BOUNTY → AI クライアント: code(1 分)
- AI クライアント → BOUNTY: /api/oauth/token · verifier
- BOUNTY → AI クライアント: access 1 時間 · bty_ort_… 30 日
- AI クライアント → BOUNTY: /mcp · Bearer
図の読み方: 左から AI、本人、BOUNTY。上から順に、AI が自分を登録し、本人をログイン画面へ送り、本人がログインして許可すると、AI は短い間だけ使える引換券(code)を受け取り、それをトークンに換えて MCP を呼ぶ。点線は BOUNTY から返ってくるもの。
API トークン(運営の管理者が発行)
API トークンは、運営の管理者が「API トークン」の画面で発行する。外部のシステム(SPIKES の別のサービスや、運営が使う自動化の仕組みなど)から BOUNTY の API を呼ぶためのもの。
トークンは発行した管理者を持ち主として動く。つまりトークンを渡すことは、選んだ scope の範囲で自分の権限を貸すことになる。持ち主が運営の役割を外れると、運営の範囲の呼び出しは断られる。
発行と失効の手順
- API トークンの画面で「発行」を押す。
- 名前(どこで使うかが分かる名前)を付け、使う scope だけを選び、期限を選んで「発行する」を押す。
- トークンが一度だけ表示される。その場でコピーして、渡す先の設定へ貼る。この画面を閉じると二度と表示されない。
- 使わなくなったら、一覧の行のメニューから「失効」を選ぶ。失効はすぐに効き、元に戻せない。
- 運営 → BOUNTY: 発行(scope を選ぶ)
- BOUNTY → 運営: bty_pat_…(1 度だけ表示)
- 外部システム → BOUNTY: Bearer bty_pat_…
- BOUNTY: scope · 持ち主の今の権限
- BOUNTY → 外部システム: 応答 · 401 / 403
- 運営 → BOUNTY: 失効
図の読み方: 左から運営、BOUNTY、外部システム。運営が scope を選んで発行し、表示されたトークンを外部システムに設定する。外部システムがトークンを付けて呼ぶと、BOUNTY は scope と持ち主の今の権限を確かめてから答える。足りなければ断る。最後に運営が失効させると、それ以降は使えない。
外部のサービスにトークンを渡すとき
運営メンバーが、外部のサービスや業者、別のチームの仕組みに BOUNTY のトークンを渡すときの手順。渡す前に、本当にトークンが要るかを確かめる。AI から使うだけなら、トークンを渡さずに MCP のログインでつなぐほうが安全。
渡す手順
- 渡す先ごとに一つずつ発行する。複数の相手で一つのトークンを使い回さない(一つを止めたいときに全部が止まる)。
- 名前に渡す相手と用途を書く。一覧を見たときに、どれを止めればよいか分かるようにする。
- scope は相手が使うものだけにする。迷ったら狭く始め、足りなければ発行し直す。
- 期限を付ける。期限なしは、常に動き続ける仕組みで、止め方が決まっているときだけにする。
- トークンはチャットやメールに貼らず、相手の設定画面や鍵の保管庫へ直接入れてもらう。
注意
- トークンは発行した人として動く。相手が呼んだ操作は、監査の記録に発行した人の操作として残る。
- トークンが漏れたかもしれないときは、すぐに失効させてから新しく発行する。失効は待たずに効く。
- 相手との取引や作業が終わったら、その日のうちに失効させる。
- OAuth を使えない相手には、トークンを手渡しする代わりに「MCP 接続リンク」を使える。リンクにはトークンが入っておらず、受け取った本人がログインして自分のトークンを発行する。リンクを取り消すと、そこから発行したトークンも止まる。
止め方
止め方は、トークンの種類で場所が違う。
- 連携中のアプリを開くAI との連携を止める。マイページの「連携中のアプリ」で解除すると、そのアプリはすぐにあなたのアカウントで操作できなくなる。作った下書きは残る。
- アプリ用トークンアプリ用トークンは本人のアプリの中だけにあり、アプリが失効の入口を呼ぶか、期限が来ると使えなくなる。使い終わった更新用トークンがもう一度使われたら、そのログインの系統ごと止める。