帐户预配

预配是指使用连接到操作员网络所需的信息配置 Windows 计算机。 预配通常在购买移动宽带订阅后执行。 Windows 接受 来自 运算符的基于 XML 的预配文件。 预配 API 使用移动宽带应用或通过购买网站应用运营商提供的预配 XML 文件。

下图演示了预配 XML 文件的内容和层次结构。

显示移动宽带的预配 XML 文件的层次结构的关系图。

有关预配架构的详细信息,请参阅 CarrierControlSchema 架构

更新预配元数据

可通过多种方式更新计算机上的预配元数据。

移动宽带应用

在计算机上安装移动宽带应用后,它可以基于在应用中实现的任何触发器检索或生成更新的预配文件。

移动宽带应用可以使用 Windows.Networking.NetworkOperator.ProvisioningAgent API 应用预配文件。 如果应用与网络帐户 ID 相关联,则可以使用 CreateFromNetworkAccountId 提供未签名的元数据。 如果应用未与网络帐户 ID 关联,则必须使用 ProvisioningAgent 的默认构造函数并签名 XML。

移动宽带应用可以使用以下触发器来更新预配元数据:

  • 使用 最初配置数据限制后,可以告诉 Windows 以每 5% 的使用量增量通知应用。 这可确保应用检索最新的使用情况信息。

  • 定时器 计时器可以适当时间间隔更新预配元数据。

  • 传入短信 可以发送应用理解的短信。 这可能定义启动刷新的消息,或者在收到阈值通知时自动检查更新的使用情况。

  • Windows 通知服务 任何 UWP 应用都可以注册推送通知并根据其内容执行操作。 可以将此用作预配更新的通知通道。

  • 大型位置更改 如果不同的参数适用于位于不同区域设置的用户,则位置更改可能会触发应用为用户的新位置应用更新的设置。

  • 时区更改 对于较大的区域大小,系统时区中的更改可用作位置更改的代理。 对于没有 GPS 或移动宽带的计算机,这尤其值得关注。

基于 Web 的预配

网站可以使用 window.external.msProvisionNetworks API 提供预配数据。 提供给此 API 的预配文件必须使用 X.509 证书和 XML-DSig 进行签名。

可以使用 APN 数据库、服务元数据或以前的帐户预配元数据文件预先向计算机提供证书。 如果证书已受信任,则不存在用户交互。 如果计算机以前不知道该证书,则它必须是 EV 证书,并且系统会提示用户同意,然后才能接受该证书。

自动预配刷新

预配文件可以包含一个指令,供 Windows 在计划间隔或响应特定短信时自动检索更新的预配文件。 此方法不需要在本地计算机上安装移动宽带应用。

预配元数据内容

预配元数据包括以下部分:

有关这些部分的详细信息,请参阅 CarrierControlSchema 架构

全球

每个预配文件中都需要全局节。 本部分中的必需元素如下所示:

  • CarrierId 唯一标识创作文件的组织的 GUID。 如果要生成移动宽带应用,则必须使用在服务元数据包中 ServiceInfo.xml 的“服务编号”字段中指定的 GUID。 有关服务元数据包架构的信息,请参阅 服务元数据包架构参考

    注意

    这是你在 Windows 开发人员中心仪表板 - 硬件上的 创建移动宽带体验向导 中提供的相同服务编号。 如果不创建移动宽带应用,可以生成 GUID 供组织使用。 无论哪种情况,都应始终对组织发出的所有预配文件使用相同的 GUID。

  • SubscriberId 唯一标识组织中的客户的字符串。 如果你是移动运营商,则这应该是 GSM 运营商的 IMSI 或 ICCID 范围,或者 CDMA 运营商的提供商 ID 或提供商名称。 如果你不是移动运营商,则可以选择任何足够唯一的字符串。

激活

设备激活在后端完成激活过程后发生。 在连接到网络之前,电脑可能需要按照某些说明进行操作。 预配引擎使用设备激活元素中收到的激活指令。 如果未指定任何值,则不需要客户端操作。 可用操作包括:

  • 重新连接 断开连接并连接到运营商网络。

    重新注册 断开连接并注册到运营商网络。

  • 数据 要发送到设备以激活连接的数据或说明。 预配引擎按原样将此数据传递给设备。 对于 CDMA,这可以包括启动 OTA 编程会话并重新连接到网络的说明 ,例如 *228

