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 che è stato originariamente sviluppato nell'ambito del progetto Chromium. Consulta la specifica per i dettagli completi sulla configurazione di rete aperta.
Per includere una configurazione di rete aperta in un criterio, imposta il campo openNetworkConfiguration
su una risorsa Policy
.
Per i dispositivi completamente gestiti, puoi facoltativamente impedire a un utente di configurare manualmente le impostazioni Wi-Fi sul proprio 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 viene criptato all'interno del servizio API Android Management. Inoltre, è presente un secondo livello di crittografia per le informazioni sensibili, come passphrase e chiavi private.
NetworkConfiguration
oggetti:GUID
,Name
,Type
eWiFi
sono campi supportati e sono tutti obbligatori.ProxySettings
è un campo facoltativo. Se utilizzi questa opzione, sono supportati soloManual
ePAC
(configurazione automatica proxy).Type
deve essere impostato suWiFi
. Non sono supportati altri tipi di reti.
WiFi
oggetti:- L'
AllowGatewayARPPolling
non è supportato. - L'
SignalStrength
non è supportato. - Il campo
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 le passphrase a 40 bit (10 cifre) o 104 bit (26 cifre). - La specifica indica che le passphrase
WEP-PSK
devono iniziare con il prefisso0x
. Tuttavia, per la 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 è al momento 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 per la connessione alla rete.Automatic
consente al framework Wi-Fi di decidere automaticamente la strategia di randomizzazione MAC. Possono essere indirizzi MAC permanenti o non persistenti generati in modo casuale che vengono utilizzati per la connessione alla rete.
- L'
EAP
oggetti:- L'
ClientCertPattern
non è supportato. - L'
SaveCredentials
non è supportato. - L'
UseSystemCAs
non è 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").ClientCertType
supporta solo il valoreRef
- 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'
Certificate
oggetti:- L'
Remove
non è supportato. Ometti il certificato nella configurazione. - L'
TrustBits
non è supportato.
- L'
Esempi
Più reti Wi-Fi
Questo frammento di criterio di esempio mostra tre reti Wi-Fi configurate con schemi di sicurezza diversi. Il JSON Open Network Configuration è nidificato all'interno del campo openNetworkConfiguration
del 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" } }] }
Autenticazione EAP
Questo frammento di criterio di esempio mostra una rete wireless configurata con l'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" ], "ServerCARef": "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ò anche essere impostato 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 sulle reti Wi-Fi e viene utilizzata per l'autenticazione sulla rete Wi-Fi corrispondente. Sotto Android 12, è stato segnalato un motivo
nonComplianceDetail
con
API_LEVEL
. Viene segnalato un motivo nonComplianceDetail
con un motivo specifico di INVALID_VALUE
e un motivo specifico per ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY
se l'alias della coppia di chiavi specificato 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" ], "ServerCARef": "abc123", "ClientCertType": "KeyPairAlias", "ClientCertKeyPairAlias": "key-alias" }, "Security": "WPA-EAP" } } ], "Certificates": [ { "GUID": "abc123", "Type": "Server", "X509": "TWFuIGlzIGRpc3Rpbmd1a" } ] }
Il campo Security
può anche essere WPA3-Enterprise_192
, che è 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", "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" } ] }