> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 外部アクセストークン

> サインインなしに、CIパイプラインやWebhook、その他の自動化サービスからプライベートなReplitアプリにアクセスできるようにします。

外部アクセストークンは、特定のReplit Appのために発行するベアラートークンです。
[プライベート開発URL](/ja/features/publishing/private-deployments) や [プライベートデプロイメント](/ja/features/publishing/private-deployments) によってURLがロックされていても、CIパイプライン、Webhook、ステータスチェックのピンガー、Slackボット、内部スクリプトといった自動化サービスがアプリにアクセスできるようになります。

各トークンはパスワードと同じように扱ってください。トークンを持っている人は誰でも、有効期限が切れるかあなたが失効させるまで、あなたのアプリにアクセスできます。

<Note>
  外部アクセストークンはReplit CoreプランおよびProプランで利用できます。
  Enterpriseのお客様は、ワークスペースでこの機能を有効にする前にReplitへのオプトインのリクエストが必要です。トークンは、デプロイメントがプライベートになった後にのみ公開設定に表示されます。
</Note>

## トークンを使うタイミング

ブラウザの外側にある何かがプライベートなReplit Appを呼び出す必要があるときは、外部アクセストークンを使いましょう。よくあるケース:

* すべてのコミットで開発URLに対してスモークテストを実行するGitHub Actionsのワークフロー。
* 公開済みアプリのヘルスエンドポイントにアクセスするアップタイムモニター（Better Stack、Pingdom、UptimeRobotなど）。
* プライベートデプロイメントにPOSTするWebhookレシーバー（Stripe、Slack、GitHubなど）。
* デバッグ中にチームメイトのマシンから実行する `curl` や `fetch` 呼び出し。

外部アクセストークンは**APIトラフィック**向けに設計されており、ブラウザでUIページを開くためのものではありません。シングルページアプリ（Vite、Next.jsなど）は、その後のリクエストでJavaScriptバンドルを読み込みますが、そのリクエストにはトークンが付与されないため失敗します。インタラクティブなブラウジングを行う場合は、通常どおりサインインしてください。

## トークンの環境

各トークンは1つの環境に紐付けられます:

| 環境            | 有効な範囲                                       | 用途                           |
| :------------ | :------------------------------------------ | :--------------------------- |
| `Development` | アプリのワークスペースの開発URL（`*.replit.dev`）           | 開発中に実行中のReplにアクセスする          |
| `Production`  | アプリの公開済みデプロイメント（`*.replit.app` およびカスタムドメイン） | 外部サービスからプライベートデプロイメントにアクセスする |

`Production` トークンは、*現在公開されている*デプロイメントに紐付けられます。新しいデプロイメントに再公開すると、既存のProductionトークンは動作しなくなり、新しいトークンを発行する必要があります。

## 外部アクセストークンを作成する

<Steps>
  <Step>
    公開したいアプリを開き、**Publishing** ツールを開きます。
  </Step>

  <Step>
    **Adjust settings** を選択して、再公開オプションを展開します。
  </Step>

  <Step>
    **Security** セクションで **External access tokens** を見つけます。
  </Step>

  <Step>
    **Create access token** を選択し、以下を入力します:

    * **Label**（任意）: 後でトークンを識別できるように、`CI` や `Stripe webhook` のような短い名前を付けます。最大120文字。
    * **Environment**: 呼び出し元のサービスがアプリにアクセスする必要がある場所に応じて、`Development` または `Production` を選択します。
    * **Expires after**: 有効期間を選びます — `1 hour`、`24 hours`、`7 days`、`30 days`、`3 months`、`1 year`、`5 years` のいずれかです。用途に合った最短の期間を選んでください。「無期限」というオプションはありません。
  </Step>

  <Step>
    **Create** を選択します。
  </Step>
</Steps>

Replitはトークンを**一度だけ**表示します。今すぐコピーしてください — ダイアログを閉じると、トークンを再度確認する方法はありません。トークンを失った場合は、そのトークンを失効させて新しいものを発行してください。

表示画面には、2つのコピー操作が用意されています:

* **Copy query parameter** — URLに追加できる `?project-protection-bypass=<token>` をコピーします。手軽な `curl` での確認に便利です。
* **Copy token only** — 生のトークンをコピーします。`Authorization: Bearer` ヘッダーで送信するのに適しています。

<Info>
  最初のトークンを作成すると、まだ有効になっていない場合はアプリの外部アクセスが自動的に有効になります。シールドがなければ、トークンにはバイパスする対象がありません。
</Info>

## トークンを使う

トークンは次の2つの方法のいずれかで提示します:

### Authorizationヘッダー（推奨）

```bash theme={null}
curl -H "Authorization: Bearer <token>" https://your-app.replit.app/health
```

これは、Webhook、CIスクリプト、バックエンド間の呼び出しなど、ほぼすべての用途に適した方法です。トークンはURLを記録するログには表示されず、ブラウザの履歴にも残りません。

### クエリパラメーター

```bash theme={null}
curl "https://your-app.replit.app/health?project-protection-bypass=<token>"
```

クエリパラメーター形式は、ヘッダーを設定できない場合 — 例えばURLしか受け付けないサービスの場合 — にのみ使ってください。トークンを含むURLはプロキシのログ、シェルの履歴、スクリーンショットに残ってしまうことが多いため、可能な限りヘッダー形式を優先してください。