移动宽带信息

移动宽带信息包含多个元素:

MBNProfiles

定义移动运营商网络上的订阅者信息。 可以使用两种不同的配置文件:

  • PurchaseProfile:连接到运营商的网络以购买新订阅所需的信息。

  • DefaultProfile 每个移动宽带订阅都可以有一个用于连接到家庭网络运营商的默认配置文件。 Windows 连接管理器使用此配置文件自动连接到网络。

    <MBNProfiles>
        <DefaultProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WWAN/v1">
          <Name>Contoso MBN</Name>
          <Description>Contoso Mobile Broadband</Description>
          <HomeProviderName>Contoso MBN</HomeProviderName>
          <Context>
            <AccessString>contoso.com</AccessString>
            <UserLogonCred>
              <UserName>mbuser</UserName>
              <Password>[PLACEHOLDER]</Password>
            </UserLogonCred>
          </Context>
        </DefaultProfile>
      </MBNProfiles>
    

品牌打造

重要

从 Windows 10 版本 1709 开始,由 ProvisioningAgent API 预配的品牌字段已替换为 COSA 数据库中的品牌字段。 徽标 已替换为 COSA 中的 “品牌图标 ”,“ 名称 ”已替换为 COSA 中的 “品牌名称 ”。

在 Windows 10 版本 1709 及更高版本中预配时,将不再考虑徽标名称。 如果使用 ProvisioningAgent API,则不会引发错误,但应改为在 COSA 中更改 品牌图标品牌名称

有关 品牌图标品牌名称的详细信息,请参阅 桌面 COSA/APN 数据库设置 (仅限桌面 COSA 的设置)

通过品牌打造,可以指定 Windows 如何显示移动宽带网络。 此信息会替代任何服务元数据(如果存在)。 如果未提供任何信息,则使用服务元数据包的内容。 品牌元素如下所示:

  • 标志 嵌入 XML 中的 Base64 编码 .PNG or.BMP 文件。 此徽标将应用于移动宽带配置文件,以便在网络列表中显示。

  • 名字 设置移动宽带配置文件的运营商显示名称。

短信分析

可以预配规则以标识文本消息并提取信息作为预配 XML 文件的一部分。 可以使用短信来更新数据使用情况统计信息或启动预配信息的刷新。 可以通过以下组合来标识这些消息:

  • 持有者类型 (SMS/USSD)

  • 发件人仅 (短信)

  • 正则表达式

有关短信通知的详细信息,请参阅 启用移动运营商通知和系统事件

每个规则都包含以下信息:

  • 沉默 如果此值为 true,则消息仅导致 MobileOperatorNotification 事件。 如果此值为 false,则消息将生成 SmsMessageReceived 事件。

  • 允许的发件人 指定允许通知从中到达的保留发件人地址。 此号码必须与短信中收到的发件人号码(包括国际格式)完全匹配。

  • 模式 用于标识和选择性地从文本消息中提取数据字段的正则表达式。 此模式将匹配来自发件人的所有消息: [^]*

  • RuleId 此规则的标识符,作为 MobileOperatorNotification 事件的一部分传递给移动宽带应用。 此标识符使应用能够知道导致短信触发 MobileOperatorNotification 事件的规则,并可以减少应用再次分析消息的需求。

  • 字段和组 正则表达式模式中的每个捕获组都绑定到命名字段。 这用于提取数据并将其转换为一组可用值。 例如,第一个匹配组可以绑定到 Usage 字段,第二个匹配组可以绑定到 UsageDataLimit 字段。 此关联指示第一个值是当前使用情况信息,第二个值是允许的最大使用量。

    • Usage、UsagePercentage、UsageOverage、UsageOveragePercentage:将当前使用情况表示为绝对数、数据限制的百分比、超出数据限制的数字或超出数据限制的百分比。 绝对值可以引用指定表示值的单位的组。

    • UsageTimestamp:计算使用情况字段的日期和时间。 如果包含任何 Usage\* 字段,则必须包含此信息。 格式字符串包含以下标识符,用于表示应如何解释子字符串:

      标识符 说明
      %d 以十进制数表示的月内日期 (01 – 31)
      %H 24 小时制的小时 (00 – 23)
      %I 12 小时制的小时 (01 – 12)
      %m 以十进制数表示的月份 (01 – 12)
      %M 以十进制数表示的分钟 (00 – 59)
      %S 以十进制数表示的秒 (00 – 59)
      %y 以十进制数字表示的不带世纪数的年份 (00 – 99)
      %Y year with century, as decimal number (0000-9999)
      %p AM/PM 指示器
      %#d、%#H、%#I、%#m、%#M、%#S、%#y、%#Y 与上述相同,但没有前导零
    • DataLimit:允许用户使用的绝对字节数;这包括一个组,该组指定表示值的单位。

    • OverDataLimit,拥堵:修改向应用报告的标志,以指示用户已超出其数据限制或网络负载过重。

    • InboundBandwidth、OutboundBandwidth:如果网络施加了最大带宽,则指定表示值和单位的组。

    • PlanType:指定用户将来使用的费用。

