配置网络

您可以使用政策在设备上配置 Wi-Fi 网络。Android Management API 使用开放网络配置,这是一种基于 JSON 的标准格式 它最初是作为 Chromium 项目的一部分开发的。请参阅 规范 了解开放网络配置的完整详情。

要在政策中包括开放网络配置,请设置 openNetworkConfiguration字段的 Policy 资源。

对于全托管式设备,您可以选择手动禁止用户 将 wifiConfigDisabled 设为其设备上的 Wi-Fi 设置 truePolicy 资源。

<ph type="x-smartling-placeholder">

支持的功能

Android Management API 仅支持一部分开放网络 配置规范。

  • 顶级对象: <ph type="x-smartling-placeholder">
      </ph>
    • Type 必须省略或设置为 UnencryptedConfiguration。没有任何 需要对政策中的网络配置进行加密,因为 整个政策在 Android Management API 服务中进行加密。 此外,针对敏感数据, 密码和私钥等信息
  • NetworkConfiguration 对象: <ph type="x-smartling-placeholder">
      </ph>
    • GUIDNameTypeWiFi 支持的字段,全都是必填字段。
    • ProxySettings 是一个可选字段。如果使用此属性 支持 ManualPAC(代理自动配置)。
    • Type 必须设置为 WiFi。不支持其他类型的网络。
  • WiFi 对象: <ph type="x-smartling-placeholder">
      </ph>
    • 不支持 AllowGatewayARPPolling
    • 不支持 SignalStrength
    • Security”是必填字段,系统支持使用以下值: - 无 - WEP PSK - WPA-PSK - WPA-EAP - WEP 8021X - WPA3-Enterprise_192
    • 对于 WEP-PSK 口令,仅限 40 位(10 位)或 104 位(26 位) 密码。
    • 该规范规定,WEP-PSK口令必须以 前缀 0x。不过,为了与 Android 框架保持一致,此 前缀不是必需的。
    • 如需设置随机分配 MAC 地址模式,请使用属性 MACAddressRandomizationMode 设置为 HardwareAutomatic 值。此媒体资源目前 在开放网络配置 (ONC) 规范中不可用 但在 AMAPI 中提供,且可在配置 Wi-Fi 网络时指定。这仅适用于所有管理模式下的 Android 13 及更高版本。
      • Hardware 在连接到网络时使用出厂 MAC 地址。
      • Automatic 可让 Wi-Fi 框架自动确定 MAC 随机分配策略。这可以是永久性或非永久性 随机生成的 MAC 地址,在连接到 网络。
  • EAP 对象: <ph type="x-smartling-placeholder">
      </ph>
    • 不支持 ClientCertPattern
    • 不支持 SaveCredentials,因为系统会始终保存凭据。
    • 不支持 UseSystemCAs
    • 支持 DomainSuffixMatch。 不含此字段(或为空)的企业级无线配置 视为值) 不安全且会被平台拒绝。 值应为有效的域名(例如“example.com” “subdomain.example.com”)。
    • ClientCertType 支持以下值:RefKeyPairAlias
    • Inner 支持以下值:MSCHAPv2PAP
    • Outer 支持以下值:EAP-AKAEAP-TLSEAP-TTLSEAP-SIMPEAP
  • Certificate 对象: <ph type="x-smartling-placeholder">
      </ph>
    • 不支持 Remove。在配置中省略证书 。
    • 不支持 TrustBits

示例

多个 Wi-Fi 网络

此示例政策片段显示了三个配置了 不同的安全方案开放网络配置 JSON 嵌套在 openNetworkConfiguration 字段的 Policy JSON。

