このドキュメントでは、エンタープライズ キャプティブポータルの設定方法について説明します。

概要

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_statustrue になります。

サンプルフロー

  1. あるロケーションの SSID にユーザーが接続すると、ネットワークコントローラは、ネットワークコントローラで設定されている Cisco DNA Spaces キャプティブポータルの URL にユーザーをリダイレクトします。Cisco DNA Spaces キャプティブポータルの URL を取得する方法や、コントローラでこの URL を設定する方法については、『Cisco DNA Spaces Configuration Guide』を参照してください。

  2. キャプティブポータルがロードされると、パラメータ client_idclient_ipclient_maclocation_id、および利用可能なすべてのロケーションメタデータを使用して、設定されたエンタープライズポータル URL が iframe にロードされます。初期ロードでは、インターネットのプロビジョニングが行われていないため、パラメータ p_status は false になります。

  3. エンタープライズポータルでユーザーフローが完了すると、ポータルは親 iframe コンテナにメッセージを送信し、親はユーザーへのインターネットのプロビジョニングを行う要求を送信します。

  4. コントローラからコールバックを受信すると、デフォルトのパラメータ(ホームページのロード時に存在するパラメータ)を使用して、ランディングページ(またはランディングページが指定されていない場合はホームページ)が 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 エンタープライズ キャプティブ ポータルでは、iframe への埋め込みが可能な任意の Web ページを使用できますが、すべてのアセット(スクリプト、スタイルシート、イメージ、ディープリンクなど)を同じドメインからロードするか、ごく少数のドメインに制限することを推奨します。これは、インターネットへのアクセスをユーザーに提供する際に、エンタープライズポータルでロードして、コントローラの ACL に追加する必要があるドメインと IP の数を考慮したうえでの注意事項です。

  • Captive Network Assistant にポータルがロードされている場合、Android デバイス向けのランディングページはロードされません。インターネットのプロビジョニングが正常に行われると、この機能はシャットダウンされます。

  • 現在、ダッシュボードによるエンタープライズ キャプティブ ポータルの設定はサポートされていません。設定するには、エンタープライズ キャプティブ ポータルのホームページ URL を Cisco DNA Spaces サポートチーム(cisco-dnaspaces-support@external.cisco.com)に送信してください。


データ交換のサポート

エンタープライズ キャプティブ ポータルから親ウィンドウにメッセージを送信することで、エンタープライズ キャプティブ ポータルと 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'}

statussuccess または failure のいずれかになります。failure の場合は、応答オブジェクトで reason が送信されます。

id は、Save 操作の実行対象であるデバイスの ID に対応します。この ID は、キャプティブポータルに関係なく、デバイスごとに不変です。actionkey、および 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"}

statussuccess または failure になり、action および keypostMessage(送信メッセージ)で使用された値と同じです。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>'}

statussuccess または 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 エンドポイントに送信するためのサポート。

  • キャプティブポータルのユーザにそのアクションに基づいてタグを付けるためのサポート。