Configura las redes

Puedes usar la 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 Chromium. Consulta la especificación para obtener todos los detalles sobre la configuración de red abierta.

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 de forma opcional que un usuario configure 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 configuración de red abierta.

  • Objeto de nivel superior:
    • Se debe omitir Type o configurarlo como UnencryptedConfiguration. 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 frases de contraseña y las claves privadas.
  • Objetos NetworkConfiguration:
    • GUID, Name, Type y WiFi son campos compatibles y obligatorios.
    • ProxySettings es un campo opcional. Si se usa, solo se admiten Manual y PAC (configuración automática de proxy).
    • Se debe configurar Type como WiFi. No se admiten otros tipos de redes.
  • Objetos WiFi:
    • Se admiten SSID y HexSSID, y debe haber al menos uno de ellos.
      • Si se establecen HexSSID y SSID, los valores deben ser coherentes.
    • HiddenSSID.
    • AllowGatewayARPPolling no es compatible.
    • SignalStrength no es compatible.
    • Se requiere Security 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 se admiten frases de contraseña de 40 bits (10 dígitos) o 104 bits (26 dígitos).
    • La especificación indica que las frases de contraseña de 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 configurar el modo de aleatoriedad de MAC, usa la propiedad MACAddressRandomizationMode establecida con los valores Hardware o Automatic. Actualmente, esta propiedad no está 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 estrategia de aleatorización de MAC. Pueden ser direcciones MAC persistentes o no persistentes generadas de forma aleatoria que se usan cuando se conecta a la red.
  • Objetos EAP:
    • ClientCertPattern no es compatible.
    • SaveCredentials no es compatible, ya que las credenciales siempre se guardan.
    • UseSystemCAs no 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
    • Los siguientes valores son compatibles con Outer: EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM y PEAP.
  • Objetos Certificate:
    • Remove no es compatible. En su lugar, omite el certificado en la configuración.
    • TrustBits no 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 del cliente y del 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. En versiones anteriores a Android 12, se informa 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 de 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 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",
               "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"
      }
   ]
}