"openNetworkConfiguration": {
  "NetworkConfigurations": [
    {
      "GUID": "a",
      "Name": "Example A",
      "Type": "WiFi",
      "WiFi": {
        "SSID": "Example A",
        "Security": "None",
        "AutoConnect": true
      }
    },
    {
      "GUID": "b",
      "Name": "Example B",
      "Type": "WiFi",
      "WiFi": {
        "SSID": "Example B",
        "Security": "WEP-PSK",
        "Passphrase": "1234567890"
      }
    },
    {
      "GUID": "c",
      "Name": "Example C",
      "Type": "WiFi",
      "WiFi": {
        "SSID": "Example C",
        "Security": "WPA-PSK",
        "Passphrase": "baseball"
      }
    },
    {
      "GUID": "networkA",
      "Name": "networkA",
      "Type": "WiFi",
      "WiFi": {
        "SSID": "networkA",
        "Security": "WPA-PSK",
        "Passphrase": "pwd1234567",
        "MACAddressRandomizationMode": "Hardware"
      }
    }
  ]
}

EAP 身份验证

此示例政策片段显示了配置了 EAP-TLS 的无线网络 身份验证。除了 NetworkConfigurations 对象之外,示例 包含两个用于客户端证书和服务器证书的 Certificates 对象。

"openNetworkConfiguration": {
   "Type": "UnencryptedConfiguration",
   "NetworkConfigurations": [
      {
         "GUID": "a",
         "Name": "Example A",
         "Type": "WiFi",
         "WiFi": {
            "SSID": "Example A",
            "EAP": {
               "Outer": "EAP-TLS",
               "Identity": "example",
               "DomainSuffixMatch": [
                  "example.com",
                  "example.org"
               ],
               "ServerCARef": "abc123",
               "ClientCertType": "Ref",
               "ClientCertRef": "xyz456"
            },
            "Security": "WPA-EAP"
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      },
      {
         "GUID": "xyz456",
         "Type": "Client",
         "PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
      }
   ]
}

ClientCertType 字段也可设置为 KeyPairAlias,并且 ClientCertKeyPairAlias 字段可用于指定已安装应用的别名 (请参阅 DevicePolicyManager.installKeyPair ) (请参阅 DevicePolicyManager.generateKeyPair )的 KeyChain 密钥对。在 Android 12 及以上版本中 KeyChain 密钥对,具有使用 已授权 ClientCertKeyPairAlias 向 Wi-Fi 网络进行身份验证, 用于向相应 Wi-Fi 网络进行身份验证。在 Android 12 之后, nonComplianceDetail 替换为 API_LEVEL 会报告原因。答 nonComplianceDetail 替换为 INVALID_VALUE 原因和 ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY 如果指定的密钥对别名与 现有密钥。以下是政策示例:

"openNetworkConfiguration": {
   "Type": "UnencryptedConfiguration",
   "NetworkConfigurations": [
      {
         "GUID": "a",
         "Name": "Example A",
         "Type": "WiFi",
         "WiFi": {
            "SSID": "Example A",
            "EAP": {
               "Outer": "EAP-TLS",
               "Identity": "example",
               "DomainSuffixMatch": [
                  "example.com",
                  "example.org"
               ],
               "ServerCARef": "abc123",
               "ClientCertType": "KeyPairAlias",
               "ClientCertKeyPairAlias": "key-alias"
            },
            "Security": "WPA-EAP"
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      }
   ]
}

Security 字段也可以是 WPA3-Enterprise_192,这是一种 WPA-EAP 采用 WPA3 192 位模式的网络。

"openNetworkConfiguration": {
   "Type": "UnencryptedConfiguration",
   "NetworkConfigurations": [
      {
         "Type": "WiFi",
         "Name": "Example A",
         "GUID": "A",
         "WiFi": {
            "SSID": "Example A",
            "EAP": {
               "Outer": "EAP-TLS",
               "Identity": "example",
               "ServerCARef": "abc123",
               "ClientCertType": "Ref",
               "ClientCertRef": "xyz456",
               "DomainSuffixMatch": ["example.com"]
            },
            "Security": "WPA3-Enterprise_192",
            "AutoConnect": true
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      },
      {
         "GUID": "xyz456",
         "Type": "Client",
         "PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
      }
   ]
}