Puedes usar políticas para configurar redes Wi-Fi en un dispositivo. La API de Android Management usa Open Network Configuration, un formato estándar basado en JSON que se desarrolló originalmente como parte del proyecto de Chromium.
Para incluir una configuración de red abierta en una política, establece el campo openNetworkConfiguration en un recurso Policy.
En el caso de los dispositivos completamente administrados, puedes impedir que un usuario configure manualmente los parámetros de configuración de Wi-Fi en su dispositivo. Para ello, establece wifiConfigDisabled en true en el recurso Policy.
Funciones admitidas
La API de Android Management solo admite un subconjunto de la especificación de Open Network Configuration.
- Objeto de nivel superior:
- Se debe omitir
Typeo establecerlo enUnencryptedConfiguration. No es necesario encriptar la configuración de red dentro de una política, ya que toda la política está encriptada dentro del servicio de la API de Android Management. Además, hay una segunda capa de encriptación para la información sensible, como las contraseñas y las claves privadas.
- Se debe omitir
- Objetos
NetworkConfiguration:GUID,Name,TypeyWiFison campos admitidos y obligatorios.ProxySettingses un campo opcional. Si se usa esta opción, solo se admitenManualyPAC(configuración automática de proxy).Typedebe establecerse enWiFi. No se admiten otros tipos de redes.
- Objetos
WiFi:- Se admiten
SSIDyHexSSID, y debe estar presente al menos uno de ellos.- Si se configuran
HexSSIDySSID, los valores deben ser coherentes.
- Si se configuran
HiddenSSID.AllowGatewayARPPollingno es compatible.SignalStrengthno es compatible.AutoConnect: Este campo determina si la red se habilita automáticamente. Este parámetro de configuración es independiente de la opción de conexión automática por red disponible para los usuarios en la configuración de Wi-Fi del dispositivo.- Si se establece en
true, la red está habilitada, lo que significa que el dispositivo puede conectarse a ella automáticamente sin que el usuario la seleccione explícitamente en la configuración de Wi-Fi, a menos que el usuario inhabilite la conexión automática para esta red. - Si se establece en
false, la red se agrega a la lista de redes guardadas, pero no se habilita. El dispositivo no se conecta automáticamente. Para que el dispositivo se conecte a la red, el usuario debe seleccionar la red manualmente una vez desde la configuración de Wi-Fi. Después de la primera conexión manual, la red se considera habilitada y el dispositivo puede conectarse a ella automáticamente, a menos que el usuario inhabilite la conexión automática para esta red.
- Si se establece en
Securityes obligatorio y se admiten los siguientes valores: - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
- Se admiten
- En el caso de las frases de contraseña de
WEP-PSK, solo se admiten las de 40 bits (10 dígitos) o 104 bits (26 dígitos). - La especificación indica que las frases de contraseña
WEP-PSKdeben comenzar con el prefijo0x. Sin embargo, para mantener la coherencia con el framework de Android, este prefijo no es obligatorio. - Para establecer el modo de aleatorización de MAC, usa la propiedad
MACAddressRandomizationModeestablecida con los valoresHardwareoAutomatic. Esta propiedad no está disponible en la especificación de Open Network Configuration (ONC), pero se proporciona en la AMAPI y se puede especificar mientras se configuran redes Wi-Fi. Esto solo se aplica a Android 13 y versiones posteriores en todos los modos de administración.Hardwareusa la dirección MAC de fábrica cuando se conecta a la red.Automaticpermite que el framework de Wi-Fi decida automáticamente la estrategia de aleatorización de MAC. Pueden ser direcciones MAC generadas aleatoriamente persistentes o no persistentes que se usan cuando se conecta a la red.
- Objetos
EAP: ClientCertPatternno es compatible.SaveCredentialsno se admite, ya que las credenciales siempre se guardan.UseSystemCAsno es compatible.ServerCARef.ServerCARefs.DomainSuffixMatch. Las configuraciones inalámbricas empresariales sin este campo (o con una lista vacía como valor) se consideran no seguras y la plataforma las rechaza. Los valores deben ser nombres de dominio válidos (p.ej., "example.com", "subdomain.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,PEAP. - Objetos
Certificate:Removeno es compatible. En su lugar, omite el certificado en la configuración.TrustBitsno es compatible.
Ejemplos
Varias redes Wi-Fi
En este fragmento de política de ejemplo, se muestran tres redes Wi-Fi configuradas con diferentes esquemas de seguridad. El JSON de Open Network Configuration está anidado dentro del campo openNetworkConfiguration del JSON de 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"
}
}
]
}Autenticación EAP
En este fragmento de política de ejemplo, se muestra una red inalámbrica configurada con autenticación EAP-TLS. Además del objeto NetworkConfigurations, el ejemplo incluye dos objetos Certificates para los certificados de cliente y 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"
],
"ServerCARefs": ["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 el campo ClientCertKeyPairAlias se puede usar para especificar el alias de un par de claves de KeyChain instalado (consulta DevicePolicyManager.installKeyPair) o generado (consulta DevicePolicyManager.generateKeyPair) que se usa para la autenticación Wi-Fi. En Android 12 y versiones posteriores, el par de claves de KeyChain que tiene el alias especificado con ClientCertKeyPairAlias se otorga para la autenticación en redes Wi-Fi y se usa para la autenticación en la red Wi-Fi correspondiente. Antes de Android 12, se informaba un nonComplianceDetail con el motivo API_LEVEL. Se informa un nonComplianceDetail con el motivo INVALID_VALUE y el motivo específico ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY si el alias del par de claves especificado no corresponde a una clave existente. A continuación, se muestra un ejemplo de política:
"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"
}
]
}El campo Security también puede ser WPA3-Enterprise_192, que es una red WPA-EAP configurada con el modo de 192 bits de 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"
}
]
}