谨慎 由于短信会影响 Windows 行为,因此只能使用受信任的短信。 通过限制发件人地址来维护安全性。 此安全方法假定网络的短信网关可确保无法欺骗来自受限发件人的消息。

Wi-Fi 信息

本部分允许你提供任意数量的 Wi-Fi 网络配置文件供 Windows 使用。 节的格式类似于 Windows 本机 WLAN API 使用的 XML 架构。

注意

如果所有其他设置相同,则一个配置文件可以包含多个 SSSD。 如果不同的网络 (在身份验证方法、加密设置、计划等) 的其他方面有所不同,则必须创建其他配置文件。

指定 WLAN 部分时,还必须指定应在计算机上配置的所有配置文件。 如果这些配置文件引用数据计划,则还必须包含计划部分。 处理此部分时发生的行为如下所示:

  • 如果计算机具有不再指定的配置文件,则会将其删除。

  • 如果指定配置文件,则会更新或创建配置文件。

  • 空 WLAN 部分会删除所有配置文件。

  • 省略 WLAN 部分会使计算机上的 WLAN 配置文件保持不变。

本部分中的另一个节点是关联的计划。 此节点使 Windows 能够将 WLAN 配置文件与计划部分中所述的计划相关联。 该计划允许你通知 Windows 网络计量状态,并影响 Windows 在计算机连接到网络期间的行为。

未加密的网络,无自动身份验证

此配置文件将 Windows 配置为连接到开放网络。

  • 如果此网络包含强制门户,则会在连接到网络时打开浏览器。

  • 如果网络不包含强制门户,则用户无需采取进一步操作进行连接。

<WLANProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WLAN/v1">
  <name>Contoso Wi-Fi</name>
  <SSIDConfig>
    <SSID>
      <name>Contoso Wi-Fi</name>
    </SSID>
  </SSIDConfig>
  <MSM>
    <security>
      <authEncryption>
        <authentication>open</authentication>
        <encryption>none</encryption>
        <useOneX>false</useOneX>
      </authEncryption>
    </security>
  </MSM>
</WLANProfile>

未加密的网络、WISPr 身份验证

此配置文件将 Windows 配置为连接到开放网络,并使用无线 Internet 服务提供商漫游 (WISPr) 身份验证:

  • 如果网络包含支持 WISPr 的强制门户,则指定的用户名和密码将提交到指定的身份验证服务器。

  • 如果强制门户不能使用 WISPr,则会在连接到网络时打开浏览器。

  • 如果网络不包含强制门户,则用户无需采取进一步操作进行连接。

<WLANProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WLAN/v1">
  <name>Contoso Wi-Fi</name>
  <SSIDConfig>
    <SSID>
      <name>Contoso Wi-Fi</name>
    </SSID>
  </SSIDConfig>
  <MSM>
    <security>
      <authEncryption>
        <authentication>open</authentication>
        <encryption>none</encryption>
        <useOneX>false</useOneX>
      </authEncryption>
      <HotspotProfile xmlns="http://www.microsoft.com/networking/WLAN/HotspotProfile/v1">
        <UserName>WisprUser1</UserName>
        <Password>[PLACEHOLDER]</Password>
        <TrustedDomains>
          <TrustedDomain>www.contosoportal.com</TrustedDomain>
        </TrustedDomains>
      </HotspotProfile>
    </security>
  </MSM>
