外部アクセストークンはReplit CoreプランおよびProプランで利用できます。
Enterpriseのお客様は、ワークスペースでこの機能を有効にする前にReplitへのオプトインのリクエストが必要です。トークンは、デプロイメントがプライベートになった後にのみ公開設定に表示されます。
トークンを使うタイミング
ブラウザの外側にある何かがプライベートなReplit Appを呼び出す必要があるときは、外部アクセストークンを使いましょう。よくあるケース:- すべてのコミットで開発URLに対してスモークテストを実行するGitHub Actionsのワークフロー。
- 公開済みアプリのヘルスエンドポイントにアクセスするアップタイムモニター(Better Stack、Pingdom、UptimeRobotなど)。
- プライベートデプロイメントにPOSTするWebhookレシーバー(Stripe、Slack、GitHubなど)。
- デバッグ中にチームメイトのマシンから実行する
curlやfetch呼び出し。
トークンの環境
各トークンは1つの環境に紐付けられます:| 環境 | 有効な範囲 | 用途 |
|---|---|---|
Development | アプリのワークスペースの開発URL(*.replit.dev) | 開発中に実行中のReplにアクセスする |
Production | アプリの公開済みデプロイメント(*.replit.app およびカスタムドメイン) | 外部サービスからプライベートデプロイメントにアクセスする |
Production トークンは、現在公開されているデプロイメントに紐付けられます。新しいデプロイメントに再公開すると、既存のProductionトークンは動作しなくなり、新しいトークンを発行する必要があります。
外部アクセストークンを作成する
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のいずれかです。用途に合った最短の期間を選んでください。「無期限」というオプションはありません。
- Copy query parameter — URLに追加できる
?project-protection-bypass=<token>をコピーします。手軽なcurlでの確認に便利です。 - Copy token only — 生のトークンをコピーします。
Authorization: Bearerヘッダーで送信するのに適しています。
最初のトークンを作成すると、まだ有効になっていない場合はアプリの外部アクセスが自動的に有効になります。シールドがなければ、トークンにはバイパスする対象がありません。
トークンを使う
トークンは次の2つの方法のいずれかで提示します:Authorizationヘッダー(推奨)
クエリパラメーター
既存のトークンを管理する
External access tokens セクションには、そのアプリのために作成したすべてのトークンが新しい順に一覧表示され、ラベル、環境、作成日、有効期限、失効ステータスも表示されます。各行には、トークンを識別しやすいようにトークンの末尾数文字が表示されます。完全な値は作成時にしか表示されないためです。 表示されるのは自分が作成したトークンだけです。あなたがアプリのオーナーであっても、他のコラボレーターのトークンは本人にのみ表示されます。トークンを失効させる
トークンが不要になったとき、または漏洩の可能性があると気づいたときはすぐに失効させましょう。失効させる手順: 失効は即時かつ取り消し不可です。そのトークンを使用しているトラフィックは、数秒以内に拒否されるようになります。再度アクセスが必要な場合は、新しいトークンを発行してください。 失効させられるのは自分が作成したトークンだけです。ワークスペースからコラボレーターを削除すると、そのコラボレーターがそのアプリ用に発行したトークンは自動的に失効します。トークンを安全に管理する
外部アクセストークンは認証情報です。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トークンが突然動作しなくなった
Productionトークンは、特定の公開済みデプロイメントに紐付けられています。デプロイメントタイプを変更したり、デプロイメントを削除して再作成したりしてアプリを再公開すると、既存のProductionトークンは無効になります。新しいデプロイメントの設定から新しいトークンを発行してください。
トークンは `curl` では動作するのに、ブラウザではサインインページが表示される
トークンは `curl` では動作するのに、ブラウザではサインインページが表示される
外部アクセストークンはAPIトラフィック向けに作られており、ブラウザセッション向けではありません。シングルページアプリがブラウザで読み込まれるとき、最初のHTMLリクエストはクエリパラメーター経由でトークンを渡せますが、その後のJavaScriptバンドル、CSS、API呼び出しのリクエストにはトークンが含まれないため拒否されます。アプリをインタラクティブに閲覧するには、通常どおりReplitにサインインしてください。
トークンを失った — もう一度確認できますか?
トークンを失った — もう一度確認できますか?
できません。Replitはトークンを作成時に一度だけ表示します。一覧表示にはメタデータ(ラベル、環境、有効期限、末尾数文字)が表示されますが、完全なトークン値は表示されません。トークンを失った場合は、そのトークンを失効させて新しいものを作成してください。
次のステップ
- プライベートデプロイメント: これらのトークンがバイパスする基盤となるアクセス制御機能。
- Replit App Access Management: プライベートなアプリにサインインできるReplitユーザーを管理します。