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é initialement développé dans le cadre du projet Chromium.

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

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 Policy ressource.

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 règle, car l'ensemble de la règle est chiffré dans le service de l'API Android Management. De plus, il existe une deuxième couche de chiffrement pour les informations sensibles telles que les phrases secrètes et les clés privées.
  • Objets NetworkConfiguration :
    • GUID, Name, Type et WiFi sont des champs compatibles et obligatoires.
    • ProxySettings est un champ facultatif. Si ce champ est utilisé, seuls Manual et PAC (Proxy Auto-Configuration) sont compatibles.
    • Type doit être défini sur WiFi. Les autres types de réseaux ne sont pas compatibles.
  • WiFi objets :
    • 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 compatible.
    • AllowGatewayARPPolling n'est pas compatible.
    • SignalStrength n'est pas compatible.
    • AutoConnect : ce champ détermine si le réseau est automatiquement activé. Ce paramètre est indépendant de l'option de connexion automatique par réseau disponible pour les utilisateurs dans les paramètres Wi-Fi de l'appareil.
      • Si la valeur est true, le réseau est activé, ce qui signifie que l'appareil peut s'y connecter automatiquement sans que l'utilisateur ait à le sélectionner explicitement dans les paramètres Wi-Fi , sauf s'il désactive la connexion automatique pour ce réseau.
      • Si la valeur est false, le réseau est ajouté à la liste des réseaux enregistrés , mais il n'est pas activé. L'appareil ne s'y connecte pas automatiquement. Pour que l'appareil se connecte au réseau, l'utilisateur doit sélectionner manuellement le réseau une fois dans les paramètres Wi-Fi. Après la première connexion manuelle, le réseau est considéré comme activé et l'appareil peut s'y connecter automatiquement, sauf si l'utilisateur désactive la connexion automatique pour ce réseau.
    • Security est obligatoire et les valeurs suivantes sont compatibles : - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
  • Pour les phrases secrètes WEP-PSK, seules les phrases secrètes de 40 bits (10 chiffres) ou de 104 bits (26 chiffres) sont compatibles.
  • La spécification indique que les phrases secrètes 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 sélection aléatoire de l'adresse MAC , utilisez la propriété MACAddressRandomizationMode définie avec les valeurs Hardware ou Automatic. Cette propriété n'est pas disponible dans la spécification Open Network Configuration (ONC) mais elle est fournie dans l'AMAPI et peut être spécifiée lors de la configuration des réseaux Wi-Fi Cela ne s'applique qu'à Android 13 et versions ultérieures dans tous les modes 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 sélection aléatoire de l'adresse MAC. Il peut s'agir d'adresses MAC générées de manière aléatoire persistantes ou non persistantes , qui sont 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 compatible.
  • ServerCARefs est compatible.
  • DomainSuffixMatch est compatible. 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 rejeté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 compatibles avec ClientCertType : Ref, KeyPairAlias
  • Les valeurs suivantes sont compatibles avec Inner : MSCHAPv2, PAP
  • Les valeurs suivantes sont compatibles avec Outer : EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM, EAP-PWD, PEAP
  • Objets Certificate :
    • Remove n'est pas compatible. À la place, omettez le certificat dans la configuration.
    • TrustBits n'est pas compatible.

Exemples

Plusieurs réseaux Wi-Fi

Cet exemple de fragment de règle montre trois réseaux Wi-Fi configurés avec différents schémas de sécurité. Le JSON Open Network Configuration est imbriqué dans le openNetworkConfiguration champ du 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"
      }
    }
  ]
}

Authentification EAP

Cet exemple de fragment de règle 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. Pour 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. Avant Android 12, un nonComplianceDetail avec API_LEVEL motif est signalé. Un nonComplianceDetail avec INVALID_VALUE motif et ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY motif spécifique est signalé si l'alias de la paire de clés spécifié ne correspond pas à une clé existante. Voici un exemple de règle :

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