</WLANProfile>

加密网络、EAP-SIM 身份验证

此配置文件将 Windows 配置为使用 SIM 作为身份验证类型(例如 Hotspot 2.0 网络)连接到加密网络。 Hotspot 2.0 定义此类网络以将 WPA2-Enterprise 与 EAP-SIM 身份验证配合使用。

<WLANProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WLAN/v1">
  <name>Contoso Wi-Fi</name>
  <SSIDConfig>
    <SSID>
      <name>Contoso Wi-Fi</name>
    </SSID>
  </SSIDConfig>
  <MSM>
    <security>
      <authEncryption>
        <authentication>WPA2</authentication>
        <encryption>AES</encryption>
        <useOneX>true</useOneX>
      </authEncryption>
      <OneX xmlns="http://www.microsoft.com/networking/OneX/v1">
        <EAcomputeronfig>
          <!-- The config XML for all EA methods can be found at: https://learn.microsoft.com/openspecs/windows_protocols/ms-gpwl/44d403cd-4b2b-4519-b475-b48dc7124bfb -->
          <EapHostConfig xmlns="http://www.microsoft.com/provisioning/EapHostConfig">
            <EapMethod>
              <Type>18</Type>
              <VendorId>0</VendorId>
              <VendorType>0</VendorType>
              <AuthorId>311</AuthorId>
            </EapMethod>
            <Config xmlns="http://www.microsoft.com/provisioning/EapHostConfig">
              <EapSim xmlns="http://www.microsoft.com/provisioning/EapSimConnectionPropertiesV1">
                <Realm Enabled="true"></Realm>
              </EapSim>
            </Config>
          </EapHostConfig>
        </EAcomputeronfig>
      </OneX>
    </security>
  </MSM>
</WLANProfile>

未加密的网络,基于应用的身份验证

此配置文件将 Windows 配置为连接到开放网络,并与移动宽带应用配合使用 WISPr 身份验证。

  • 如果网络包含强制门户,则会在后台打开应用以提供 WISPr 凭据。 然后将凭据提交到指定的身份验证服务器。

  • 如果强制门户不能使用 WISPr,则会在连接到网络时打开浏览器。

  • 如果网络不包含强制门户,则用户无需采取进一步操作进行连接。

<WLANProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WLAN/v1">
  <name>Contoso WiFi</name>
  <SSIDConfig>
    <SSID>
      <name>Contoso Wi-Fi</name>
    </SSID>
  </SSIDConfig>
  <MSM>
    <security>
      <authEncryption>
        <authentication>open</authentication>
        <encryption>none</encryption>
        <useOneX>false</useOneX>
      </authEncryption>
      <HotspotProfile xmlns="http://www.microsoft.com/networking/WLAN/HotspotProfile/v1">
        <ExtAuth>
          <ExtensionId>YourAppIdGoesHere</ExtensionId>
        </ExtAuth>
        <TrustedDomains>
          <TrustedDomain>www.contosoportal.com</TrustedDomain>
        </TrustedDomains>
      </HotspotProfile>
    </security>
  </MSM>
</WLANProfile>

计划信息

每个移动宽带和热点配置文件都引用一个计划。 多个配置文件可以引用同一个计划。 单独的顶级部分介绍了计划。

该计划分为两个部分 - 说明使用情况。 这允许你最初在较大的预配文件中提供配置文件和说明,然后提供仅包含客户当前使用情况的较小预配文件。

此信息用于直接影响 Windows 的行为,并提供给应用程序以根据网络定制其行为。 此信息可以通过网络信息 API 提供给第三方应用程序。

说明

在客户的订阅期间,通常以低频率更改的元素,包括:

  • PlanType 客户与操作员的计费关系类型:

    • 无限制 使用不会产生额外的费用。

    • 固定 将向用户分配一定数量的使用量,以支付固定成本。

    • 变量 用户根据使用情况付费。

  • SecurityUpdatesExempt 一个布尔值,指定安全更新是否计入客户的使用情况。

  • DataLimitInMegabytes 如果 PlanType修复,则用户的分配使用情况。

  • BillingCycle定义计划的开始日期和时间、持续时间以及计费周期结束时发生的情况。

  • BandwidthInKbps 网络允许的用户连接速度;这可以反映其计划的规范,或反映运营商目前由于拥塞或过度使用而施加的较低费率, (最大为 2 Gbps) 。

  • MaxTransferSizeInMegabytes 一个整数,表示单个下载的大小,合规应用程序应允许通过按流量计费的连接,而无需用户显式批准正在使用的连接。

  • UserSMSEnabled 指示计划是否包括用户到用户短信支持。 如果为 true,即使未使用移动宽带接口,Windows 也将设备保持连接到网络的连接待机状态。 如果为 false,则 Windows 可以关闭移动宽带接口以节省电源,从而导致设备在计算机空闲时无法通过网络寻址。

