Puedes utilizar la política para configurar redes Wi-Fi en un dispositivo. Android La API de Management usa Open Network Configuration, un formato estándar basado en JSON que se desarrolló originalmente como parte del proyecto Chromium. Consulta las especificación para obtener todos los detalles sobre Open Network Configuration.
Para incluir una configuración de red abierta en una política, establece la
Campo openNetworkConfiguration
en un
Policy
recurso.
En el caso de los dispositivos completamente administrados, puedes impedir que un usuario
establecer la configuración de Wi-Fi en su dispositivo estableciendo wifiConfigDisabled
como
true
en la
Policy
recurso.
Funciones admitidas
La API de Android Management solo admite un subconjunto de Open Network Especificación de configuración.
- Objeto de nivel superior:
Type
debe omitirse o establecerse enUnencryptedConfiguration
. No hay necesitas encriptar la configuración de red dentro de una política, ya que toda la política está encriptada en el servicio de la API de Android Management. Además, hay una segunda capa de encriptación para datos información, como frases de contraseña y claves privadas.
- Objetos
NetworkConfiguration
:GUID
,Name
,Type
yWiFi
son campos admitidos y todos son obligatorios.ProxySettings
es un campo opcional. Si se usa, solo Se admitenManual
yPAC
(configuración automática de proxy).Type
debe configurarse comoWiFi
. No se admiten otros tipos de redes.
- Objetos
WiFi
:AllowGatewayARPPolling
no es compatible.SignalStrength
no es compatible.Security
es obligatorio y se admiten los siguientes valores: - Ninguno - WEP-PSK - WPA-PSK - WPA-EAP - WEP 8021X - WPA3-Enterprise_192- Para las frases de contraseña de
WEP-PSK
, solo debes usar 40 bits (10 dígitos) o 104 bits (26 dígitos). las frases de contraseña. - La especificación indica que las frases de contraseña
WEP-PSK
deben comenzar con el0x
. Sin embargo, para mantener la coherencia con el framework de Android, este el prefijo no es obligatorio. - Para configurar el modo de aleatorización de MAC, usa la propiedad
MACAddressRandomizationMode
. establecer con los valoresHardware
oAutomatic
. Actualmente, esta propiedad está no disponible en la especificación de Configuración de red abierta (ONC) pero se proporciona en AMAPI y se puede especificar durante la configuración de redes Wi-Fi. Esto solo se aplica a Android 13 y versiones posteriores en todos los modos de administración.Hardware
usa la dirección MAC de fábrica cuando se conecta a la red.Automatic
permite que el framework de Wi-Fi decida automáticamente la MAC. de aleatorización. Esto puede ser persistente o no persistente. direcciones MAC generadas de forma aleatoria que se usan durante la conexión a la red.
- Objetos
EAP
:ClientCertPattern
no es compatible.- No se admite
SaveCredentials
, ya que las credenciales siempre se guardan. UseSystemCAs
no es compatible.DomainSuffixMatch
. configuraciones inalámbricas empresariales sin este campo (o con una lista como valor) se consideran sea insegura y la plataforma lo rechace. Los valores deben ser nombres de dominio válidos (p.ej., "example.com", “subdominio.example.com”).- Se admiten los siguientes valores para
ClientCertType
:Ref
,KeyPairAlias
. - Se admiten los siguientes valores para
Inner
:MSCHAPv2
,PAP
. - Se admiten los siguientes valores para
Outer
:EAP-AKA
,EAP-TLS
,EAP-TTLS
,EAP-SIM
yPEAP
- Objetos
Certificate
:Remove
no es compatible. Omitir el certificado en la configuración en su lugar.TrustBits
no es compatible.
Ejemplos
Múltiples redes Wi-Fi
Este fragmento de política de ejemplo muestra tres redes Wi-Fi configuradas con
diferentes esquemas de seguridad. El JSON de Open Network Configuration se anida en
el campo openNetworkConfiguration
de la
Policy
JSON
"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" } } ] }
Autenticación de EAP
Este fragmento de política de ejemplo muestra una red inalámbrica configurada con EAP-TLS
la autenticación de varios factores. Además del objeto NetworkConfigurations
, en el ejemplo
incluye dos objetos Certificates
para los certificados de cliente y de servidor.
"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" } ] }
El campo ClientCertType
también se puede establecer en KeyPairAlias
, y la
Se puede usar el campo ClientCertKeyPairAlias
para especificar el alias de una cuenta instalada
(consulta
DevicePolicyManager.installKeyPair
)
o generados (consulta
DevicePolicyManager.generateKeyPair
) KeyChain que se usa para la autenticación Wi-Fi. En Android 12 y
anterior, el par de claves KeyChain que tiene el alias especificado con
ClientCertKeyPairAlias
se otorga para la autenticación en redes Wi-Fi y es
que se usa para la autenticación en la red Wi-Fi correspondiente. En versiones anteriores a Android 12,
nonComplianceDetail
con
API_LEVEL
el motivo. R
nonComplianceDetail
con
INVALID_VALUE
y
ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY
se informa un motivo específico si el alias del par de claves especificado no corresponde
una clave existente. A continuación, se incluye una política de ejemplo:
"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" } ] }
El campo Security
también puede ser WPA3-Enterprise_192
, que es un WPA-EAP
configurada con el modo WPA3 de 192 bits.
"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" } ] }