Zasady mogą służyć do konfigurowania sieci Wi-Fi na urządzeniu. Interfejs Android Management API wykorzystuje Open Network Configuration – standardowy format oparty na formacie JSON, który pierwotnie powstał w ramach projektu Chromium. Więcej informacji o otwartej konfiguracji sieci znajdziesz w specyfikacji.
Aby uwzględnić w zasadzie otwartą konfigurację sieci, ustaw pole openNetworkConfiguration
w zasobie Policy
.
W przypadku w pełni zarządzanych urządzeń możesz opcjonalnie uniemożliwić użytkownikowi ręczne konfigurowanie ustawień Wi-Fi na ich urządzeniach, ustawiając wifiConfigDisabled
na true
w zasobie Policy
.
Obsługiwane funkcje
Interfejs Android Management API obsługuje tylko podzbiór specyfikacji Open Network Configuration.
- Obiekt najwyższego poziomu:
- Parametr
Type
musi zostać pominięty lub ustawiony na wartośćUnencryptedConfiguration
. Nie trzeba szyfrować konfiguracji sieci w ramach zasady, ponieważ cała zasada jest szyfrowana w usłudze Android Management API. Dostępna jest też druga warstwa szyfrowania informacji poufnych, takich jak hasła i klucze prywatne.
- Parametr
NetworkConfiguration
obiekt:GUID
,Name
,Type
iWiFi
to obsługiwane pola i wszystkie są wymagane.ProxySettings
to pole opcjonalne. Jeśli ta opcja jest używana, obsługiwane są tylko ustawieniaManual
iPAC
(automatyczna konfiguracja serwera proxy).Type
musi mieć wartośćWiFi
. Inne typy sieci nie są obsługiwane.
WiFi
obiekt:AllowGatewayARPPolling
nie jest obsługiwany.SignalStrength
nie jest obsługiwany.- Wymagana jest właściwość
Security
, a obsługiwane są te wartości: - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192 - W przypadku haseł
WEP-PSK
obsługiwane są tylko hasła 40-bitowe (10-cyfrowe) lub 104-bitowe (26-cyfrowe). - Specyfikacja określa, że hasła
WEP-PSK
muszą zaczynać się od prefiksu0x
. Jednak ze względu na spójność z Android Framework ten prefiks nie jest wymagany. - Aby ustawić tryb randomizacji MAC, użyj właściwości
MACAddressRandomizationMode
ustawionej z wartościamiHardware
lubAutomatic
. Ta właściwość jest obecnie niedostępna w specyfikacji Open Network Configuration (ONC), ale jest dostępna w AMAPI i można ją określić podczas konfigurowania sieci Wi-Fi. Dotyczy to tylko Androida 13 i nowszego we wszystkich trybach zarządzania.Hardware
podczas łączenia się z siecią używa fabrycznego adresu MAC.Automatic
pozwala platformie Wi-Fi automatycznie zdecydować o strategii losowości MAC. Mogą to być trwałe lub nietrwałe generowane losowo adresy MAC używane podczas łączenia się z siecią.
EAP
obiekt:ClientCertPattern
nie jest obsługiwany.SaveCredentials
nie jest obsługiwany.UseSystemCAs
nie jest obsługiwany.DomainSuffixMatch
jest obsługiwane.
Konfiguracje bezprzewodowe w firmie, które nie mają tego pola (lub z pustą listą jako wartość), są uznawane za niezabezpieczone i odrzucane przez platformę. Wartościami powinny być prawidłowe nazwy domen (np. „example.com”, „subdomena.example.com”).ClientCertType
obsługuje tylko wartośćRef
- W polu
Inner
obsługiwane są te wartości:MSCHAPv2
orazPAP
- W polu
Outer
obsługiwane są te wartości:EAP-AKA
,EAP-TLS
,EAP-TTLS
,EAP-SIM
orazPEAP
Certificate
obiekt:Remove
nie jest obsługiwany. Pomiń certyfikat w konfiguracji.TrustBits
nie jest obsługiwany.
Przykłady
Wiele sieci Wi-Fi
Ten przykładowy fragment zasady pokazuje 3 sieci Wi-Fi ze skonfigurowanymi różnymi schematami zabezpieczeń. Plik JSON z konfiguracją sieci Open Network jest umieszczony w polu openNetworkConfiguration
w JSON Policy
.
"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" } }] }
Uwierzytelnianie EAP
Ten przykładowy fragment zasady przedstawia sieć bezprzewodową z uwierzytelnianiem EAP-TLS. Oprócz obiektu NetworkConfigurations
w przykładzie znajdują się 2 obiekty Certificates
: certyfikat klienta i serwera.
"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" } ] }
Pole ClientCertType
może też mieć wartość KeyPairAlias
, a pole ClientCertKeyPairAlias
może służyć do określania aliasu pary kluczy zainstalowanej (patrz: DevicePolicyManager.installKeyPair
) lub wygenerowanej (patrz DevicePolicyManager.generateKeyPair
) pary kluczy używanej do uwierzytelniania w sieci Wi-Fi. W Androidzie 12 i nowszych para kluczy łańcucha kluczy z aliasem określonym w zasadzie ClientCertKeyPairAlias
jest przyznawana na potrzeby uwierzytelniania w sieciach Wi-Fi i używana do uwierzytelniania w odpowiednich sieciach Wi-Fi. W przypadku Androida 12 zgłaszany jest błąd nonComplianceDetail
z API_LEVEL
przyczyną. Jeśli podany alias pary kluczy nie odpowiada istniejącemu kluczowi, raport nonComplianceDetail
zawiera przyczynę INVALID_VALUE
i przyczynę konkretnego ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY
. Oto przykładowe zasady:
"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" } ] }
Pole Security
może też zawierać wartość WPA3-Enterprise_192
(sieć WPA-EAP skonfigurowaną w trybie 192-bitowym WPA3).
"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" } ] }