Puoi utilizzare i criteri per configurare le reti Wi-Fi su un dispositivo. L'API Android Management utilizza Open Network Configuration, un formato standard basato su JSON sviluppato inizialmente nell'ambito del progetto Chromium. Per informazioni dettagliate su Open Network Configuration, consulta la specifica.
Per includere una configurazione di rete aperta in un criterio, imposta il campo openNetworkConfiguration
in una risorsa Policy
.
Per i dispositivi completamente gestiti, puoi eventualmente impedire a un utente di configurare manualmente le impostazioni Wi-Fi sul suo dispositivo impostando wifiConfigDisabled
su true
nella risorsa Policy
.
Funzionalità supportate
L'API Android Management supporta solo un sottoinsieme della specifica Open Network Configuration.
- Oggetto di primo livello:
Type
deve essere omesso o impostato suUnencryptedConfiguration
. Non è necessario criptare la configurazione di rete all'interno di un criterio perché l'intero criterio è criptato all'interno del servizio API Android Management. Inoltre, è presente un secondo livello di crittografia per informazioni sensibili come passphrase e chiavi private.
- oggetti
NetworkConfiguration
:GUID
,Name
,Type
eWiFi
sono campi supportati e sono tutti obbligatori.ProxySettings
è un campo facoltativo. Se viene utilizzato, sono supportati soloManual
ePAC
(Proxy Auto-Configuration).Type
deve essere impostato suWiFi
. Altri tipi di emittenti non sono supportati.
- oggetti
WiFi
:SSID
eHexSSID
sono supportati e almeno uno di questi valori deve essere presente.- Se sono impostati sia
HexSSID
cheSSID
, i valori devono essere coerenti.
- Se sono impostati sia
HiddenSSID
è supportato.- L'
AllowGatewayARPPolling
non è supportato. - L'
SignalStrength
non è supportato. Security
è obbligatorio e sono supportati i seguenti valori: - Nessuno - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192- Per le passphrase
WEP-PSK
, sono supportate solo passphrase di 40 bit (10 cifre) o 104 bit (26 cifre). - La specifica prevede che le passphrase
WEP-PSK
debbano iniziare con il prefisso0x
. Tuttavia, per coerenza con il framework Android, questo prefisso non è obbligatorio. - Per impostare la modalità di randomizzazione MAC, utilizza la proprietà
MACAddressRandomizationMode
impostata con i valoriHardware
oAutomatic
. Questa proprietà non è attualmente disponibile nella specifica Open Network Configuration (ONC), ma è fornita in AMAPI e può essere specificata durante la configurazione delle reti Wi-Fi. Questo vale solo per Android 13 e versioni successive in tutte le modalità di gestione.Hardware
utilizza l'indirizzo MAC di fabbrica quando si connette alla rete.Automatic
consente al framework Wi-Fi di decidere automaticamente la strategia di randomizzazione MAC. Possono essere indirizzi MAC permanenti o non permanenti generati in modo casuale e utilizzati durante la connessione alla rete.
- oggetti
EAP
:- L'
ClientCertPattern
non è supportato. SaveCredentials
non è supportato perché le credenziali vengono sempre salvate.- L'
UseSystemCAs
non è supportato. ServerCARef
è supportato.ServerCARefs
è supportato.DomainSuffixMatch
è supportato. Le configurazioni wireless aziendali senza questo campo (o con un elenco vuoto come valore) sono considerate non sicure e rifiutate dalla piattaforma. I valori devono essere nomi di dominio validi (ad es. "example.com", "subdomain.example.com").- Per
ClientCertType
sono supportati i seguenti valori:Ref
,KeyPairAlias
- Per
Inner
sono supportati i seguenti valori:MSCHAPv2
,PAP
- Per
Outer
sono supportati i seguenti valori:EAP-AKA
,EAP-TLS
,EAP-TTLS
,EAP-SIM
,PEAP
- L'
- oggetti
Certificate
:- L'
Remove
non è supportato. Ometti invece il certificato nella configurazione. - L'
TrustBits
non è supportato.
- L'
Esempi
Più reti Wi-Fi
Questo frammento di criteri di esempio mostra tre reti Wi-Fi configurate con diversi schemi di sicurezza. Il JSON di Open Network Configuration è nidificato all'interno del campo openNetworkConfiguration
del JSON di 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" } } ] }
Autenticazione EAP
Questo frammento di criterio di esempio mostra una rete wireless configurata con autenticazione EAP-TLS. Oltre all'oggetto NetworkConfigurations
, l'esempio include due oggetti Certificates
per i certificati client e server.
"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" } ] }
Il campo ClientCertType
può essere impostato anche su KeyPairAlias
e il campo ClientCertKeyPairAlias
può essere utilizzato per specificare l'alias di una coppia di chiavi KeyChain installata (vedi DevicePolicyManager.installKeyPair
) o generata (vedi DevicePolicyManager.generateKeyPair
) utilizzata per l'autenticazione Wi-Fi. Su Android 12 e versioni successive, la coppia di chiavi KeyChain con l'alias specificato con ClientCertKeyPairAlias
viene concessa per l'autenticazione alle reti Wi-Fi e viene utilizzata per l'autenticazione alla rete Wi-Fi corrispondente. Sotto Android 12, viene registrato un
nonComplianceDetail
con
API_LEVEL
motivo. Viene registrato un
nonComplianceDetail
con
INVALID_VALUE
motivo e
ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY
motivo specifico se l'alias della coppia di chiavi specificata non corrisponde a
una chiave esistente. Di seguito è riportato un esempio di criterio:
"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" } ] }
Il campo Security
può essere anche WPA3-Enterprise_192
, ovvero una rete WPA-EAP configurata con la modalità WPA3 a 192 bit.
"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" } ] }