Configura reti

Puoi utilizzare i criteri per configurare le reti Wi-Fi su un dispositivo. L'API Android Management utilizza Open Network Configuration, un formato standard basato su JSON sviluppato originariamente nell'ambito del progetto Chromium.

Per includere una configurazione di rete aperta in un criterio, imposta il openNetworkConfiguration campo su una Policy risorsa.

Per i dispositivi completamente gestiti, puoi facoltativamente impedire a un utente di configurare manualmente le impostazioni Wi-Fi sul proprio dispositivo impostando wifiConfigDisabled su true nella Policy risorsa.

Funzionalità supportate

L'API Android Management supporta solo un sottoinsieme della specifica Open Network Configuration.

  • Oggetto di primo livello:
    • Type deve essere omesso o impostato su UnencryptedConfiguration. Non è necessario criptare la configurazione di rete all'interno di un criterio perché l'intero criterio è criptato all'interno del servizio API Android Management. Inoltre, è presente un secondo livello di crittografia per le informazioni sensibili come le frasi di accesso e le chiavi private.
  • Oggetti NetworkConfiguration:
    • GUID, Name, Type e WiFi sono campi supportati e sono tutti obbligatori.
    • ProxySettings è un campo facoltativo. Se viene utilizzato, sono supportati solo Manual e PAC (Proxy Auto-Configuration).
    • Type deve essere impostato su WiFi. Non sono supportati altri tipi di reti.
  • WiFi oggetti:
    • SSID e HexSSID sono supportati e almeno uno di essi deve essere presente.
      • Se sono impostati sia HexSSID sia SSID, i valori devono essere coerenti.
    • HiddenSSID è supportato.
    • AllowGatewayARPPolling non è supportato.
    • SignalStrength non è supportato.
    • AutoConnect: questo campo determina se la rete viene attivata automaticamente. Questa impostazione è indipendente dall'opzione di connessione automatica per rete disponibile per gli utenti nelle impostazioni Wi-Fi del dispositivo.
      • Se impostato su true, la rete è abilitata, il che significa che il dispositivo può connettersi automaticamente senza una selezione esplicita dell'utente nelle impostazioni Wi-Fi, a meno che l'utente non disattivi la connessione automatica per questa rete.
      • Se impostato su false, la rete viene aggiunta all'elenco delle reti salvate ma non è abilitata. Il dispositivo non si connette automaticamente. Affinché il dispositivo si connetta alla rete, l'utente deve selezionare manualmente la rete una volta dalle impostazioni Wi-Fi. Dopo la prima connessione manuale, la rete viene trattata come abilitata e il dispositivo può connettersi automaticamente, a meno che l'utente non disattivi la connessione automatica per questa rete.
    • Security è obbligatorio e sono supportati i seguenti valori: - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
  • Per le frasi di accesso WEP-PSK, sono supportate solo le frasi di accesso a 40 bit (10 cifre) o 104 bit (26 cifre).
  • La specifica indica che le frasi di accesso WEP-PSK devono iniziare con il prefisso 0x. Tuttavia, per coerenza con Android Framework, questo prefisso non è obbligatorio.
  • Per impostare la modalità di randomizzazione MAC , utilizza la proprietà MACAddressRandomizationMode impostata con i valori Hardware o Automatic. Questa proprietà non è disponibile nella specifica Open Network Configuration (ONC) ma è fornita in AMAPI e può essere specificata durante la configurazione delle reti Wi-Fi Questo vale solo per Android 13 e versioni successive in tutte le modalità di gestione.
    • Hardware utilizza l'indirizzo MAC di fabbrica quando si connette alla rete.
    • Automatic consente al framework Wi-Fi di decidere automaticamente la strategia di randomizzazione dell'indirizzo MAC. Questi possono essere indirizzi MAC generati in modo casuale persistenti o non-persistenti utilizzati durante la connessione alla rete.
  • Oggetti EAP:
  • ClientCertPattern non è supportato.
  • SaveCredentials non è supportato perché le credenziali vengono sempre salvate.
  • UseSystemCAs non è supportato.
  • ServerCARef è supportato.
  • ServerCARefs è supportato.
  • DomainSuffixMatch è supportato. Le configurazioni wireless aziendali senza questo campo (o con un elenco vuoto come valore) sono considerate non sicure e rifiutate dalla piattaforma . I valori devono essere nomi di dominio validi (ad es. "example.com", "subdomain.example.com").
  • Per ClientCertType sono supportati i seguenti valori: Ref, KeyPairAlias.
  • Per Inner sono supportati i seguenti valori: MSCHAPv2, PAP.
  • Per Outer sono supportati i seguenti valori: EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM, EAP-PWD, PEAP.
  • Certificate oggetti:
    • Remove non è supportato. Ometti il certificato nella configurazione.
    • TrustBits non è supportato.

Esempi

Più reti Wi-Fi

Questo frammento di criteri di esempio mostra tre reti Wi-Fi configurate con schemi di sicurezza diversi. Il JSON di Open Network Configuration è nidificato in nel campo openNetworkConfiguration del 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"
      }
    }
  ]
}

Autenticazione EAP

Questo frammento di criteri di esempio mostra una rete wireless configurata con l'autenticazione EAP-TLS. Oltre all'oggetto NetworkConfigurations, l'esempio include due oggetti Certificates per i certificati client e server.

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

Il campo ClientCertType può essere impostato anche su KeyPairAlias, e il campo ClientCertKeyPairAlias può essere utilizzato per specificare l'alias di una coppia di chiavi KeyChain installata (vedi DevicePolicyManager.installKeyPair ) o generata (vedi DevicePolicyManager.generateKeyPair ) utilizzata per l'autenticazione Wi-Fi. Per Android 12 e versioni successive, la coppia di chiavi KeyChain con l'alias specificato con ClientCertKeyPairAlias viene concessa per l'autenticazione alle reti Wi-Fi e viene utilizzata per l'autenticazione alla rete Wi-Fi corrispondente. Prima di Android 12, a nonComplianceDetail with API_LEVEL reason is reported. Se la coppia di chiavi specificata non corrisponde a una chiave esistente, viene segnalato un nonComplianceDetail con il motivo INVALID_VALUE e il motivo specifico ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY. Di seguito è riportato un esempio di criterio:

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

Il campo Security può anche essere WPA3-Enterprise_192, ovvero una rete WPA-EAP configurata con la modalità WPA3 a 192 bit.

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