ホットスポット外部ゲスト認証用に Web サーバーを構成する
これらのガイドラインに従って、ホットスポット外部ゲスト認証用に Web サーバーを構成してください。Web サーバーは、Firebox に接続されたどのネットワークにも配置できます。他のパブリック サーバーのように、ネットワークと同じ場所に Web サーバーをインストールすることを WatchGuard ではお勧めしています。
外部認証プロセス
この図は、クライアント ブラウザ、Firebox、および外部 Web サーバー間の相互作用における主な手順をまとめたものです。
外部認証プロセスの手順は次のとおりです。
- ホットスポット ユーザーが Web ページを閲覧しようとします。
- これが新しいホットスポット ユーザーである場合は、Firebox がクライアント ブラウザを外部 Web サーバーの認証 URL にリダイレクトします。
この URLには、アクセス要求を含むクエリー文字列が含まれています。 - ブラウザは、アクセス要求を外部 Web サーバーに送信します。
- 外部 Web サーバーが認証ページをブラウザに送信します。
- ホットスポット ユーザーが、要求された認証情報を入力し、フォームを外部 Web サーバーに送信します。
- 外部 Web サーバーは、認証情報を処理し、決定 URL を含んでいる HTML ページをブラウザに送信します。
- ブラウザからアクセス決定が Firebox に送信されます。
アクセス決定 URL には、アクセス決定、チェックサム、およびリダイレクト URL が含まれています。 - Firebox ではアクセス決定が読み取られ、チェックサムが検証され、そしてホットスポット クライアントのブラウザにリダイレクト URL が送信されます。
外部認証プロセスの結果に基づいて、リダイレクト URL を次のようにすることができます。- 外部 Web サーバーが、元のリダイレクト URL を送信した場合、ユーザーが参照した元の URL。
- 外部 Web サーバーが、別のリダイレクト URL を送信した場合、別のリダイレクト URL。
- 認証が失敗、またはアクセスが拒否され場合、認証失敗 URL。
- 外部 Web サーバーはログオフ URL を Firebox に送信して、ユーザー ホットスポット セッションを終了します。
この外部認証プロセスの主な手順については、次のセクションにさらに詳しい説明があります。
要件
Web プログラムは、Perl、Python、PHP、または他の言語で記述することができます。参考のために、Python で記述されたコードの例を説明します。ナレッジ ベースの記事 ホットスポットの外部ゲスト認証の例 にコード例が添付されています。
Web サーバー上で、この機能を使用するために 3 つの Web ページを作成する必要があります。
- 認証ページ — ホットスポット ユーザーから認証情報を受信します。
- 結果ページ — 認証結果を返し、クライアントのブラウザをリダイレクトして、Firebox にアクセス決定を送信します。
- 認証失敗ページ — エラーが発生した場合、またはアクセスが拒否された場合は、エラー情報を示します。
これらのページは、次のセクションで説明されています。
Web サーバーが Firebox と通信するためには、Web サーバーが Firebox にアクセスできることを確認する必要があります。
認証ページ
Web サーバーは、Firebox から アクセス要求 URL を受信したときに、認証ページをホットスポット クライアント送信する必要があります。
Web プログラムでは、アクセス要求 URL にあるすべての情報を保存する必要があります (外部認証プロセスのステップ 2)。Web プログラムでは、タイムスタンプおよび MAC アドレス パラメータをキーとして使用するか、またはファイル名を使用してこのデータを保存できます。クライアントが認証を完了した後、結果ページの Web プログラムは、保存された要求からこのデータを取得します。これらのデータは、共有シークレットと一緒にハッシュ チェックサムを計算するために使用されます。
この例では、アクセス要求 URL の形式を示します。
http://10.0.2.80:8080/auth.html?xtm=http://10.0.3.1:4106/wgcgi.cgi &action=hotspot_auth&ts=1344238620&sn=70AB02716F745&mac=9C:4E:36:30:2D:26 &redirect=http://www.google.com/
アクセス要求 URL には、以下のパラメータが含まれています。
xtm — 外部 Web サーバーがアクセス決定を送信する必要がある Firebox 上の URL。
action — アクションの種類。この値は常に hotspot_auth です。
ts — 要求のタイムスタンプ。
sn — Firebox のシリアル番号。
mac — クライアントの MAC アドレス。
redirect — ホットスポット ユーザーが参照しようとした元の URL。
認証プロセスの詳細を定義します。Firebox は、アクセス決定と、相互作用の整合性を検証するために必要なその他のパラメータのみを必要とします。
結果ページ
ホットスポット ユーザーが、要求された認証情報を提供した後、Web プログラムは、ホットスポット ユーザーが提供した情報および指定したアクセス条件に基づいて、アクセスを許可するかどうかを決定します。Web プログラムでは、外部認証プロセスのステップ 6 で説明されているように、すべての必要なパラメータを 1 つの URL にまとめて、クライアント ブラウザに送信される Web ページに含める必要があります。この URLは、アクセス決定 URL と呼ばれます。
この例では、アクセス決定 URL の形式を示します。
http://10.0.3.1:4106/wgcgi.cgi?action=hotspot_auth&ts=1344238620&success=1& sess_timeout=1200&idle_timeout=600&&sig=a05d352951986e5fbf939920b260a6be3a9fffd3& redirect=http://www.google.com/
アクセス決定 URL は、アクセス要求 URL の xtm パラメータで指定された URL から開始されます。
アクセス決定 URL には、これらのパラメータのすべてが含まれている必要があります。
action
アクションの種類。この値は hotspot_auth である必要があります。
success
ホットスポット アクセスについての決定です。値を 1 に設定するとユーザーがホットスポットにアクセスでき、0 に設定するとアクセスできません。
sess_timeout
ユーザー ホットスポット接続のセッション タイムアウト値。各セッションについて、ユーザーがホットスポットに接続できる時間を秒数で指定します。値を 1 に設定すると、Firebox でセッション タイムアウト設定が使用されます。値を 0 に設定すると、セッション タイムアウト値が無効化されます。値を 0 に設定すると、ホットスポットへのユーザー接続はタイムアウトしません。
idle_timeout
ユーザー ホットスポット接続のアイドル タイムアウト値。セッションが切断される前に、ユーザーがホットスポットに接続できる時間を秒数で指定します。値を 1 に設定すると、Firebox で構成した既定のアイドル タイムアウト設定が使用されます。値を 0 に設定すると、アイドル タイムアウト値が無効化されます。値を 0 に設定しないと、ユーザー クライアントとホットスポット間にトラフィックがなくてもホットスポットへのユーザー接続が失効しません。
sig
16 進法でエンコードされた小文字の文字列です。ts、sn、mac、success、sess_timeout、idle_timeout および共有シークレットに基づいた SHA1 チェックサムです。ハッシュ チェックサムを計算するために使用する共有シークレットは、Firebox デバイス上のホットスポット設定で構成された共有シークレットと一致する必要があります。
チェックサム値の計算式は Hash = SHA1(ts + sn + mac + success + sess-timeout + idle_timeout + shared_secret) です。Firebox は、チェックサムをクライアント ブラウザと外部 Web サーバー間の相互作用の整合性を検証するために使用します。
リダイレクト
Firebox から、認証の成功後にホットスポット ユーザーに送信するリダイレクト URLです。ユーザーが要求した元の URL にブラウザをリダイレクトするには、アクセス要求 URL で最初に受信した値を使用します。ユーザーを別の URL にリダイレクトするには、このパラメータで URL を指定します。
外部認証プロセスのステップ 6 で、アクセス決定 URL が Web ページから Firebox に送信されます。また、このページは、相互作用の整合性をチェックして Firebox ホットスポット上のクライアントにホットスポット セッションを作成するために、クライアント ブラウザから Firebox にアクセス決定を送信させます。
この Web ページは、ハイパーリンクを使用して決定 URL 全体を送信するか、または、<form> を使用して認証決定 URL のすべてのフィールドが含まれているメッセージを送信できます。
ハイパーリンクの例:
<a href="http://10.0.3.1:4106/wgcgi.cgi?action=hotspot_auth &ts=1344238620&success=1&sess_timeout=1200&idle_timeout=600& sig=a05d352951986e5fbf939920b260a6be3a9fffd3&redirect=http://www.google.com/">Connect</a>
フォームの例:
<form action="http://10.0.3.1:4106/wgcgi.cgi" method="post">
<fieldset>
<input type="submit" name="Connect" value="Connect" title="Connect" />
<input type="hidden" name="action" value="hotspot_auth" />
<input type="hidden" name="ts" value="1344238620" />
<input type="hidden" name="success" value="1" />
<input type="hidden" name="sess_timeout" value="1200" />
<input type="hidden" name="idle_timeout" value="600" />
<input type="hidden" name="sig" value="a05d352951986e5fbf939920b260a6be3a9fffd3" />
<input type="hidden" name="redirect" value="http://www.google.com/" />
</fieldset>
</form>
認証失敗ページ
外部認証プロセスのステップ 7 の後、URL パラメータ エラー、セッション作成エラー、無効なチェックサムなど、Firebox で認証プロセスにおけるエラーが検出された場合は、相互作用のステップ 8 で、Firebox によりクライアント ブラウザが外部 Web サーバーの失敗ページにリダイレクトされます。
Firebox でエラーコードを含む失敗 URL が構築され、認証が成功しなかった理由が示されます。これらは、認証失敗のページ上のユーザへのメッセージのベースとして使用することができます。
この例では、失敗 URL の形式を示します。
http://10.0.2.80:8080/failure.html?error=510&sn=70A70272B454E &mac=9C:4E:36:30:2D:28
失敗 URL には、以下のパラメータが含まれています。
- error — エラーの理由を示しているエラー番号。
- sn — Firebox のシリアル番号。
- mac — クライアントの MAC アドレス。
Firebox は、エラーのパラメータをこれらのエラーのいずれかの番号に設定できます。
エラー | 失敗の理由 |
---|---|
510 | 無効な認証結果またはシグネチャ |
511 | 無効な CGI パラメータ |
512 | ホットスポット セッション作成失敗 |
513 | 内部エラー |
514 | 外部認証失敗 (success=0) |
外部 Web サーバー上の認証失敗のページは、エラー コードに基づいて、ホットスポット ユーザーに異なるメッセージを表示するように設定することができます。
ログオフ URL
外部 web サーバーが指定されたクライアントからログオフする必要がある場合、ログオフ URL を、ログオフするクライアントの MAC アドレスを含む Firebox に送信します。各ログオフ URL が一度にログオフできるクライアントは 1 つのみです。Firebox がクライアントを正常にログオフできるようにするには、外部 web サーバーがログオフ URL に次の特定の詳細を含める必要があります:
action
アクションの種類。値は常に hotspot_logoff である必要があります。
MAC:
ログオフするクライアントの MAC アドレス。Web サーバーはアクセス要求 URL で使用したのと同じ MAC アドレスを使用する必要があります。
sig
16 進法でエンコードされた小文字の文字列です。mac値と共有シークレットに基づいた SHA1 チェックサムです。ハッシュ チェックサムを計算するために使用する sig で指定する共有シークレットは、Firebox デバイス上のホットスポット設定で構成された共有シークレットと一致する必要があります。
チェックサムの値を計算する関数は、sig = SHA1(ts + sn + mac + success + secret) です。Firebox は、チェックサム値を使って外部 Web サーバーを識別します。これにより、Firebox で正式なソースからのみのログオフ要求を許可し、悪意のあるソースからのログオフ要求は必ず拒否されます。
外部 Web サーバーは、これらのパラメータを使って、次のフォーマットでログオフ URL を生成します:
http://10.0.3.1:4106/wgcgi.cgi?action=hotspot_logoff&mac=9C:4E:36:30:2D:26 &sig=03349009b213b701871b936007cd92bc0eb94376
Firebox がログオフ URL を外部 Web サーバーから受信すると、次のいずれかの応答を送信します:
ユーザー ホットスポット セッション ログオフの成功または失敗
<?xml version="1.0"?>
<authentication>
<logoff_list>
<logoff>
<session_id>12</session_id>
<success>1</success>
</logoff>
</logoff_list>
</authentication>
<success> 値が 0 の場合は、ログオフ試行が失敗したことを意味します。<success> 値が 1 の場合は、ログオフ試行が成功したことを意味します。
ユーザー ホットスポット セッションが見つかりませんでした
<?xml version="1.0"?>
<authentication>
<logoff_list/>
</authentication>
このメッセージは、セッションがすでにタイムアウトまたは削除された場合に表示されます。
内部エラーが発生しました
<?xml version=\"1.0\"?>
<authentication>
<internal_error/>
</authentication>
エラー メッセージを確認して、ログオフ URL 設定に問題があるかどうかをチェックし、必要に応じて調整します。