このドキュメントでは、エンタープライズ キャプティブポータルの設定方法について説明します。
概要
Cisco Digital Network Architecture(DNA)Spaces を使用すると、Wi-Fi に接続するエンドユーザのオンボーディングを行うお客様独自のポータルを用意できます。これは、Cisco DNA Spaces キャプティブ ポータル ランタイム(ランタイムまたはキャプティブ ポータル コンテナとも呼ばれます)と、お客様独自のオンボーディングポータル(エンタープライズポータル)をブリッジすることで実現されます。ランタイムにより、ブラウザや OS バージョンによるキャプティブポータルの動作の微妙な違いが吸収されます。お客様のオンボーディングポータルでは、ユーザーのオンボーディングに必要なワークフローを実装する必要があります。
目的のロケーションの SSID にユーザーが接続すると、コントローラはユーザーを Cisco DNA Spaces ランタイムにリダイレクトします。ランタイムは SSID/ロケーションに対して設定されたルールを解決し、CNA(Captive Network Assistant)/ブラウザと同じサイズの iframe にエンタープライズポータルをロードします。ロード時に、次のパラメータがエンタープライズポータルに渡されます。
-
client_mac
:エンドユーザーのデバイスの MAC アドレス。 -
client_ip
:エンドユーザのデバイスの IP アドレス。 -
client_id
:Cisco DNA Spaces がデバイスを識別するために使用する一意の識別子。デバイスサブスクライバ ID としても知られています。 -
location_id
:Cisco DNA Spaces ロケーション階層内のロケーションノードの ID。
上記のフィールドとは別に、ランタイムは、キーと値のペアとしてロケーション階層で定義されたすべてのロケーションメタデータ情報も渡します。URL の例を次に示します。
https://example.com/splash?client_mac=00:00:00:00:00:00&client_ip=10.10.0.1&client_id=device-ert123ert123&location_id=10000101&state=California&country=US
エンタープライズポータルでユーザーフローが完了すると、ポータルコンテナは、インターネット プロビジョニングを開始するために次のようなメッセージがエンタープライズポータルから送信されてくるのを待ちます。
window.parent.postMessage({start_provisioning : true, landing_page : <land-ing_page_url>}, '*');
上記のメッセージにより、キャプティブ ポータル コンテナでインターネット プロビジョニング プロセスがトリガーされます。インターネット プロビジョニングが完了すると、上記のメッセージで示されている landing_page
にユーザーが転送されます。ランディングページの URL が指定されていない場合、ランタイムはエンタープライズポータルのホームページにフォールバックします。コントローラがインターネットのプロビジョニングに失敗した場合、またはランタイムにエラー応答が返された場合は、URL
のすべてのデフォルトパラメータと、値が false
に設定された別のパラメータ p_status
を使用して、ホームページがリロードされます。想定どおりにインターネット プロビジョニングが成功した場合、p_status
は true
になります。
サンプルフロー
-
あるロケーションの SSID にユーザーが接続すると、ネットワークコントローラは、ネットワークコントローラで設定されている Cisco DNA Spaces キャプティブポータルの URL にユーザーをリダイレクトします。Cisco DNA Spaces キャプティブポータルの URL を取得する方法や、コントローラでこの URL を設定する方法については、『Cisco DNA Spaces Configuration Guide』を参照してください。
-
キャプティブポータルがロードされると、パラメータ
client_id
、client_ip
、client_mac
、location_id
、および利用可能なすべてのロケーションメタデータを使用して、設定されたエンタープライズポータル URL が iframe にロードされます。初期ロードでは、インターネットのプロビジョニングが行われていないため、パラメータp_status
は false になります。 -
エンタープライズポータルでユーザーフローが完了すると、ポータルは親 iframe コンテナにメッセージを送信し、親はユーザーへのインターネットのプロビジョニングを行う要求を送信します。
-
コントローラからコールバックを受信すると、デフォルトのパラメータ(ホームページのロード時に存在するパラメータ)を使用して、ランディングページ(またはランディングページが指定されていない場合はホームページ)が iframe にロードされます。
p_status
は、インターネット プロビジョニングのステータスに応じてtrue
またはfalse
になります。
分析のサポート
このプラットフォームでは分析がサポートされており、エンタープライズポータルはログをメッセージとしてキャプティブポータル コンテナに送信できます。現在、次のようにメニュークリックとページロードイベントを追跡できます。
window.parent.postMessage({log_action: { type : “CLICK”, sub_type : “Menu” url : <clicked_url>, item : <menu_name>}}), '*');
window.parent.postMessage({log_action: { type : “LOAD”, sub_type : “Screen”, url : <page_url>}}), '*');
(注) |
|
データ交換のサポート
エンタープライズ キャプティブ ポータルから親ウィンドウにメッセージを送信することで、エンタープライズ キャプティブ ポータルと Cisco DNA Spaces の間でデータ交換を行えるようになりました。
Cisco DNA Spaces データベースへのデータの保存
window.parent.postMessage({action: 'set_device_property',
key : 'device_last_visit_date', value : '2019-Sep-01'}, '*');
必要に応じて、親ウィンドウから着信メッセージを確認し、前述の送信メッセージで実行された Set 操作の結果をキャプチャできます。
function incomingMessageHandler(event) {
var data = event.data;
}
window.addEventListener("message", incomingMessageHandler);
前述の操作時に受信されるデータは次のとおりです。
{ status: "success”, id: "device-az6cebmfk9Jic1oKaSz2", action:
"set_device_property, key : 'device_last_visit_date', value : '2019-Sep-01'}
status は success または failure のいずれかになります。failure の場合は、応答オブジェクトで reason が送信されます。
id は、Save 操作の実行対象であるデバイスの ID に対応します。この ID は、キャプティブポータルに関係なく、デバイスごとに不変です。action、key、および value は、Save 操作で渡された値と同じです。これにより、複数の Save 操作が同時に実行された場合に、どの Save 操作が失敗し、どの操作が成功したかを特定できます。
Cisco DNA Spaces データベースからのデータの取得
同様に、次のメッセージを使用して、キーに対して保存された値を取得できます。
window.parent.postMessage({ action: 'get_device_property', key: 'device_last_visit_date'}, '*');
データ取得 API は、メッセージをエンタープライズ キャプティブ ポータルに返送します。これは、前述の Save 操作の応答に似ています。同様に、Retrieve 操作もメッセージハンドラ関数でデータを送信します。この場合は、incomingMessageHandler です。エンタープライズ キャプティブ ポータルが前記の Get アクションのハンドラ(データ)で受信するメッセージを次に示します。
status: "success, action: "get_device_property, key: “device_last_visit_date", value: "'2019-Sep-01"}
status は success または failure になり、action および key は postMessage(送信メッセージ)で使用された値と同じです。key に対して保存されたデータを value で取得できます。
ユーザエンティティの作成のサポート
エンタープライズ キャプティブ ポータルのユーザーエンティティの作成に対するサポートが追加されました。これは、既存のデータ交換と同様に、エンタープライズ キャプティブ ポータルから親ウィンドウにメッセージを送信することによって行われます。
ユーザ ID の使用
window.parent.postMessage({ action: ”create_user”, key: ”userId”, value:”<enterprise_id>” }, '*');
window.parent.postMessage({ action: 'create_user', key: "mobilenumber", value: '+19876543211' }, '*');
電子メール ID の使用
window.parent.postMessage({ action: 'create_user', key: "email", value: 'username@domain.com' }, '*');
必要に応じて、エンタープライズ キャプティブ ポータルでは、実行されたユーザーエンティティ作成操作の結果をキャプチャするために、親ウィンドウからメッセージを受け取るよう登録できます。
function incomingMessageHandler(event) {
var data = event.data;
}
window.addEventListener("message", incomingMessageHandler);
ユーザエンティティの作成時に受信される data
は次のとおりです。
{status:“success”,
id:“user-ba5dfanej8Kjd2pLbTz1”, action:"create_user”,
key:“userId/email/mobilenumber”, value:'<provided_value>'}
status は success または failure になります。failure の場合、data にはエラーの理由を説明する reason が含まれます。id は、Cisco DNA Spaces データベース内のユーザエンティティの一意の ID に対応します。action、key、および value は、ユーザー作成操作で渡された値と同じです。
ランディングページのパラメータ
ランディングページでブレークアウトが発生すると、次のパラメータが URL に付加されます(ただし、これらのパラメータはまだ存在しません)。
-
client_mac:エンドユーザーのデバイスの MAC アドレス。
-
client_ip:エンドユーザのデバイスの IP アドレス。
-
client_id:Cisco DNA Spaces がデバイスを識別するために使用する一意の識別子(デバイスサブスクライバ ID)。
-
location_id:Cisco DNA Spaces ロケーション階層内のロケーションノードの ID。
-
p_status:デフォルトでは false に設定されているフラグ。エンドユーザーのデバイスがインターネットにプロビジョニングされると、true に設定されます。
上記のフィールドとは別に、ランタイムは、キーと値のペアとしてロケーション階層で定義されたすべてのロケーションメタデータ情報も渡します。ユーザーをインターネットにプロビジョニングする際の URL の例を次に示します。
https://example.com/splash?client_mac=00:00:00:00:00:00&client_ip=10.10.0.1&client_id=device-ert123ert123&p_status=true &location_id=10000101&state=California&country=US
その他の機能拡張
-
トリガー API を使用して通知を API エンドポイントに送信するためのサポート。
-
キャプティブポータルのユーザにそのアクションに基づいてタグを付けるためのサポート。