您可以使用政策在裝置上設定 Wi-Fi 網路。Android Management API 使用開放式網路設定,這是一種以 JSON 為基礎的標準格式,最初是 Chromium 專案的一部分。
如要在政策中加入開放網路設定,請在 Policy 資源中設定 openNetworkConfiguration 欄位。
如果是完全受管理裝置,您可以選擇在 Policy 資源中將 wifiConfigDisabled 設為 true,禁止使用者在裝置上手動設定 Wi-Fi 設定。
支援的功能
Android Management API 僅支援部分開放式網路設定規格。
- 頂層物件:
Type必須省略或設為UnencryptedConfiguration。由於 Android Management API 服務會加密整個政策,因此不需要在政策中加密網路設定。此外,系統還會針對密碼和私密金鑰等機密資訊進行第二層加密。
NetworkConfigurationobjects:GUID、Name、Type和WiFi是支援的欄位,且全為必填。ProxySettings是選用欄位。如果使用這項設定,則僅支援Manual和PAC(Proxy 自動設定)。Type必須設為WiFi。系統不支援其他類型的網路。
WiFiobjects:- 系統支援
SSID和HexSSID,且必須至少提供其中一項。- 如果同時設定
HexSSID和SSID,值必須一致。
- 如果同時設定
- 支援
HiddenSSID。 - 不支援「
AllowGatewayARPPolling」。 - 不支援「
SignalStrength」。 AutoConnect:這個欄位會決定是否自動啟用網路。這項設定與裝置 Wi-Fi 設定中可供使用者選擇的各個網路自動連線選項無關。- 如果設為
true,表示網路已啟用,裝置可以自動連線,使用者不必在 Wi-Fi 設定中明確選取,除非使用者停用這個網路的自動連線功能。 - 如果設為
false,系統會將網路新增至儲存的網路清單,但不會啟用。裝置不會自動連線到該網路。如要讓裝置連上網路,使用者必須從 Wi-Fi 設定中手動選取網路一次。首次手動連線後,系統會將該網路視為已啟用,裝置可以自動連線至該網路,除非使用者停用該網路的自動連線功能。
- 如果設為
Security為必填欄位,支援下列值: - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
- 系統支援
- 如為
WEP-PSK密碼,僅支援 40 位元 (10 位數) 或 104 位元 (26 位數) 的密碼。 - 規格指出,
WEP-PSK密碼片語必須以0x前置字串開頭。不過,為了與 Android 架構保持一致,這個前置字元並非必要。 - 如要設定 MAC 位址隨機化模式,請使用以
Hardware或Automatic值設定的MACAddressRandomizationMode屬性。開放式網路設定 (ONC) 規格不提供這項屬性,但 AMAPI 提供這項屬性,且可在設定 Wi-Fi 網路時指定。這項設定僅適用於搭載 Android 13 以上版本的所有管理模式。Hardware連線至網路時會使用原廠 MAC 位址。Automatic可讓 Wi-Fi 架構自動決定 MAC 隨機化策略。這可以是持續性或非持續性隨機產生的 MAC 位址,用於連線至網路。
EAP個物件:- 不支援「
ClientCertPattern」。 - 系統一律會儲存憑證,因此不支援
SaveCredentials。 - 不支援「
UseSystemCAs」。 - 支援
ServerCARef。 - 支援
ServerCARefs。 - 支援
DomainSuffixMatch。如果企業無線設定沒有這個欄位 (或值為空白清單),系統會視為不安全,並拒絕平台。值應為有效的網域名稱 (例如「example.com」、「subdomain.example.com」)。 ClientCertType支援的值如下:Ref、KeyPairAliasInner支援的值如下:MSCHAPv2、PAPOuter支援的值如下:EAP-AKA、EAP-TLS、EAP-TTLS、EAP-SIM、PEAPCertificateobjects:- 系統不支援
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"
],
"ServerCARefs": ["abc123"],
"ClientCertType": "Ref",
"ClientCertRef": "xyz456"
},
"Security": "WPA-EAP"
}
}
],
"Certificates": [
{
"GUID": "abc123",
"Type": "Server",
"X509": "TWFuIGlzIGRpc3Rpbmd1a"
},
{
"GUID": "xyz456",
"Type": "Client",
"PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
}
]
}ClientCertType 欄位也可以設為 KeyPairAlias,而 ClientCertKeyPairAlias 欄位可用於指定用於 Wi-Fi 驗證的已安裝 (請參閱 DevicePolicyManager.installKeyPair) 或產生 (請參閱 DevicePolicyManager.generateKeyPair) KeyChain 金鑰組別名。如果是 Android 12 以上版本,系統會授予具有 ClientCertKeyPairAlias 指定別名的 KeyChain 金鑰組,用於 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"
],
"ServerCARefs": ["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",
"ServerCARefs": ["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"
}
]
}