Za pomocą zasad możesz skonfigurować sieci Wi-Fi na urządzeniu. Interfejs Android Management API korzysta z formatu Open Network Configuration, standardowego formatu opartego na JSON, który został pierwotnie opracowany w ramach projektu Chromium.
Aby uwzględnić konfigurację otwartej sieci w zasadach, ustaw pole
openNetworkConfiguration
w zasobie
Policy
.
W przypadku urządzeń w pełni zarządzanych możesz opcjonalnie uniemożliwić użytkownikowi ręczne skonfigurowanie ustawień Wi-Fi na urządzeniu, ustawiając wartość 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:
- Pole
Type
musi zostać pominięte lub mieć wartośćUnencryptedConfiguration
. Nie ma potrzeby szyfrowania konfiguracji sieci w zasadach, ponieważ całe zasady są szyfrowane w usłudze Android Management API. Dodatkowo istnieje druga warstwa szyfrowania informacji poufnych, takich jak hasła i klucze prywatne.
- Pole
NetworkConfiguration
obiekty:GUID
,Name
,Type
iWiFi
to obsługiwane pola, które są wymagane.ProxySettings
to pole opcjonalne. Jeśli jest używana, obsługiwane są tylkoManual
iPAC
(automatyczna konfiguracja serwera proxy).- Pole
Type
musi mieć wartośćWiFi
. Inne typy sieci nie są obsługiwane.
WiFi
obiekty:- Atrybuty
SSID
iHexSSID
są obsługiwane i co najmniej jeden z nich musi być obecny.- Jeśli ustawione są zarówno
HexSSID
, jak iSSID
, wartości muszą być spójne.
- Jeśli ustawione są zarówno
HiddenSSID
jest obsługiwane.AllowGatewayARPPolling
nie jest obsługiwany.SignalStrength
nie jest obsługiwany.AutoConnect
: to pole określa, czy sieć jest automatycznie włączana. To ustawienie jest niezależne od opcji automatycznego łączenia z siecią dostępnej dla użytkowników w ustawieniach Wi-Fi urządzenia.- Jeśli ustawisz wartość
true
, sieć będzie włączona, co oznacza, że urządzenie może łączyć się z nią automatycznie bez wyraźnego wyboru użytkownika w ustawieniach Wi-Fi, chyba że użytkownik wyłączy automatyczne łączenie z tą siecią. - Jeśli ta opcja jest ustawiona na
false
, sieć zostanie dodana do listy zapisanych sieci, ale nie będzie włączona. Urządzenie nie połączy się z nią automatycznie. Aby urządzenie połączyło się z siecią, użytkownik musi ją jednorazowo wybrać ręcznie w ustawieniach Wi-Fi. Po pierwszym ręcznym połączeniu sieć jest traktowana jako włączona i urządzenie może się z nią łączyć automatycznie, chyba że użytkownik wyłączy automatyczne łączenie z tą siecią.
- Jeśli ustawisz wartość
Security
jest wymagany. Obsługiwane są te wartości: - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
- Atrybuty
- W przypadku
WEP-PSK
haseł obsługiwane są tylko hasła 40-bitowe (10-cyfrowe) lub 104-bitowe (26-cyfrowe). - Specyfikacja mówi, że
WEP-PSK
hasła wielowyrazowe muszą zaczynać się od przedrostka0x
. Jednak ze względu na spójność z platformą Android ten prefiks nie jest wymagany. - Aby ustawić tryb randomizacji adresu MAC, użyj właściwości
MACAddressRandomizationMode
z wartościamiHardware
lubAutomatic
. Ta właściwość jest 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 lub nowszego we wszystkich trybach zarządzania.Hardware
używa fabrycznego adresu MAC podczas łączenia się z siecią.Automatic
pozwala platformie Wi-Fi automatycznie decydować o strategii losowego generowania adresów MAC. Mogą to być stałe lub niestabilne losowo generowane adresy MAC, które są używane podczas łączenia się z siecią.
EAP
obiektów:ClientCertPattern
nie jest obsługiwany.SaveCredentials
nie jest obsługiwany, ponieważ dane logowania są zawsze zapisywane.UseSystemCAs
nie jest obsługiwany.ServerCARef
jest obsługiwane.ServerCARefs
jest obsługiwane.DomainSuffixMatch
jest obsługiwane. Konfiguracje bezprzewodowe dla firm bez tego pola (lub z pustą listą jako wartością) są uważane za niebezpieczne i odrzucane przez platformę. Wartości powinny być prawidłowymi nazwami domen (np. „example.com”, „subdomain.example.com”).- W przypadku parametru
ClientCertType
obsługiwane są te wartości:Ref
,KeyPairAlias
- W przypadku parametru
Inner
obsługiwane są te wartości:MSCHAPv2
,PAP
- W przypadku parametru
Outer
obsługiwane są te wartości:EAP-AKA
,EAP-TLS
,EAP-TTLS
,EAP-SIM
,PEAP
Certificate
obiekty:Remove
nie jest obsługiwany. Zamiast tego pomiń certyfikat w konfiguracji.TrustBits
nie jest obsługiwany.
Przykłady
Wiele sieci Wi-Fi
Ten fragment zasad pokazuje 3 sieci Wi-Fi skonfigurowane z różnymi schematami zabezpieczeń. Plik JSON konfiguracji Open Network Configuration jest zagnieżdżony w polu openNetworkConfiguration
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 fragment przykładowej zasady 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żna też ustawić na KeyPairAlias
, a pole ClientCertKeyPairAlias
może służyć do określania aliasu zainstalowanej (patrz DevicePolicyManager.installKeyPair
) lub wygenerowanej (patrz DevicePolicyManager.generateKeyPair
) pary kluczy KeyChain, która jest używana do uwierzytelniania Wi-Fi. W przypadku Androida 12 i nowszych wersji para kluczy KeyChain z aliasem określonym za pomocą ClientCertKeyPairAlias
jest przyznawana do uwierzytelniania w sieciach Wi-Fi i używana do uwierzytelniania w odpowiedniej sieci Wi-Fi. W przypadku Androida 12 i starszych wersji podawana jest nonComplianceDetail
przyczyna API_LEVEL
. A
nonComplianceDetail
with
INVALID_VALUE
reason and
ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY
specific reason jest zgłaszany, jeśli określony alias pary kluczy nie odpowiada istniejącemu kluczowi. 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" ], "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 192-bitowym trybie WPA3.
"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" } ] }