處理熱點驗證事件
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 和 COM) 。
藉由使用這項資訊,以及您的應用程式需要從本機系統或網路取得的任何其他資訊,即可產生認證。 物件也包含允許應用程式繼續或完成熱點驗證的方法。
本主題提供下列各節:
發出認證
在最簡單的情況下,應用程式會根據其擁有或可擷取的信息產生認證。 例如,使用者名稱和密碼是使用 WISPr 承載中的資訊,以及網路適配器的相關信息來產生。
執行產生或取得認證所需的任何動作之後,應用程式會在 HotspotAuthenticationContext 物件上呼叫 IssueCredentials 方法。 此方法允許應用程式提供下列專案:
WISPr UserName 參數
WISPr 密碼 參數
要包含在 WISPr 回應中的任意非標準參數
失敗時的行為
如果伺服器拒絕應用程式所提供的認證,Windows 會與網路中斷連線,而不會在目前的用戶會話中重試連線。 最後一個旗標可讓應用程式指出認證是否失敗,Windows 不應使用此設定檔自動重試連線。
此 API 有兩種變化。 IssueCredentials 方法會將參數傳遞至 Windows,然後立即傳回。 此 API 不提供驗證嘗試的結果。 Windows 8.1 中引進的 IssueCredentialsAsync 方法是異步版本,可讓應用程式擷取驗證嘗試的結果。
中止驗證
如果應用程式發現因為漫遊協定已變更、信息無法使用或因其他原因) 而無法產生目前網路的認證 (,則必須在 HotspotAuthenticationContext 物件上呼叫 AbortAuthentication 方法。
Windows 會與網路中斷連線,而不會在目前的用戶會話中重新嘗試連線。 此函式接受旗標,指出 Windows 絕對不應該使用此設定檔自動重試連線。
注意 這個方法不會從系統移除配置檔,而且如果使用者手動嘗試連線到網路,則可以再次要求應用程式提供認證。 如果完全移除配置檔,應用程式必須提供新的布建檔案來移除相關聯的配置檔。
使用替代驗證方法
如果應用程式可以使用 WISPr 以外的方法進行驗證,它可能會這麼做。 使用替代方法成功向網路驗證之後,必須在 HotspotAuthenticationContext 物件上呼叫 SkipAuthentication 方法來完成連線。 呼叫此方法時,Windows 會重新偵測因特網的連線,藉此協助使用者介面 (UI) 正確反映已驗證的狀態。
注意 對於未公告 WISPr 通訊協定支持的熱點,不會叫用 HotspotAuthentication 事件。 不過,這可讓應用程式選擇不同的通訊協議來回應,或視需要使用自定義版本的 WISPr。
與用戶互動
如果需要用戶互動,才能繼續驗證,應用程式必須在 HotspotAuthenticationContext 物件上呼叫 TriggerAttentionRequired 方法。 此方法在下列情況下很有用:
用戶已選取不要將認證儲存在應用程式中,而且必須登入。
完成連線將會向使用者的信用卡或其他帳戶收費;因此,在繼續之前,必須先同意。
用戶帳戶上沒有點數可用,而且需要新的購買。
這個方法不會完成驗證。 叫用此方法時,應用程式會要求使用指定的自變數在前景開啟。 事件令牌應該傳遞至前景應用程式,以便再次擷取 HotspotAuthenticationContext 物件,並使用其他三種方法之一來完成驗證。
應用程式在前景開啟的要求不保證成功。 當計算機處於連線待命狀態時,可能會發生 HotspotAuthentication 事件。 只有在電腦不再處於連線待命狀態、已解除鎖定且仍然連線到無線網路時,才會啟動應用程式。 因為這會延遲因特網存取,直到使用者解除鎖定計算機為止,所以每當可以自動產生認證時,就應該避免此狀態。