設定網路

您可以使用政策在裝置上設定 Wi-Fi 網路。Android Management API 使用開放網路設定,這種標準 JSON 格式最初是在 Chromium 專案中開發。如需開啟網路設定的完整詳細資訊,請參閱規格

如要在政策中加入開放式網路設定,請在 Policy 資源上設定 openNetworkConfiguration 欄位。

針對全代管裝置,您可以在 Policy 資源中將 wifiConfigDisabled 設為 true,以禁止使用者在裝置上手動設定 Wi-Fi 設定。

支援的功能

Android Management API 僅支援部分開放網路設定規格。

  • 頂層物件:
    • Type 必須省略或設為 UnencryptedConfiguration。由於 Android Management API 服務中的所有政策都會經過加密,因此不必加密政策中的網路設定。此外,還有第二層加密機制可保護通關密語、私密金鑰等機密資訊。
  • NetworkConfiguration 物件:
    • GUIDNameTypeWiFi 是支援的欄位,且皆為必要欄位。
    • ProxySettings 是選用欄位。如果使用這個值,則僅支援 ManualPAC (Proxy 自動設定)。
    • Type 必須設為 WiFi。系統不支援其他類型的網路。
  • WiFi 物件:
    • 系統不支援 AllowGatewayARPPolling
    • 系統不支援 SignalStrength
    • 如果是 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 物件:
    • 系統不支援 ClientCertPattern
    • 系統不支援 SaveCredentials
    • 系統不支援 UseSystemCAs
    • 支援 DomainSuffixMatch
      如果企業無線設定缺少這個欄位 (或會以空白清單做為值),系統會將其視為不安全,並遭平台拒絕。值應為有效的網域名稱 (例如「example.com」、「subdomain.example.com」)。
    • ClientCertType 僅支援 Ref
    • Inner 支援下列值:MSCHAPv2PAP
    • Outer 支援下列值:EAP-AKAEAP-TLSEAP-TTLSEAP-SIMPEAP
  • Certificate 物件:
    • 我們不支援 Remove。請改為在設定中省略憑證。
    • 系統不支援 TrustBits

示例

多個 Wi-Fi 網路

這個政策片段範例顯示三個採用不同安全性配置的 Wi-Fi 網路。開放式網路設定 JSON 以巢狀結構位於 Policy JSON 的 openNetworkConfiguration 欄位中。

"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) 用於 Wi-Fi 驗證的 KeyChain 金鑰組。在 Android 12 以上版本中,具有 ClientCertKeyPairAlias 指定別名的 KeyChain 金鑰組會授予 Wi-Fi 網路驗證作業,並用於驗證對應的 Wi-Fi 網路。在 Android 12 以下,系統會回報原因為 API_LEVELnonComplianceDetail。如果指定的金鑰組別名未對應現有金鑰,系統就會回報帶有 INVALID_VALUE 原因的 nonComplianceDetail,以及特定原因為 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"
      }
   ]
}