メインコンテンツへスキップ
外部アクセストークンは、特定のReplit Appのために発行するベアラートークンです。 プライベート開発URLプライベートデプロイメント によってURLがロックされていても、CIパイプライン、Webhook、ステータスチェックのピンガー、Slackボット、内部スクリプトといった自動化サービスがアプリにアクセスできるようになります。 各トークンはパスワードと同じように扱ってください。トークンを持っている人は誰でも、有効期限が切れるかあなたが失効させるまで、あなたのアプリにアクセスできます。
外部アクセストークンはReplit CoreプランおよびProプランで利用できます。 Enterpriseのお客様は、ワークスペースでこの機能を有効にする前にReplitへのオプトインのリクエストが必要です。トークンは、デプロイメントがプライベートになった後にのみ公開設定に表示されます。

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

ブラウザの外側にある何かがプライベートなReplit Appを呼び出す必要があるときは、外部アクセストークンを使いましょう。よくあるケース:
  • すべてのコミットで開発URLに対してスモークテストを実行するGitHub Actionsのワークフロー。
  • 公開済みアプリのヘルスエンドポイントにアクセスするアップタイムモニター(Better Stack、Pingdom、UptimeRobotなど)。
  • プライベートデプロイメントにPOSTするWebhookレシーバー(Stripe、Slack、GitHubなど)。
  • デバッグ中にチームメイトのマシンから実行する curlfetch 呼び出し。
外部アクセストークンはAPIトラフィック向けに設計されており、ブラウザでUIページを開くためのものではありません。シングルページアプリ(Vite、Next.jsなど)は、その後のリクエストでJavaScriptバンドルを読み込みますが、そのリクエストにはトークンが付与されないため失敗します。インタラクティブなブラウジングを行う場合は、通常どおりサインインしてください。

トークンの環境

各トークンは1つの環境に紐付けられます:
環境有効な範囲用途
Developmentアプリのワークスペースの開発URL(*.replit.dev開発中に実行中のReplにアクセスする
Productionアプリの公開済みデプロイメント(*.replit.app およびカスタムドメイン)外部サービスからプライベートデプロイメントにアクセスする
Production トークンは、現在公開されているデプロイメントに紐付けられます。新しいデプロイメントに再公開すると、既存のProductionトークンは動作しなくなり、新しいトークンを発行する必要があります。

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

1
公開したいアプリを開き、Publishing ツールを開きます。
2
Adjust settings を選択して、再公開オプションを展開します。
3
Security セクションで External access tokens を見つけます。
4
Create access token を選択し、以下を入力します:
  • Label(任意): 後でトークンを識別できるように、CIStripe webhook のような短い名前を付けます。最大120文字。
  • Environment: 呼び出し元のサービスがアプリにアクセスする必要がある場所に応じて、Development または Production を選択します。
  • Expires after: 有効期間を選びます — 1 hour24 hours7 days30 days3 months1 year5 years のいずれかです。用途に合った最短の期間を選んでください。「無期限」というオプションはありません。
5
Create を選択します。
Replitはトークンを一度だけ表示します。今すぐコピーしてください — ダイアログを閉じると、トークンを再度確認する方法はありません。トークンを失った場合は、そのトークンを失効させて新しいものを発行してください。 表示画面には、2つのコピー操作が用意されています:
  • Copy query parameter — URLに追加できる ?project-protection-bypass=<token> をコピーします。手軽な curl での確認に便利です。
  • Copy token only — 生のトークンをコピーします。Authorization: Bearer ヘッダーで送信するのに適しています。
最初のトークンを作成すると、まだ有効になっていない場合はアプリの外部アクセスが自動的に有効になります。シールドがなければ、トークンにはバイパスする対象がありません。

トークンを使う

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

Authorizationヘッダー(推奨)

curl -H "Authorization: Bearer <token>" https://your-app.replit.app/health
これは、Webhook、CIスクリプト、バックエンド間の呼び出しなど、ほぼすべての用途に適した方法です。トークンはURLを記録するログには表示されず、ブラウザの履歴にも残りません。

クエリパラメーター

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

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

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

トークンを失効させる

トークンが不要になったとき、または漏洩の可能性があると気づいたときはすぐに失効させましょう。失効させる手順:
1
アプリの公開設定で External access tokens セクションを開きます。
2
リストからトークンを見つけて、ゴミ箱アイコンを選択します。
3
失効を確認します。
失効は即時かつ取り消し不可です。そのトークンを使用しているトラフィックは、数秒以内に拒否されるようになります。再度アクセスが必要な場合は、新しいトークンを発行してください。 失効させられるのは自分が作成したトークンだけです。ワークスペースからコラボレーターを削除すると、そのコラボレーターがそのアプリ用に発行したトークンは自動的に失効します。

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

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

すべきこと

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

してはいけないこと

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

トラブルシューティング

Productionトークンは、特定の公開済みデプロイメントに紐付けられています。デプロイメントタイプを変更したり、デプロイメントを削除して再作成したりしてアプリを再公開すると、既存のProductionトークンは無効になります。新しいデプロイメントの設定から新しいトークンを発行してください。
外部アクセストークンはAPIトラフィック向けに作られており、ブラウザセッション向けではありません。シングルページアプリがブラウザで読み込まれるとき、最初のHTMLリクエストはクエリパラメーター経由でトークンを渡せますが、その後のJavaScriptバンドル、CSS、API呼び出しのリクエストにはトークンが含まれないため拒否されます。アプリをインタラクティブに閲覧するには、通常どおりReplitにサインインしてください。
できません。Replitはトークンを作成時に一度だけ表示します。一覧表示にはメタデータ(ラベル、環境、有効期限、末尾数文字)が表示されますが、完全なトークン値は表示されません。トークンを失った場合は、そのトークンを失効させて新しいものを作成してください。

次のステップ