## 既存のトークンを管理する

**External access tokens** セクションには、そのアプリのために作成したすべてのトークンが新しい順に一覧表示され、ラベル、環境、作成日、有効期限、失効ステータスも表示されます。各行には、トークンを識別しやすいようにトークンの末尾数文字が表示されます。完全な値は作成時にしか表示されないためです。

表示されるのは*自分が*作成したトークンだけです。あなたがアプリのオーナーであっても、他のコラボレーターのトークンは本人にのみ表示されます。

## トークンを失効させる

トークンが不要になったとき、または漏洩の可能性があると気づいたときはすぐに失効させましょう。失効させる手順:

<Steps>
  <Step>
    アプリの公開設定で **External access tokens** セクションを開きます。
  </Step>

  <Step>
    リストからトークンを見つけて、ゴミ箱アイコンを選択します。
  </Step>

  <Step>
    失効を確認します。
  </Step>
</Steps>

失効は**即時かつ取り消し不可**です。そのトークンを使用しているトラフィックは、数秒以内に拒否されるようになります。再度アクセスが必要な場合は、新しいトークンを発行してください。

失効させられるのは自分が作成したトークンだけです。ワークスペースからコラボレーターを削除すると、そのコラボレーターがそのアプリ用に発行したトークンは自動的に失効します。

## トークンを安全に管理する

外部アクセストークンは認証情報です。APIキーやパスワードと同じように注意して扱ってください。

### すべきこと

* **トークンをシークレットマネージャーに保存する** — GitHub Actionsのシークレット、CIベンダーのVault、クラウドプロバイダーのシークレットストア、パスワードマネージャーなどです。リポジトリにコミットしないようにしましょう。
* 可能な限り**有効期間を短くする**。一回限りの連携なら、7日間のトークンの方が5年間のトークンを放置するより安全です。
* **すべてのトークンにラベルを付ける**ことで、将来の自分がそのトークンの用途とまだ使われているかどうかを把握できるようにします。ラベルのないトークンは、最初に漏洩し、最後まで失効されないままになりがちです。
* **利用者ごとに別々のトークンを発行する。** CIジョブごとに1つ、Webhookのソースごとに1つ、アップタイムチェックごとに1つ、といった具合です。何かが侵害されたとき — またはあるベンダーが不要になったとき — にそのトークン1つだけを失効させればよくなります。
* クエリパラメーターよりも\*\*`Authorization` ヘッダーを優先する\*\*ことで、URLログ、ブラウザの履歴、Refererヘッダーからトークンが漏洩しないようにします。
* トークンが漏洩した可能性がある場合 — ログの流出、公開リポジトリへのコミット、画面共有、元従業員のノートPCなど — は**すぐに失効させる**。失効はすぐに反映されるので、その後で新しいトークンを発行してください。

### してはいけないこと

* **チームメイトやサービス間でトークンを共有しない。** 2つのシステムが1つのトークンを共有していると、片方を壊さずにもう片方だけを失効させることができません。
* **チャット、メール、スクリーンショット、Issueトラッカーにトークンを貼り付けない。** これらのチャネルはアーカイブされ、インデックス化され、予測できない形で共有されてしまいます。
* **クライアントサイドのコードにトークンを埋め込まない** — ブラウザアプリ、モバイルアプリ、デスクトップバイナリなど、ユーザーのデバイスに配布されるものはすべて公開情報として扱いましょう。
* **ブラウザセッションにトークンを使わない。** トークンはAPI呼び出し向けであり、ブラウザタブでSPAを読み込むためのものではありません。そのような場合は通常のReplitサインインを使ってください。
* **デフォルトで5年の有効期限を選ばない。** 利用者が実際に必要とするアクセス期間に合わせて有効期間を設定してください。

## トラブルシューティング

<Accordion title="Productionトークンが突然動作しなくなった">
  Productionトークンは、特定の公開済みデプロイメントに紐付けられています。デプロイメントタイプを変更したり、デプロイメントを削除して再作成したりしてアプリを再公開すると、既存のProductionトークンは無効になります。新しいデプロイメントの設定から新しいトークンを発行してください。
</Accordion>

<Accordion title="トークンは `curl` では動作するのに、ブラウザではサインインページが表示される">
  外部アクセストークンはAPIトラフィック向けに作られており、ブラウザセッション向けではありません。シングルページアプリがブラウザで読み込まれるとき、最初のHTMLリクエストはクエリパラメーター経由でトークンを渡せますが、その後のJavaScriptバンドル、CSS、API呼び出しのリクエストにはトークンが含まれないため拒否されます。アプリをインタラクティブに閲覧するには、通常どおりReplitにサインインしてください。
</Accordion>

<Accordion title="トークンを失った — もう一度確認できますか？">
  できません。Replitはトークンを作成時に一度だけ表示します。一覧表示にはメタデータ（ラベル、環境、有効期限、末尾数文字）が表示されますが、完全なトークン値は表示されません。トークンを失った場合は、そのトークンを失効させて新しいものを作成してください。
</Accordion>

## 次のステップ

* [プライベートデプロイメント](/ja/features/publishing/private-deployments):
  これらのトークンがバイパスする基盤となるアクセス制御機能。
* [Replit App Access Management](/ja/teams/identity-and-access-management/repl-access-management):
  プライベートなアプリにサインインできるReplitユーザーを管理します。