使用情况

以下元素的更改频率更高:

  • UsageInMegabytes 用户的最新数据使用情况。

  • OverDataLimit 一个布尔值,指示用户是否已通过分配的使用情况(如果 PlanTypeFixed)。

  • 拥挤 一个布尔值,指示是否由于过度使用而施加的连接速度比平常低。 “拥堵”标志指示网络当前遇到 (或预期遇到) 重负载,如果可能,低优先级传输应推迟到其他时间。 可以使用此标志来指示高峰时段等概念,或响应重载热点。

刷新

由于网络更改或技术支持,你可以根据需要将更新的设置推送到计算机。 Windows 使用你或预配 API 提供的信息尝试定期刷新。 操作员的短信通知可以触发刷新。 若要启用 Refresh,必须在预配 XML 中提供以下信息:

  • TrustedCertificates 未来预配文件上具有受信任签名的证书指纹列表。

  • DelayInDays (整数) 不尝试刷新的天数。

  • RefreshURL 用于获取用户预配文件的最新副本的 HTTPS URL。

  • UserName & 密码 检索重新预配文件时,将使用 HTTP-Auth 提供的可选凭据。 此信息在存储时必须加密。

或者,移动宽带应用可以根据应用与运营商后端之间的通信随时提供新的预配文件。

<RefreshParameters>
      <DelayInDays>30</DelayInDays>
      <RefreshURL>https://www.contoso.com/refresh</RefreshURL>
      <Username>[PLACEHOLDER]</Username>
      <Password>[PLACEHOLDER]</Password>
    </RefreshParameters>

签名

由于预配会修改在用户退出或卸载应用后保留的系统设置,因此需要比大多数 API 更严格的验证措施。 此验证由特定于操作员的硬件 (SIM) 、加密签名和用户确认的组合提供。

预配要求:

SIM 卡存在? 预配源 签名要求 用户确认要求
是,MB 提供程序 移动宽带应用
是,MB 提供程序 操作员网站 证书必须:
- 链接回受信任的根 CA。
- 与 APN 数据库中的移动宽带硬件或体验元数据相关联。
否,Wi-Fi 提供程序 移动宽带应用或网站 证书必须:
- 链接回受信任的根 CA。
- 标记为扩展验证。
系统会提示用户确认第一次使用证书;此后无需确认。

允许的组合

