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 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 :
Typedoit être omis ou défini surUnencryptedConfiguration. Il n'est pas nécessaire de chiffrer la configuration réseau dans une règle, car l'intégralité de la règle est chiffrée dans le service de l'API Android Management. De plus, une deuxième couche de chiffrement est appliquée aux informations sensibles telles que les expressions secrètes et les clés privées.
- Objets
NetworkConfiguration:GUID,Name,TypeetWiFisont des champs acceptés et obligatoires.ProxySettingsest un champ facultatif. Si cette option est utilisée, seulsManualetPAC(configuration automatique du proxy) sont acceptés.Typedoit être défini surWiFi. Les autres types de réseaux ne sont pas acceptés.
- Objets
WiFi:SSIDetHexSSIDsont acceptés, et au moins l'un d'eux doit être présent.- Si
HexSSIDetSSIDsont définis, les valeurs doivent être cohérentes.
- Si
HiddenSSIDest accepté.AllowGatewayARPPollingn'est pas compatible.SignalStrengthn'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 définie sur
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 si l'utilisateur désactive la connexion automatique pour ce réseau. - Si la valeur est définie sur
false, le réseau est ajouté à la liste des réseaux enregistrés, mais 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.
- Si la valeur est définie sur
Securityest obligatoire. Les valeurs suivantes sont acceptées : - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
- Pour les expressions secrètes
WEP-PSK, seules les expressions secrètes de 40 bits (10 chiffres) ou de 104 bits (26 chiffres) sont acceptées. - La spécification indique que les expressions secrètes
WEP-PSKdoivent commencer par le préfixe0x. Toutefois, pour assurer la cohérence avec le framework Android, ce préfixe n'est pas obligatoire. - Pour définir le mode de randomisation de l'adresse MAC, utilisez la propriété
MACAddressRandomizationModeavec les valeursHardwareouAutomatic. Cette propriété n'est pas disponible dans la spécification ONC (Open Network Configuration), 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.Hardwareutilise l'adresse MAC d'usine lorsqu'il se connecte au réseau.Automaticpermet au framework Wi-Fi de décider automatiquement de la stratégie de randomisation de l'adresse 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: ClientCertPatternn'est pas compatible.SaveCredentialsn'est pas accepté, car les identifiants sont toujours enregistrés.UseSystemCAsn'est pas compatible.ServerCARefest accepté.ServerCARefsest accepté.DomainSuffixMatchest accepté. Les configurations sans fil Enterprise 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").- 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:Removen'est pas compatible. Omettez plutôt le certificat dans la configuration.TrustBitsn'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) qui est utilisée pour l'authentification Wi-Fi. Pour Android 12 et les 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 le motif API_LEVEL est signalé. Un 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 la paire de clés spécifiée 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 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"
}
]
}