Za pomocą zasad możesz konfigurować sieci Wi-Fi na urządzeniu. Interfejs API zarządzania Androida korzysta z Open Network Configuration, standardowego formatu opartego na formacie JSON, który został pierwotnie opracowany w ramach projektu Chromium. Szczegółowe informacje o otwartej konfiguracji sieci znajdziesz w specyfikacji.
Aby uwzględnić w zasadach konfigurację sieci otwartej, skonfiguruj pole openNetworkConfiguration
w zasobie Policy
.
W przypadku urządzeń w pełni zarządzanych możesz opcjonalnie uniemożliwić użytkownikom ręczną konfigurację ustawień Wi-Fi na ich urządzeniach, ustawiając wartość wifiConfigDisabled
na true
w zasobach Policy
.
Obsługiwane funkcje
Interfejs API do zarządzania Androidem obsługuje tylko podzbiór specyfikacji Open Network Configuration.
- Obiekt najwyższego poziomu:
- Wartość
Type
musi być pominięta lub ustawiona naUnencryptedConfiguration
. Nie musisz szyfrować konfiguracji sieci w ramach zasad, ponieważ cała zasada jest szyfrowana w usłudze interfejsu API Android Management. Dodatkowo istnieje druga warstwa szyfrowania informacji poufnych, takich jak hasła i klucze prywatne.
- Wartość
- Obiekty
NetworkConfiguration
:- Pola
GUID
,Name
,Type
iWiFi
są obsługiwanymi polami, które są wymagane. ProxySettings
jest polem opcjonalnym. W takim przypadku obsługiwane są tylkoManual
iPAC
(automatyczna konfiguracja serwera proxy).- Wartość
Type
musi być ustawiona naWiFi
. Inne typy sieci nie są obsługiwane.
- Pola
- Obiekty
WiFi
:- Atrybuty
SSID
iHexSSID
są obsługiwane i co najmniej jeden z nich musi być obecny.- Jeśli ustawione są parametry
HexSSID
iSSID
, ich wartości muszą być spójne.
- Jeśli ustawione są parametry
HiddenSSID
jest obsługiwane.AllowGatewayARPPolling
nie jest obsługiwany.SignalStrength
nie jest obsługiwany.Security
jest wymagany i obsługuje te wartości: - Brak - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192- W przypadku haseł
WEP-PSK
obsługiwane są tylko 40-bitowe (10-cyfrowe) lub 104-bitowe (26-cyfrowe) hasła. - Specyfikacja określa, że hasła wielowyrazowe
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 losowania adresów MAC, użyj właściwości
MACAddressRandomizationMode
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że być określona podczas konfigurowania sieci Wi-Fi. Dotyczy to tylko Androida 13 i nowszych we wszystkich trybach zarządzania.Hardware
używa fabrycznego adresu MAC podczas łączenia się z siecią.Automatic
pozwala frameworkowi Wi-Fi automatycznie określić strategię losowania adresów MAC. Mogą to być trwałe lub nietrwałe adresy MAC wygenerowane losowo, które są używane podczas łączenia się z siecią.
- Atrybuty
- Obiekty
EAP
:ClientCertPattern
nie jest obsługiwany.SaveCredentials
nie jest obsługiwany, ponieważ dane uwierzytelniające są zawsze zapisywane.UseSystemCAs
nie jest obsługiwany.ServerCARef
jest obsługiwane.ServerCARefs
jest obsługiwane.DomainSuffixMatch
jest obsługiwane. Konfiguracje sieci bezprzewodowych w firmie bez tego pola (lub z pustą listą jako wartością) są uznawane za niezabezpieczone i odrzucane przez platformę. Wartości powinny być prawidłowymi nazwami domen (np. „example.com”, „subdomain.example.com”).- W przypadku atrybutu
ClientCertType
obsługiwane są te wartości:Ref
iKeyPairAlias
. - W przypadku atrybutu
Inner
obsługiwane są te wartości:MSCHAPv2
iPAP
. - W przypadku działania
Outer
obsługiwane są te wartości:EAP-AKA
,EAP-TLS
,EAP-TTLS
,EAP-SIM
,PEAP
.
- Obiekty
Certificate
:Remove
nie jest obsługiwany. Zamiast tego pomiń certyfikat w konfiguracji.TrustBits
nie jest obsługiwany.
Przykłady
Wiele sieci Wi-Fi
Ten przykładowy fragment zasad zawiera 3 sieci Wi-Fi skonfigurowane z użyciem różnych schematów zabezpieczeń. Format JSON Open Network Configuration jest zagnieżdżony w polu openNetworkConfiguration
w pliku 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 zasad pokazuje sieć bezprzewodową skonfigurowaną z uwierzytelnianiem EAP-TLS. Oprócz obiektu NetworkConfigurations
przykład zawiera 2 obiekty Certificates
dla certyfikatów 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" ], "ServerCARefs": ["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 zainstalowanego (patrz DevicePolicyManager.installKeyPair
) lub wygenerowanego (patrz DevicePolicyManager.generateKeyPair
) klucza KeyChain, który jest używany do uwierzytelniania Wi-Fi. W Androidzie 12 i nowszych para kluczy KeyChain o aliasie określonym za pomocą ClientCertKeyPairAlias
jest przyznawana do uwierzytelniania w sieciach Wi-Fi i jest używana do uwierzytelniania w odpowiedniej sieci Wi-Fi. W przypadku wersji Androida 12 i starszych raportowany jest tylko powód nonComplianceDetail
API_LEVEL
. Jeśli alias klucza pary nie odpowiada istniejącej parze kluczy, jest zgłaszanynonComplianceDetail
zINVALID_VALUE
przyczyna iONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY
przyczyna. Oto przykładowa zasada:
"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" } ] }
Pole Security
może też mieć wartość WPA3-Enterprise_192
, która oznacza sieć WPA-EAP skonfigurowaną w trybie WPA3 192-bitowym.
"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" } ] }