Configura las redes

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 en UnencryptedConfiguration. 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 y WiFi son campos admitidos y todos son obligatorios.
    • ProxySettings es un campo opcional. Si se usa, solo Se admiten 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 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 el 0x. 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 valores Hardware o Automatic. 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 y PEAP
  • 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"
      }
   ]
}