Skip to main content

利用可否は Auth0 のプランによって異なります

この機能を利用できるかどうかは、Auth0 のプランまたは個別契約の内容によって異なります。詳しくは、Auth0 の料金ページをご覧ください。
推奨される方法で Cloudflare をリバースプロキシとして設定するには、以下の機能を備えた Cloudflare Enterprise プランが必要です。

Cloudflare を設定する

前提条件として、選択したカスタムドメインの親ドメインが Cloudflare ダッシュボードで追加され、有効化されている 必要があります。また、使用したいカスタムドメインが Cloudflare ゾーン内にまだ存在していないことも確認してください。すでに存在している場合、Cloudflare の検証は失敗します。
Cloudflare をリバースプロキシとして設定するには、Cloudflare で CNAME レコード、Page Rule、Transform Rule を作成する必要があります。
  1. まだ実施していない場合は、自己管理証明書を使用してカスタムドメインを設定および検証 します。後で必要になるため、Origin Domain Namecname-api-key の値を控えておいてください。
  2. 対象ゾーンの Cloudflare ダッシュボードで、次の設定を使用して CNAME レコードを作成 します。
  3. 選択したカスタムドメイン配下のすべての URL を対象に、次の設定で Page Rule を作成 します。
  4. Transform Rule を作成 します。
    自己管理証明書のカスタムドメインの要件を満たすリバースプロキシを設定するために、Page Rule や Transform Rule の代わりに Cloudflare Workers を使用することもできますが、カスタムコードが不要になるため、ルールベースの方法を推奨します。
    1. Modify Request Header ビューに切り替えます。
    2. Create Rule を選択し、任意の名前を入力します。
    3. When incoming requests matchCustom filter expression を選択し、選択したカスタムドメインに関連するリクエストだけを対象にする式を設定します。たとえば、Hostname フィールドの完全一致を使用します。
    4. Modify request headerSet static を選択し、次のフィールドを設定します。
  5. 選択したカスタムドメインで、Always Use HTTPS が有効になっており、encryption mode が少なくとも Full に設定されていることを確認します。

Managed Challenges を使用する

Cloudflare の Managed Challenges を使用すると、リクエストが Auth0 Universal Login に到達する前にボットトラフィックをフィルタリングできます。リクエストがルールに一致すると、Cloudflare がそれをインターセプトし、検証用の challenge を表示します。challenge ページは HTML を返すため、Managed Challenges はブラウザベースのフローでのみ使用できます。これを API エンドポイントやヘッドレスフローに適用すると、client は想定されたレスポンスではなく HTML の challenge ページを受け取ってしまうため、それらのフローは機能しなくなります。

Universal Login のブラウザーベースのエンドポイント

以下のエンドポイントはブラウザーに HTML ページを返し、Managed Challenges に対応しています。
Classic Universal Login を使用している場合は、Managed Challenge ルールに /login も含めてください。

除外するエンドポイント

以下のエンドポイントには Managed Challenge を適用しないでください。これらはサーバー、SDK、またはリソースサーバーから呼び出されるため、対話型チャレンジには対応できません。

ルールの例

Managed Challenge をブラウザベースの Universal Login フローにのみ適用するには、Cloudflare で WAF Custom Rule を作成します。ルールのアクションを Managed Challenge に設定し、次の式を使用して、YOUR_CUSTOM_DOMAIN をカスタムドメイン (たとえば login.example.com) に置き換えてください。
これにより、チャレンジの適用対象を画面表示を伴う Universal Login エンドポイントのみに絞り、API や machine-to-machine のトラフィックへの影響を防げます。
一部のユースケースでは、動作が異なる場合があります。
  • クリアランス Cookie の保持: ブラウザーが Managed Challenge を通過すると、Cloudflare は通常、セッション中有効なクリアランス Cookie を発行します。設定によっては、ルールの対象を /authorize のみに絞るだけで、すべての /u/* パスに適用しなくても Universal Login フロー全体をカバーするのに十分な場合があります。
  • OAuth 以外のエントリポイント: SAML の SP 起点または WS-Federation のエントリポイントから開始するフローでは、/authorize ではなく /samlp/* または /wsfed/* が使用されます。これらのパスは除外リストに含まれているため、Managed Challenge を適用しないでください。

Auth0 を設定する

Auth0 の カスタムドメイン設定を更新 エンドポイントを呼び出し、リクエストボディに次のペイロードを指定します。
これにより、Auth0 は HTTP ヘッダー true-client-ip からエンドユーザーの IP アドレスを取得するように設定されます。
必ず true-client-ip を使用してください。この目的で HTTP ヘッダー cf-connecting-ip を使用することは、Cloudflare ではサポートされていません。

詳細はこちら