Configurer les réseaux

Vous pouvez utiliser une règle pour configurer des réseaux Wi-Fi sur un appareil. L'API Android Management utilise Open Network Configuration, un format standard basé sur JSON qui a été développé à l'origine dans le cadre du projet Chromium. Pour en savoir plus sur la configuration réseau ouverte, consultez la spécification.

Pour inclure une configuration de réseau ouvert dans une règle, définissez le champ openNetworkConfiguration sur une ressource Policy.

Pour les appareils entièrement gérés, vous pouvez éventuellement empêcher un utilisateur de configurer manuellement les paramètres Wi-Fi sur son appareil en définissant wifiConfigDisabled sur true dans la ressource Policy.

Fonctionnalités compatibles

L'API Android Management n'est compatible qu'avec un sous-ensemble de la spécification Open Network Configuration.

  • Objet de premier niveau :
    • Type doit être omis ou défini sur UnencryptedConfiguration. Il n'est pas nécessaire de chiffrer la configuration réseau dans une stratégie, car l'ensemble de la stratégie est chiffré dans le service API Android Management. De plus, une deuxième couche de chiffrement est appliquée aux informations sensibles telles que les mots de passe et les clés privées.
  • Objets NetworkConfiguration :
    • GUID, Name, Type et WiFi sont des champs acceptés et sont tous obligatoires.
    • ProxySettings est un champ facultatif. Si cette option est utilisée, seuls Manual et PAC (configuration automatique du proxy) sont acceptés.
    • Type doit être défini sur WiFi. Les autres types de réseaux ne sont pas compatibles.
  • Objets WiFi :
    • SSID et HexSSID sont compatibles, et au moins l'un d'eux doit être présent.
      • Si HexSSID et SSID sont définis, les valeurs doivent être cohérentes.
    • HiddenSSID est accepté.
    • AllowGatewayARPPolling n'est pas compatible.
    • SignalStrength n'est pas compatible.
    • Security est obligatoire, et les valeurs suivantes sont acceptées : - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
    • Pour les mots de passe WEP-PSK, seuls les mots de passe de 40 bits (10 chiffres) ou de 104 bits (26 chiffres) sont acceptés.
    • La spécification indique que les phrases de passe WEP-PSK doivent commencer par le préfixe 0x. Toutefois, pour assurer la cohérence avec le framework Android, ce préfixe n'est pas obligatoire.
    • Pour définir le mode de randomisation MAC, utilisez la propriété MACAddressRandomizationMode définie avec les valeurs Hardware ou Automatic. Cette propriété n'est actuellement pas disponible dans la spécification Open Network Configuration (ONC), mais elle est fournie dans AMAPI et peut être spécifiée lors de la configuration des réseaux Wi-Fi. Cette modification ne s'applique qu'à Android 13 et versions ultérieures, quel que soit le mode de gestion.
      • Hardware utilise l'adresse MAC d'usine lors de la connexion au réseau.
      • Automatic permet au framework Wi-Fi de décider automatiquement de la stratégie de randomisation MAC. Il peut s'agir d'adresses MAC persistantes ou non persistantes générées de manière aléatoire et utilisées lors de la connexion au réseau.
  • Objets EAP :
    • ClientCertPattern n'est pas compatible.
    • SaveCredentials n'est pas compatible, car les identifiants sont toujours enregistrés.
    • UseSystemCAs n'est pas compatible.
    • ServerCARef est accepté.
    • ServerCARefs est accepté.
    • DomainSuffixMatch est accepté. Les configurations sans fil d'entreprise sans ce champ (ou avec une liste vide comme valeur) sont considérées comme non sécurisées et refusées par la plate-forme. Les valeurs doivent être des noms de domaine valides (par exemple, "example.com", "subdomain.example.com").
    • Les valeurs suivantes sont acceptées pour ClientCertType: Ref, KeyPairAlias
    • Les valeurs suivantes sont acceptées pour Inner: MSCHAPv2, PAP
    • Les valeurs suivantes sont acceptées pour Outer: EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM, PEAP
  • Objets Certificate :
    • Remove n'est pas compatible. Omettre le certificat dans la configuration à la place.
    • TrustBits n'est pas compatible.

Exemples

Plusieurs réseaux Wi-Fi

Cet exemple de fragment de stratégie montre trois réseaux Wi-Fi configurés avec différents schémas de sécurité. Le fichier JSON de configuration de réseau ouvert est imbriqué dans le champ openNetworkConfiguration du fichier 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"
      }
    }
  ]
}

Authentification EAP

Cet exemple de fragment de stratégie montre un réseau sans fil configuré avec l'authentification EAP-TLS. En plus de l'objet NetworkConfigurations, l'exemple inclut deux objets Certificates pour les certificats client et serveur.

"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"
      }
   ]
}

Le champ ClientCertType peut également être défini sur KeyPairAlias, et le champ ClientCertKeyPairAlias peut être utilisé pour spécifier l'alias d'une paire de clés KeyChain installée (voir DevicePolicyManager.installKeyPair) ou générée (voir DevicePolicyManager.generateKeyPair) utilisée pour l'authentification Wi-Fi. Sous Android 12 et versions ultérieures, la paire de clés KeyChain dont l'alias est spécifié avec ClientCertKeyPairAlias est accordée pour l'authentification aux réseaux Wi-Fi et est utilisée pour l'authentification au réseau Wi-Fi correspondant. Sous Android 12, un nonComplianceDetail avec un motif API_LEVEL est signalé. Un nonComplianceDetail avec le motif INVALID_VALUE et le motif spécifique ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY est signalé si l'alias de paire de clés spécifié ne correspond pas à une clé existante. Voici un exemple de stratégie:

"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"
      }
   ]
}

Le champ Security peut également être WPA3-Enterprise_192, qui correspond à un réseau WPA-EAP configuré avec le mode WPA3 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"
      }
   ]
}