您可以使用政策在裝置上設定 Wi-Fi 網路。Android Management API 使用開放網路設定,這種標準 JSON 格式最初是在 Chromium 專案中開發。如需開啟網路設定的完整詳細資訊,請參閱規格。
如要在政策中加入開放式網路設定,請在 Policy
資源上設定 openNetworkConfiguration
欄位。
針對全代管裝置,您可以在 Policy
資源中將 wifiConfigDisabled
設為 true
,以禁止使用者在裝置上手動設定 Wi-Fi 設定。
支援的功能
Android Management API 僅支援部分開放網路設定規格。
- 頂層物件:
Type
必須省略或設為UnencryptedConfiguration
。由於 Android Management API 服務中的所有政策都會經過加密,因此不必加密政策中的網路設定。此外,還有第二層加密機制可保護通關密語、私密金鑰等機密資訊。
NetworkConfiguration
物件:GUID
、Name
、Type
和WiFi
是支援的欄位,且皆為必要欄位。ProxySettings
是選用欄位。如果使用這個值,則僅支援Manual
和PAC
(Proxy 自動設定)。Type
必須設為WiFi
。系統不支援其他類型的網路。
WiFi
物件:- 系統不支援
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
屬性設定Hardware
或Automatic
。此屬性目前未在開放式網路設定 (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
支援下列值:MSCHAPv2
、PAP
Outer
支援下列值:EAP-AKA
、EAP-TLS
、EAP-TTLS
、EAP-SIM
、PEAP
- 系統不支援
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_LEVEL
的 nonComplianceDetail
。如果指定的金鑰組別名未對應現有金鑰,系統就會回報帶有 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" } ] }
Security
欄位也可以是 WPA3-Enterprise_192
,這是採用 WPA3 192 位元模式的 WPA-EAP 網路。
"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" } ] }