リバースプロキシでサイト全体にゲートをかける
Caputchin の通常の使い方は、ページに ウィジェット を埋め込み、トークンをバックエンドで検証することです。それにはウィジェットを置く場所と、トークンを確認するバックエンドが要ります。プロキシのページゲートはどちらも要りません。リバースプロキシ で、サイトやルート全体の手前に全画面の検証を置きます。訪問者は検証を一つ済ませ、短命のパスを得て、パスが切れるまでサイトを歩き回ります。検証は短いゲームか、ワンタップの確認か、選んだほうです。守られるアプリは一切触られません。
アプリ自体には何も足されないので、これはスクリプトを埋め込めないホストを守るやり方です。コンパイル済みのシングルページのログインポータル、アプライアンス、または認証プロキシの背後に座る社内ツールなどです。
誰のためのものか
インラインのウィジェットが合わないときにゲートへ手を伸ばします:
- アプリにウィジェットを置く場所がない。 封じられたログインポータル(Authelia など)、ベンダーのアプライアンス、または編集できないどの UI も。
- フォーム一つではなく、面全体にゲートをかけたい。 単一の送信での確認ではなく、「このサイトに達する前に、人間だと証明せよ」です。
- トークンを検証するバックエンドがない。 強制するのはプロキシで、書くべき
/siteverify呼び出しはありません。
管理する普通のページやフォームには、代わりに ウィジェット を埋め込んでください。そのほうが軽く、訪問者をリダイレクトしません。フォームはあるがバックエンドがないなら、ホスト型認証 のほうが合います。
どう動くか
一度の解答が多くのリクエストを買います。訪問者は検証を一度済ませ、その後はファーストパーティ Cookie が、切れるまでそのリクエストを通します。
プロキシはリクエストごとに、Caputchin へ小さな オーソライザー 呼び出しをします。リクエストが有効なパスを持たないとき、Caputchin は 401 を返し、プロキシは訪問者をホスト型チャレンジへリダイレクトします。パスが在って有効なとき、Caputchin は 204 を返し、プロキシはリクエストをアプリへ通します。
通過許可 Cookie
パスはファーストパーティ Cookie に住みます。名前は既定で cpt_gate、サイトキーごとに変更でき、それはホストする小さなコールバックが、あなた自身のドメインにセットします(既定では /__cpt/callback にあり、こちらも移せます)。署名付きで短命のトークンで、デバイスに紐づかないため、その安全性はまるごと Cookie の属性(HttpOnly、Secure、SameSite=Lax)と、選ぶ短い TTL から来ます。訪問者に Cookie をセットするので、Cookie ポリシーで開示してください。設定ガイド がコールバックと必要な属性を通しで説明します。
あえて省いているもの
- セルフホストのゲートなし。 Caputchin がチャレンジをホストしパスを検証します。あなたは検証器を動かしません。プロキシは Cookie を転送し、リダイレクトに従うだけです。
- リクエストごとのチェックで、ローカルなトークン検証ではない。 プロキシはリクエストごとに Caputchin へ尋ねます。選ぶ フェイルモード(オープンかクローズド)が、Caputchin が短時間到達できないときに何が起きるかを決めます。
- サイトキーごと、Cookie スコープの通過許可。 パスは一つのオリジンを通し、アカウント全体や複数ドメインは通しません。それは普通のファーストパーティ Cookie だからです。
- 文言のカスタマイズはなし。 選べるのは検証ページの言語とテーマで、その文言ではありません。
- セッションでもログインでもない。 ゲートは人間がサイトに達したことを証明します。アプリは相変わらず認証と自分のレート制限を担います。二つは重なります。
訪問者に見えるもの
検証ページは訪問者自身の言語で話し、明るい・暗いの好みに従い、このサイトキーのウィジェットと同じブランドをまといます。どちらも、すでに設定済みの同じサイトキーから解決するからです。代わりに言語やテーマを固定したり、ゲームとワンタップのチェックボックスのどちらかを選んだりするのは、サイトキーの プロキシゲート ページです。チャレンジをカスタマイズする を参照してください。
あわせて読む
- プロキシのページゲートを設定する:有効にして、プロキシを端から端まで配線する。
- チャレンジをカスタマイズする:ゲームかチェックボックスか、言語、テーマ、Cookie 名、コールバックのパス。
- リバースプロキシのレシピ:nginx、Traefik、Caddy、そして Authelia の実例。
- プロキシのページゲートの統計:パススルー対チャレンジの比を読む。
- ホスト型認証:向ける先のフォームが実際にある場合の、バックエンドなしの選択肢。