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, développé à l'origine dans le cadre du projet Chromium. Reportez-vous à la spécification pour en savoir plus sur la configuration réseau ouverte.
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 de configuration de réseau ouvert.
- Objet de premier niveau :
Type
doit être omis ou défini surUnencryptedConfiguration
. Il n'est pas nécessaire de chiffrer la configuration réseau dans une règle, car toute la règle est chiffrée dans le service de l'API Android Management. En outre, 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
etWiFi
sont des champs acceptés, qui sont tous obligatoires.ProxySettings
est un champ facultatif. Si vous l'utilisez, seulsManual
etPAC
(configuration automatique du proxy) sont pris en charge.Type
doit être défini surWiFi
. Les autres types de réseaux ne sont pas compatibles.
- Objets
WiFi
:- L'
AllowGatewayARPPolling
n'est pas accepté. - L'
SignalStrength
n'est pas accepté. Security
est obligatoire et les valeurs suivantes sont acceptées : - Aucune - 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 104 bits (26 chiffres) sont acceptées. - La spécification indique que les phrases secrètes
WEP-PSK
doivent commencer par le préfixe0x
. Toutefois, pour des raisons de cohérence avec le framework Android, ce préfixe n'est pas requis. - Pour définir le mode de randomisation MAC, utilisez la propriété
MACAddressRandomizationMode
définie avec les valeursHardware
ouAutomatic
. Cette propriété n'est actuellement pas disponible dans la spécification ONC (Open Network Configuration), mais elle est fournie dans AMAPI et peut être spécifiée lors de la configuration des réseaux Wi-Fi. Cela ne s'applique qu'à Android 13 ou version ultérieure, 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, qui sont utilisées lors de la connexion au réseau.
- L'
- Objets
EAP
:- L'
ClientCertPattern
n'est pas accepté. - L'
SaveCredentials
n'est pas accepté. - L'
UseSystemCAs
n'est pas 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" ou "subdomain.example.com").ClientCertType
n'accepte que la valeurRef
.- 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
etPEAP
.
- L'
- Objets
Certificate
:- L'
Remove
n'est pas accepté. Omettez-le plutôt dans la configuration. - L'
TrustBits
n'est pas accepté.
- L'
Exemples
Plusieurs réseaux Wi-Fi
Cet exemple de fragment de règle montre trois réseaux Wi-Fi configurés avec des schémas de sécurité différents. 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 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" ], "ServerCARef": "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. Sur Android 12 et versions ultérieures, la paire de clés KeyChain ayant l'alias spécifié avec ClientCertKeyPairAlias
est autorisée pour l'authentification auprès des réseaux Wi-Fi et est utilisée pour l'authentification auprès du réseau Wi-Fi correspondant. Sous Android 12, un nonComplianceDetail
avec un motif API_LEVEL
est signalé. Une nonComplianceDetail
avec un motif INVALID_VALUE
et un 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 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" ], "ServerCARef": "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é en 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", "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" } ] }