Configura las redes

Puedes usar esta política 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. Consulta la especificación para obtener todos los detalles sobre Open Network Configuration.

Para incluir una configuración de red abierta en una política, establece el campo openNetworkConfiguration en un recurso Policy.

En el caso de dispositivos completamente administrados, puedes evitar que un usuario establezca manualmente la 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 Type o se debe establecer en UnencryptedConfiguration. No es necesario encriptar la configuración de red dentro de una política porque 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 la información sensible, como frases de contraseña y claves privadas.
  • Objetos NetworkConfiguration:
    • GUID, Name, Type y WiFi son campos admitidos y todos son obligatorios.
    • ProxySettings es un campo opcional. Si se usa, solo se admitirán Manual y PAC (configuración automática de proxy).
    • Type debe configurarse como WiFi. 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 WEP-PSK, solo se admiten frases de contraseña de 40 bits (10 dígitos) o de 104 bits (26 dígitos).
    • La especificación establece que las frases de contraseña en WEP-PSK deben comenzar con el prefijo 0x. 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 MACAddressRandomizationMode establecida con los valores Hardware o Automatic. Por el momento, esta propiedad no está disponible en la especificación de Open Network Configuration (ONC), pero se proporciona en AMAPI y se puede especificar durante la configuración de redes Wi-Fi. Esto se aplica solo 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 estrategia de aleatorización de MAC. Pueden ser direcciones MAC persistentes o no persistentes generadas al azar que se usan mientras se conecta a la red.
  • Objetos EAP:
    • ClientCertPattern no es compatible.
    • SaveCredentials no es compatible.
    • UseSystemCAs no es compatible.
    • DomainSuffixMatch.
      Las configuraciones inalámbricas empresariales sin este campo (o con una lista vacía como valor) se consideran inseguras y la plataforma las rechaza. Los valores deben ser nombres de dominio válidos (p.ej., “example.com”, “subdomain.example.com”).
    • ClientCertType solo admite el valor Ref.
    • Los siguientes valores son compatibles con Inner: MSCHAPv2 y PAP.
    • Los siguientes valores son compatibles con Outer: EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM y PEAP.
  • Objetos Certificate:
    • Remove no es compatible. Omite el certificado en la configuración.
    • 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 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"
   }
 }]
}

Autenticación de EAP

Este fragmento de política de ejemplo muestra una red inalámbrica configurada con autenticación EAP-TLS. Además del objeto NetworkConfigurations, en el ejemplo se incluyen dos objetos Certificates para los certificados de cliente y los certificados 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 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 KeyChain con 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. En versiones anteriores a Android 12, se informa un nonComplianceDetail con un motivo API_LEVEL. Se informa una nonComplianceDetail con un motivo INVALID_VALUE y un 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 incluye 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"
               ],
               "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 una red 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"
      }
   ]
}