尽管 全局 是架构所需的唯一一级节点,但其他节点的某些组合是典型的。 本部分讨论以下典型组合:

  • 配置文件 (WLANProfiles、MBNProfiles) + 计划,包括说明和使用情况 创建或更新完整的配置文件集,并将计划信息和当前使用情况应用于每个配置文件。 如果配置文件引用未在同一预配文件中指定的计划,则返回错误;如果预配文件中没有配置文件引用指定的计划,则返回警告。

  • 计划(包括说明和 (可以选择) 使用情况汇报计划计算机上现有配置文件的信息,但不修改计算机上的配置文件。 如果计算机上的任何配置文件引用指定的计划,则返回警告。

  • 计划(包括使用情况)仅汇报计算机上的现有配置文件中的使用情况信息,但不修改与每个配置文件关联的计划的配置文件或说明。

常见方案

下面是创建预配元数据时可能需要的一些常见方案:

查找帐户预配架构

XSD 架构在运行Windows 8、Windows 8.1或Windows 10的任何计算机上在 %SYSTEMROOT%\schemas\provisioning 下可用。

将预配 XML 应用于设备

可以使用移动宽带应用、UWP 应用或网站将预配 XML 文件应用到设备。

若要从移动宽带应用进行预配,请执行以下操作:

  1. 使用 Windows.Networking.NetworkOperators.ProvisioningAgent.CreateFromNetworkAccountId) 实例化 (ProvisioningAgent 实例。

  2. 调用 ProvisionFromXmlDocumentAsync,传入未签名的预配 XML 文档。

异步操作完成,并返回预配操作的结果。

若要从移动宽带应用以外的 UWP 应用进行预配,请执行以下操作:

  1. 生成签名的帐户预配 XML 文档。

  2. 使用默认构造函数) 实例化 ProvisioningAgent 实例 (。

  3. 调用 ProvisionFromXmlDocumentAsync,传入签名的 XML 文档。

异步操作完成,并返回预配操作的结果。

从网站:

  1. 生成签名的帐户预配 XML 文档。

  2. 调用 window.external.msProvisionNetworks,传入签名的 XML 文档。

操作完成,并返回预配操作的结果。

预配设备以自动连接到移动宽带网络

可以使用 MBNProfile 节定义预配 XML 文档。

<?xml version="1.0"?>
<CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
    <Global>
        <CarrierId>{00000000-1111-2222-3333-444444444444}</CarrierId>
        <SubscriberId>1234567890</SubscriberId>
    </Global>
    <MBNProfiles>
      <DefaultProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WWAN/v1">
          <Name>Profile Name</Name>
          <Description>The Description</Description>
          <HomeProviderName>Contoso</HomeProviderName>
          <Context>
              <AccessString>apn</AccessString>
              <UserLogonCred>
                  <UserName>username</UserName>
                  <Password>[PLACEHOLDER]</Password>
              </UserLogonCred>
          </Context>
      </DefaultProfile>
    </MBNProfiles>
</CarrierProvisioning>

注意

DefaultProfile 的子元素是必需的。 有关更多详细信息,请参阅预配 XML 架构参考。

预配设备以自动连接到 Wi-Fi 网络

可以使用 WlanProfiles 部分定义预配 XML 文档。

<?xml version="1.0"?>
<CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
  <Global>
    <CarrierId>{00000000-1111-2222-3333-444444444444}</CarrierId>
    <SubscriberId>1234567890</SubscriberId>
  </Global>
  <WLANProfiles>
    <WLANProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WLAN/v1">
      <name>My Wi-Fi Hotspot</name>
      <SSIDConfig>
        <SSID>
          <name>wifihotspot1</name>
        </SSID>
      </SSIDConfig>
      <MSM>
        <security>
          <authEncryption>
            <authentication>open</authentication>
            <encryption>none</encryption>
            <useOneX>false</useOneX>
          </authEncryption>
        </security>
      </MSM>
    </WLANProfile>
  </WLANProfiles>
</CarrierProvisioning>

MSM 的子元素定义如何连接到网络。 这包括任何必要的 EAP 配置。 支持 WLAN_profile架构 中 MSM 元素的所有子元素。 有关更多详细信息,请参阅预配 XML 架构参考。

预配设备以自动连接到已启用 WISPr 的热点

可以使用以下两种方法之一来启用热点身份验证:

  1. 使用 BasicAuth 指令直接声明凭据:

    <?xml version="1.0"?>
    <CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
      <WLANProfiles>
        <WLANProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WLAN/v1">
          <name>Contoso Wi-Fi</name>
          <SSIDConfig>
            <SSID>
              <name>Contoso Wi-Fi</name>
            </SSID>
          </SSIDConfig>
          <MSM>
            <security>
              <authEncryption>
                <authentication>open</authentication>
                <encryption>none</encryption>
                <useOneX>false</useOneX>
              </authEncryption>
              <HotspotProfile xmlns="http://www.microsoft.com/networking/WLAN/HotspotProfile/v1">
                <BasicAuth>
                  <UserName>[PLACEHOLDER]</UserName>
                  <Password>[PLACEHOLDER]</Password>
                </BasicAuth>
                <TrustedDomains>
                  <TrustedDomain>hotspot.contoso.com</TrustedDomain>
                </TrustedDomains>
              </HotspotProfile>
            </security>
          </MSM>
        </WLANProfile>
      </WLANProfiles>
    </CarrierProvisioning>
    
  2. 使用 ExtAuth 指令重定向到应用进行身份验证:

    <?xml version="1.0"?>
    <CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
      <WLANProfiles>
        <WLANProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WLAN/v1">
          <name>Contoso Wi-Fi</name>
          <SSIDConfig>
            <SSID>
              <name>Contoso Wi-Fi</name>
            </SSID>
          </SSIDConfig>
          <MSM>
            <security>
              <authEncryption>
                <authentication>open</authentication>
                <encryption>none</encryption>
                <useOneX>false</useOneX>
              </authEncryption>
              <HotspotProfile xmlns="http://www.microsoft.com/networking/WLAN/HotspotProfile/v1">
                <ExtAuth>
                  <ExtensionId>Alice</ExtensionId>
                </ExtAuth>
                <TrustedDomains>
                  <TrustedDomain>hotspot.contoso.com</TrustedDomain>
                </TrustedDomains>
              </HotspotProfile>
            </security>
          </MSM>
        </WLANProfile>
      </WLANProfiles>
    </CarrierProvisioning>
    

应尽可能直接定义凭据。 重定向到另一个应用会产生功能和复杂性的影响。

将激活发送到移动宽带设备

包含在 CarrierSpecificData 元素中的任意二进制大型对象 (BLOB) ,可以使用 ProvisioningAgent 对 Base64 进行 Base64 编码,并将其发送到设备。 为此,可以使用预配 XML 中的 Activation<ServiceActivatation> 指令:

<?xml version="1.0"?>
<CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
  <Global>
    <CarrierId>{00000000-1111-2222-3333-444444444444}</CarrierId>
    <SubscriberId>1234567890</SubscriberId>
  </Global>
  <Activation>
    <ServiceActivation xmlns="http://www.microsoft.com/networking/CarrierControl/WWAN/v1">
      <CarrierSpecificData>YXJiaXRyYXJ5ZGF0YQ==</CarrierSpecificData>
    </ServiceActivation>
  </Activation>
</CarrierProvisioning>

此方法等效于调用移动宽带 API 的 IMbnVendorSpecificOperation::SetVendorSpecific 方法,并将 SAFEARRAY 与 BLOB 内容一起传递。

预配完成后强制移动宽带设备重新连接到网络

有两种方法可以强制移动宽带设备在预配后重新连接到网络: ReregisterToNetworkReconnectToNetwork

可以使用 ReregisterToNetwork 指令通过关闭移动宽带无线电然后重新打开来强制重新注册到移动宽带网络。 无线电恢复后,使用默认配置文件连接适配器。 应谨慎使用此指令,并且仅在帐户激活后需要从网络取消注册时才使用。

当上下文激活必须在帐户激活完成后应用任何新的安全或策略设置时,可以使用 ReconnectToNetwork 指令。 这是通过停用 PDP 上下文并根据移动宽带适配器的默认配置文件设置重新激活来完成的。 如果默认配置文件在同一预配 XML 中更新,则将使用新的配置文件设置。

(可选)可以使用重试计数/间隔和延迟执行时间来指定这些指令。

注意

如果无线电在 ReregisterToNetwork 中成功循环,但使用默认配置文件自动连接回网络失败,则后续重试不会再次循环该无线电。

<?xml version="1.0"?>
<CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
  <Global>
    <CarrierId>{00000000-1111-2222-3333-444444444444}</CarrierId>
    <SubscriberId>1234567890</SubscriberId>
  </Global>
  <Activation>
      <!-- Cycle the radio and reconnect to the default profile with an 
           initial execution delay of 30 seconds and retries every 1 minute 
           up to 3 times.
           -->
      <ReregisterToNetwork
          xmlns="http://www.microsoft.com/networking/CarrierControl/WWAN/v1"
          Delay="PT30S"
          RetryCount="3"
          RetryInterval="PT1M"
          />
  </Activation>
</CarrierProvisioning>

更新连接配置文件的数据使用情况统计信息

只能通过应用具有更新计划信息的新帐户预配文件来更新使用 ProvisioningAgent 预配的配置文件的使用情况。 可以提供仅包含使用情况信息或计划信息的预配文件。 根据要更改的系统配置量,新的预配文件可以包括以下内容:

  • 配置文件、计划说明和使用情况

  • 计划说明和使用情况 (更新现有配置文件)

  • 计划使用情况 (更新现有配置文件和计划)

如果应用 XML 中未定义的新配置文件和引用计划,则预配结果将包含警告。

使用短信更新数据使用情况

这是通过以下方式之一实现的:

  • 指定操作员消息、接收操作员通知消息、使用 SMS API 读取消息、分析应用中的消息,然后使用 IProvisionedProfile 设置用法。

  • 指定具有有效使用情况字段组合的操作员消息规则,并在短信中直接提供更新的使用情况。

故障排除

如果遇到预配问题,可以使用以下部分来帮助你找出问题。

预配 API 结果

如果预配失败,则尝试执行预配操作时将收到异常。 可能导致异常的失败包括:

部分预配失败

由于各种原因,预配操作的某些部分可能无法成功。 例如,你可能引用了预配时不存在 Wi-Fi 硬件。 预配代理会尽力预配文件中的所有内容。 失败时,它会在使用 ProvisionFromXmlDocumentAsync 异步返回的预配结果中记录。

结果以 XML 的形式返回,可以分析以发现失败。 元素提供结构来显示失败的内容, 而 ErrorCode 属性以标准 HRESULT 的形式指示失败的原因。

例如,以下错误代码指示未预配 WLAN 配置文件,因为 WLAN 服务未处于活动状态:

<CarrierProvisioningResult>
    <WLANProfiles ErrorCode=”80070426”/>
</CarrierProvisioningResult>

如果无法应用单个配置文件,它将如下所示:

<CarrierProvisioningResult>
    <WLANProfiles>
        <WLANProfile Name=”MyProfile” ErrorCode=”80070005”/>
    </WLANProfiles>
</CarrierProvisioningResult>

事件日志

应用程序和服务日志\Microsoft\Windows\NetworkProvisioning\Operational 通道中的事件可以提供有关预配失败的详细反馈。

PowerShell ProvisioningTestHelper 模块

可以从 Windows 8、Windows 8.1 和 Windows 10 SDK 导入 ProvisioningTestHelper 模块。 通过使用此模块,可以生成和安装 EV 证书、使用已安装的证书对 XML 文件进行签名,并针对预配架构验证 XML。 若要将模块导入 PowerShell 会话,请键入以下命令:

Import-Module "<path_to_sdk>\bin\<arch>\ProvisioningTestHelper.psd1"

其中<,path_to_sdk\bin\<arch>> 是与计算机体系结构相对应的Windows 8、Windows 8.1或Windows 10 SDK 的安装位置。

导入此模块后,可以使用以下四个 PowerShell cmdlet:

  • Install-TestEVCert 生成新的 CA 证书,在测试计算机上将其注册为受信任的 EV SSL 提供程序,并使用它生成和安装 EV 证书,以便在签名时使用。 只需运行此 cmdlet 一次即可安装证书。 可以使用证书对任意数量的文件进行签名。

    Install-TestEVCert -CertName <Certificate Name> -RootCertOutputPath <complete path to the folder to which the root certificate is to be exported>
    

    客户端证书具有 命令中指定的名称,根证书后面追加了“Root”和客户端证书名称。 -CertName 参数是可选的。 如果未指定 –CertName 参数,则使用 MBAPTestCert

    -RootCertOutputPath 参数也是可选的。 如果要使用 Install-RootCertFromFile cmdlet 导出要安装在另一台计算机上的根证书,则应使用该证书。

  • Install-RootCertFromFile 在其他计算机上应用测试根证书,以测试开发计算机以外的计算机上的客户端体验。

    Install-RootCertFromFile -CertFile <complete path to the root certificate>
    
  • ConvertTo-SignedXml 使用 (生成的 EV 证书进行测试,或由第三方提供程序) 颁发的 EV 证书,将 XML-DSig 签名应用于预配 XML 文件。 来自受信任证书的此签名会导致 Windows 接受来自移动宽带应用且没有关联硬件的有效预配文件。

    ConvertTo-SignedXml -InputFile <complete path to the input XML file> -OutputFile <complete path to the output XML file> -CertName <name of the certificate used to sign the xml>
    

    此命令将对输入 XML 文件进行签名,将签名放入 XML 中,并将其保存到输出 XML 文件。

  • Test-ValidProvisioningXml 根据预配架构验证预配 XML (签名或未签名) 。

    Test-ValidProvisioningXml -InputFile <complete path to the input XML file>