处理热点身份验证事件

Windows 8、Windows 8.1和Windows 10在检测到支持 wiSPr) 的无线 Internet 服务提供商漫游 (的强制门户时触发热点身份验证事件。

事件发生时,接收应用必须使用作为事件处理程序参数提供的事件令牌立即调用 Windows.Networking.NetworkOperator.HotspotAuthentication.TryGetAuthenticationContext 函数。 此函数返回一个对象,用于管理热点身份验证尝试。 如果函数失败,事件处理程序必须退出而不执行任何其他操作。

对象的属性允许应用检索以下项:

  • 无线网络的 SSID。

  • 有关连接到热点的网络适配器的详细信息。

  • 包含 WISPr 消息的 URL。

  • WISPr 消息的 XML 有效负载。

  • 向其提供凭据的身份验证 URL。

存在其他 API 来检索以下项:

通过使用此信息以及应用需要从本地系统或网络获取的任何其他信息,可以生成凭据。 对象还包含允许应用继续或完成热点身份验证的方法。

本主题中提供了以下部分:

颁发凭据

在最简单的情况下,应用会基于其拥有或可以检索的信息生成凭据。 例如,使用 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 会重新检测与 Internet 的连接,从而帮助用户界面 (UI) 正确反映经过身份验证的状态。

注意 对于不播发对 WISPr 协议的支持的热点,不会调用 HotspotAuthentication 事件。 但是,这允许应用选择要用于响应的其他协议,或者根据需要使用自定义版本的 WISPr。

与用户交互

如果需要用户交互才能继续进行身份验证,则应用必须在 HotspotAuthenticationContext 对象上调用 TriggerAttentionRequired 方法。 此方法在以下情况下很有用:

  • 用户已选择不将凭据存储在应用中,并且必须登录。

  • 完成连接将向用户收取卡或其他帐户的信用额度;因此,在继续操作之前,需要同意。

  • 用户帐户上没有可用的额度,需要进行新的购买。

此方法不会完成身份验证。 调用此方法时,应用请求使用指定的参数在前台打开。 事件令牌应传递给前台应用程序,以便它可以再次检索 HotspotAuthenticationContext 对象,并使用其他三种方法之一完成身份验证。

不保证应用在前台打开的请求成功。 当计算机处于连接待机状态时,可能会由于自动连接而发生 HotspotAuthentication 事件。 仅当计算机不再处于连接待机状态、已解锁且仍连接到无线网络时,应用才会启动。 由于这会延迟 Internet 访问,直到用户解锁计算机,因此应避免在自动生成凭据时出现此状态。

WISPr 身份验证