---
title: 認証と権限
description: Webセッション、Android SDKトークン、アプリ単位のエージェントトークンの使い分けです。
---

# 認証と権限 {#authentication-and-permissions}

外部ツールとMCPには**アプリ単位のエージェントトークン**を使います。WebセッションとAndroid SDKトークンは用途が異なり、代用できません。

## 認証方式を選ぶ {#choose-an-authentication-method}

| 方式 | 利用者 | 範囲 |
| --- | --- | --- |
| Webセッション | ログイン済みアプリ所有者 | コンソール、トークン管理、対象アプリのAutomation API |
| エージェントBearerトークン | 開発ツール、MCP、サーバー連携 | 発行元アプリのAutomation API。トークン管理は除外 |
| SDK Bearerトークン | アプリのテスター | SDK権限確認と報告送信。開発者Automation APIは不可 |

SDKトークンには参加承認とブラウザー認証が必要です。[SDK認証](/ja/sdk/authentication)を参照してください。

## エージェントトークンを発行する {#issue-an-agent-token}

1. アプリ所有者としてログインします。
2. コンソールで**アプリ情報とSDK → コーディングエージェント接続**を開きます。
3. 名前、スコープ、有効期間を選びます。
4. 一度だけ表示される値をシークレット管理ツールやローカル実行環境に保存します。

トークンは`ot_agent_`で始まります。原文は再取得できません。紛失・期限切れの場合は再発行します。[トークンAPI](/ja/api/tokens)も同じ規則です。

### スコープ {#scopes}

| スコープ | 許可される操作 |
| --- | --- |
| `feedback:read` | フィードバック一覧・詳細取得 |
| `work-items:read` | 修正作業一覧・詳細取得 |
| `work-items:write` | 修正作業作成・PR関連付け |

権限は独立しています。`work-items:write`だけでは`feedback:read`は付与されません。参照専用ツールには必要な読み取り権限だけを付与します。

### リクエストヘッダー {#request-header}

```http
Authorization: Bearer ot_agent_YOUR_TOKEN
```

上記はプレースホルダーです。実際のトークン全体を送ります。

```sh
curl --fail-with-body \
  "$OPENTESTER_API_URL/apps/$OPENTESTER_APP_ID/automation/change-requests" \
  --header "Authorization: Bearer $OPENTESTER_AGENT_TOKEN"
```

トークンは発行元アプリでのみ有効です。毎回、有効期限、取り消し、現在の所有者、スコープを確認します。同じ所有者でも別アプリには使えません。

## WebセッションとOrigin {#web-sessions-and-origin}

WebログインにはHttpOnlyの`opentester_session` Cookieを使います。トークン管理はWebセッションのみを受け付け、`Authorization`ヘッダーがあれば拒否します。

Webセッションの`POST`、`PATCH`、`PUT`、`DELETE`には許可された`Origin`が必要です。同一オリジンのコンソールからは自動送信されます。別の`docs.`ドメインからCookieでコンソールAPIを呼ぶ方法は未対応です。

フィードバック・修正作業のAutomation APIでは、正しい形式のエージェントBearerリクエストをWeb Origin検査から除外するため、MCPやサーバーからWebセッションなしで呼べます。

::: warning 認証の混在
`Authorization`があればエージェントトークンだけを検査します。不正なトークンをCookieで補うことはありません。トークン管理では`Authorization`を完全に省略してください。
:::

## 保管と更新 {#store-and-rotate-tokens}

トークン原文をGit、公開ログ、Issue、エージェントへの指示に含めないでください。設定には変数名のみを書き、値は実行時に渡します。Androidアプリに開発者トークンを埋め込まないでください。

使わなくなったトークンはコンソールで取り消します。その後のリクエストは認証に失敗します。新しいトークンに替えたらMCPも再接続してください。
