認証と権限
外部ツールとMCPにはアプリ単位のエージェントトークンを使います。WebセッションとAndroid SDKトークンは用途が異なり、代用できません。
認証方式を選ぶ
| 方式 | 利用者 | 範囲 |
|---|---|---|
| Webセッション | ログイン済みアプリ所有者 | コンソール、トークン管理、対象アプリのAutomation API |
| エージェントBearerトークン | 開発ツール、MCP、サーバー連携 | 発行元アプリのAutomation API。トークン管理は除外 |
| SDK Bearerトークン | アプリのテスター | SDK権限確認と報告送信。開発者Automation APIは不可 |
SDKトークンには参加承認とブラウザー認証が必要です。SDK認証を参照してください。
エージェントトークンを発行する
- アプリ所有者としてログインします。
- コンソールでアプリ情報とSDK → コーディングエージェント接続を開きます。
- 名前、スコープ、有効期間を選びます。
- 一度だけ表示される値をシークレット管理ツールやローカル実行環境に保存します。
トークンはot_agent_で始まります。原文は再取得できません。紛失・期限切れの場合は再発行します。トークンAPIも同じ規則です。
スコープ
| スコープ | 許可される操作 |
|---|---|
feedback:read | フィードバック一覧・詳細取得 |
work-items:read | 修正作業一覧・詳細取得 |
work-items:write | 修正作業作成・PR関連付け |
権限は独立しています。work-items:writeだけではfeedback:readは付与されません。参照専用ツールには必要な読み取り権限だけを付与します。
リクエストヘッダー
Authorization: Bearer ot_agent_YOUR_TOKEN上記はプレースホルダーです。実際のトークン全体を送ります。
curl --fail-with-body \
"$OPENTESTER_API_URL/apps/$OPENTESTER_APP_ID/automation/change-requests" \
--header "Authorization: Bearer $OPENTESTER_AGENT_TOKEN"トークンは発行元アプリでのみ有効です。毎回、有効期限、取り消し、現在の所有者、スコープを確認します。同じ所有者でも別アプリには使えません。
WebセッションとOrigin
WebログインにはHttpOnlyのopentester_session Cookieを使います。トークン管理はWebセッションのみを受け付け、Authorizationヘッダーがあれば拒否します。
WebセッションのPOST、PATCH、PUT、DELETEには許可されたOriginが必要です。同一オリジンのコンソールからは自動送信されます。別のdocs.ドメインからCookieでコンソールAPIを呼ぶ方法は未対応です。
フィードバック・修正作業のAutomation APIでは、正しい形式のエージェントBearerリクエストをWeb Origin検査から除外するため、MCPやサーバーからWebセッションなしで呼べます。
認証の混在
Authorizationがあればエージェントトークンだけを検査します。不正なトークンをCookieで補うことはありません。トークン管理ではAuthorizationを完全に省略してください。
保管と更新
トークン原文をGit、公開ログ、Issue、エージェントへの指示に含めないでください。設定には変数名のみを書き、値は実行時に渡します。Androidアプリに開発者トークンを埋め込まないでください。
使わなくなったトークンはコンソールで取り消します。その後のリクエストは認証に失敗します。新しいトークンに替えたらMCPも再接続してください。