Mengonfigurasi jaringan

Anda dapat menggunakan kebijakan untuk mengonfigurasi jaringan Wi-Fi di perangkat. Android Management API menggunakan Konfigurasi Jaringan Terbuka, format berbasis JSON standar yang awalnya dikembangkan sebagai bagian dari project Chromium. Lihat spesifikasi untuk mengetahui detail selengkapnya tentang Konfigurasi Jaringan Terbuka.

Untuk menyertakan Konfigurasi Jaringan Terbuka dalam kebijakan, tetapkan kolom openNetworkConfiguration pada resource Policy.

Untuk perangkat terkelola sepenuhnya, Anda dapat secara opsional mencegah pengguna mengonfigurasi setelan Wi-Fi secara manual di perangkat dengan menyetel wifiConfigDisabled ke true di resource Policy.

Fitur yang didukung

Android Management API hanya mendukung subset spesifikasi Konfigurasi Jaringan Terbuka.

  • Objek tingkat atas:
    • Type harus dihapus atau ditetapkan ke UnencryptedConfiguration. Tidak perlu mengenkripsi konfigurasi jaringan dalam kebijakan karena seluruh kebijakan dienkripsi dalam layanan Android Management API. Selain itu, terdapat enkripsi lapisan kedua untuk informasi sensitif seperti frasa sandi dan kunci pribadi.
  • Objek NetworkConfiguration:
    • GUID, Name, Type, dan WiFi adalah kolom yang didukung, dan semuanya wajib ada.
    • ProxySettings adalah kolom opsional. Jika ini digunakan, hanya Manual dan PAC (Konfigurasi Otomatis Proxy) yang didukung.
    • Type harus ditetapkan ke WiFi. Jenis jaringan lain tidak didukung.
  • Objek WiFi:
    • AllowGatewayARPPolling tidak didukung.
    • SignalStrength tidak didukung.
    • Security wajib ada dan nilai berikut didukung: - Tidak ada - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
    • Untuk frasa sandi WEP-PSK, hanya frasa sandi 40-bit (10 digit) atau 104-bit (26 digit) yang didukung.
    • Spesifikasi menyatakan bahwa frasa sandi WEP-PSK harus diawali dengan awalan 0x. Namun, agar konsisten dengan Framework Android, awalan ini tidak diperlukan.
    • Untuk menetapkan mode pengacakan MAC, gunakan properti MACAddressRandomizationMode yang ditetapkan dengan nilai Hardware atau Automatic. Properti ini saat ini tidak tersedia dalam spesifikasi Konfigurasi Jaringan Terbuka (ONC), tetapi disediakan di AMAPI dan dapat ditentukan saat mengonfigurasi jaringan Wi-Fi. Ini hanya berlaku untuk Android 13 atau yang lebih baru di semua mode pengelolaan.
      • Hardware menggunakan alamat MAC pabrik saat terhubung ke jaringan.
      • Automatic memungkinkan framework Wi-Fi menentukan strategi pengacakan MAC secara otomatis. Alamat ini dapat berupa alamat MAC yang dihasilkan secara acak persisten atau non-persisten yang digunakan saat terhubung ke jaringan.
  • Objek EAP:
    • ClientCertPattern tidak didukung.
    • SaveCredentials tidak didukung.
    • UseSystemCAs tidak didukung.
    • DomainSuffixMatch didukung.
      Konfigurasi nirkabel perusahaan tanpa kolom ini (atau dengan daftar kosong sebagai nilai) dianggap tidak aman dan ditolak oleh platform. Nilai harus berupa nama domain yang valid (misalnya, "example.com", "subdomain.example.com").
    • ClientCertType hanya mendukung nilai Ref
    • Nilai berikut didukung untuk Inner: MSCHAPv2, PAP
    • Nilai berikut didukung untuk Outer: EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM, PEAP
  • Objek Certificate:
    • Remove tidak didukung. Hapus sertifikat dalam konfigurasi sebagai gantinya.
    • TrustBits tidak didukung.

Contoh

Beberapa jaringan Wi-Fi

Contoh fragmen kebijakan ini menunjukkan tiga jaringan Wi-Fi yang dikonfigurasi dengan skema keamanan yang berbeda. JSON Konfigurasi Jaringan Terbuka disusun bertingkat dalam kolom openNetworkConfiguration pada 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"
   }
 }]
}

Autentikasi EAP

Contoh fragmen kebijakan ini menunjukkan jaringan nirkabel yang dikonfigurasi dengan autentikasi EAP-TLS. Selain objek NetworkConfigurations, contoh ini juga menyertakan dua objek Certificates untuk sertifikat klien dan 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"
               ],
               "ServerCARef": "abc123",
               "ClientCertType": "Ref",
               "ClientCertRef": "xyz456"
            },
            "Security": "WPA-EAP"
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      },
      {
         "GUID": "xyz456",
         "Type": "Client",
         "PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
      }
   ]
}

Kolom ClientCertType juga dapat ditetapkan ke KeyPairAlias, dan kolom ClientCertKeyPairAlias dapat digunakan untuk menentukan alias dari pasangan kunci yang diinstal (lihat DevicePolicyManager.installKeyPair ) atau pasangan kunci KeyChain yang dihasilkan (lihat DevicePolicyManager.generateKeyPair ) yang digunakan untuk autentikasi Wi-Fi. Di Android 12 dan yang lebih tinggi, pasangan kunci KeyChain yang memiliki alias yang ditentukan dengan ClientCertKeyPairAlias diberikan untuk autentikasi ke jaringan Wi-Fi dan digunakan untuk autentikasi ke jaringan Wi-Fi yang sesuai. Di bawah Android 12, nonComplianceDetail dengan alasan API_LEVEL dilaporkan. nonComplianceDetail dengan alasan INVALID_VALUE dan alasan khusus ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY dilaporkan jika alias pasangan kunci yang ditentukan tidak sesuai dengan kunci yang ada. Berikut adalah contoh kebijakan:

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

Kolom Security juga dapat berupa WPA3-Enterprise_192 yang merupakan jaringan WPA-EAP yang dikonfigurasi dengan mode WPA3 192-bit.

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