ホットスポット認証イベントの処理
Windows 8、Windows 8.1、および Windows 10 では、ワイヤレス インターネット サービス プロバイダー ローミング (WISPr) をサポートするキャプティブ ポータルが検出されると、ホットスポット認証イベントがトリガーされます。
イベントが発生した場合、受信側のアプリは、イベント ハンドラーの引数として提供されるイベント トークンを使用して、Windows.Networking.NetworkOperator.HotspotAuthentication.TryGetAuthenticationContext 関数を直ちに呼び出す必要があります。 この関数は、ホットスポット認証の試行を管理するオブジェクトを返します。 関数が失敗した場合、イベント ハンドラーは、追加のアクションを実行しないで終了する必要があります。
オブジェクトのプロパティを使用すると、アプリで次の項目を取得できます。
ワイヤレス ネットワークの SSID。
ホットスポットに接続されているネットワーク アダプターの詳細。
WISPr メッセージを含む URL。
WISPr メッセージの XML ペイロード。
資格情報が提供される認証 URL。
次の項目を取得するために、他の API が存在します。
ワイヤレス ネットワークの BSSID (「Windows.Networking.Connectivity 名前空間」を参照)。
ネットワークの DHCP パラメーター (UWP アプリ用の Win32 API と COM API」を参照)。
この情報と、アプリがローカル システムまたはネットワークから取得する必要があるその他の情報を使用することで、資格情報を生成できます。 オブジェクトには、アプリがホットスポット認証を続行または完了できるようにするメソッドも含まれています。
このトピックは、次のセクションが参考になります。
資格情報を発行する
最も簡単なケースでは、アプリは取得できる情報に基づいて資格情報を生成します。 たとえば、WISPr ペイロードの情報とネットワーク アダプターに関する情報を使用して、ユーザー名とパスワードが生成されます。
資格情報の生成または取得に必要なアクションを実行した後、アプリは HotspotAuthenticationContext オブジェクトに対して IssueCredentials メソッドを呼び出します。 このメソッドを使用すると、アプリは次の情報を提供できます。
WISPr UserName パラメーター
WISPr Password パラメーター
WISPr 応答に含める任意の非標準パラメーター
失敗時の動作
サーバーがアプリから提供された資格情報を拒否した場合、Windows はネットワークから切断され、現在のユーザー セッションで接続を再試行しません。 最後のフラグを使用すると、資格情報が失敗した場合、Windows はこのプロファイルを使用して接続を自動的に再試行しないことをアプリケーションに示すことができます。
この API には 2 つのバリエーションがあります。 IssueCredentials メソッドは、パラメーターを Windows に渡し、すぐに返します。 この API では、認証試行の結果は提供されません。 Windows 8.1で導入された IssueCredentialsAsync メソッドは、アプリケーションが認証試行の結果を取得できるようにする非同期バージョンです。
認証を中止する
(ローミング契約が変更されたため、情報が使用できないため、または別の理由で) アプリが現在のネットワークの資格情報を生成できないことを検出した場合、HotspotAuthenticationContext オブジェクトで AbortAuthentication メソッドを呼び出す必要があります。
Windows はネットワークから切断され、現在のユーザー セッションで接続を再試行しません。 この関数は、Windows がこのプロファイルを使用して接続を自動的に再試行してはならないことを示すフラグを受け入れます。
注 この方法では、プロファイルはシステムから削除されません。ユーザーが手動でネットワークに接続しようした場合に、アプリに資格情報の入力を再度求めることができます。 プロファイルが完全に削除された場合、アプリは、関連付けられているプロファイルを削除する新しいプロビジョニング ファイルを提供する必要があります。
代替の認証方法を使用する
WISPr 以外の方法を使用してアプリを認証できる場合は、その方法を利用できます。 代替メソッドを使用してネットワークに対して正常に認証された後、HotspotAuthenticationContext オブジェクトで SkipAuthentication メソッドを呼び出して接続を完了する必要があります。 このメソッドが呼び出されると、Windows はインターネットへの接続を再検出し、ユーザー インターフェイス (UI) が認証された状態を正しく反映するのに役立ちます。
注 WISPr プロトコルのサポートをアドバタイズしないホットスポットでは、HotspotAuthentication イベントは呼び出されません。 ただし、これにより、アプリは応答で使用する別のプロトコルを選択したり、必要に応じてカスタム バージョンの WISPr を使用したりできます。
ユーザーとの対話
認証を続行する前にユーザー操作が必要な場合、アプリは HotspotAuthenticationContext オブジェクトで TriggerAttentionRequired メソッドを呼び出す必要があります。 このメソッドは、次の状況で役立ちます。
ユーザーは、アプリに資格情報を格納しないことを選択しており、サインインする必要がある。
接続を完了すると、ユーザーのクレジット カードまたはその他のアカウントに課金されるため、続行する前に同意が必要である。
ユーザーのアカウントではクレジットは利用できないため、新しい購入が必要である。
このメソッドでは、認証は完了しません。 このメソッドが呼び出されると、アプリは、指定された引数を使用してフォアグラウンドで開くように要求します。 イベント トークンをフォアグラウンド アプリケーションに渡して、HotspotAuthenticationContext オブジェクトをもう一度取得し、他の 3 つの方法のいずれかを使用して認証を完了できるようにする必要があります。
フォアグラウンドで開くアプリの要求が成功するとは限りません。 HotspotAuthentication イベントは、コンピューターがコネクト スタンバイ状態にある間の自動接続が原因で発生する可能性があります。 このアプリは、コンピューターがコネクト スタンバイ状態でなくなり、ロックが解除され、ワイヤレス ネットワークに接続されている場合にのみ起動されます。 これにより、ユーザーがコンピューターのロックを解除するまでインターネット アクセスが遅延するため、資格情報を自動的に生成できる場合は常にこの状態を回避する必要があります。