Mengonfigurasi jaringan

Anda dapat menggunakan kebijakan untuk mengonfigurasi jaringan Wi-Fi di perangkat. Android Management API menggunakan Open Network Configuration, format berbasis JSON standar yang awalnya dikembangkan sebagai bagian dari project Chromium.

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

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

Fitur yang didukung

Android Management API hanya mendukung sebagian spesifikasi Open Network Configuration.

  • Objek tingkat teratas:
    • 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, ada lapisan enkripsi kedua untuk informasi sensitif seperti frasa sandi dan kunci pribadi.
  • Objek NetworkConfiguration:
    • GUID, Name, Type, dan WiFi adalah kolom yang didukung, dan semuanya wajib diisi.
    • ProxySettings adalah kolom opsional. Jika digunakan, hanya Manual dan PAC (Proxy Auto-Configuration) yang didukung.
    • Type harus disetel ke WiFi. Jenis jaringan lainnya tidak didukung.
  • Objek WiFi:
    • SSID dan HexSSID didukung dan setidaknya salah satunya harus ada.
      • Jika HexSSID dan SSID ditetapkan, nilainya harus konsisten.
    • HiddenSSID didukung.
    • AllowGatewayARPPolling tidak didukung.
    • SignalStrength tidak didukung.
    • AutoConnect Jika diaktifkan, jaringan ini akan dianggap sebagai kandidat potensial untuk terhubung selama pemilihan jaringan.
    • Security wajib diisi 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 dimulai dengan awalan 0x. Namun, untuk konsistensi dengan Android Framework, awalan ini tidak diperlukan.
  • Untuk menyetel mode pengacakan MAC , gunakan properti MACAddressRandomizationMode yang ditetapkan dengan nilai Hardware atau Automatic. Properti ini tidak tersedia dalam spesifikasi Open Network Configuration (ONC) tetapi disediakan di AMAPI dan dapat ditentukan saat mengonfigurasi jaringan Wi-Fi. Hal ini hanya berlaku untuk Android 13+ di semua mode pengelolaan.
    • Hardware menggunakan alamat MAC pabrik saat terhubung ke jaringan.
    • Automatic memungkinkan framework Wi-Fi secara otomatis memutuskan strategi perandoman MAC. Alamat MAC yang dibuat secara acak ini dapat berupa alamat MAC persisten atau non-persisten yang digunakan saat terhubung ke jaringan.
  • Objek EAP:
  • ClientCertPattern tidak didukung.
  • SaveCredentials tidak didukung karena kredensial selalu disimpan.
  • UseSystemCAs tidak didukung.
  • ServerCARef didukung.
  • ServerCARefs 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").
  • Nilai berikut didukung untuk ClientCertType: Ref, KeyPairAlias
  • 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.
    • TrustBits tidak didukung.

Contoh

Beberapa jaringan Wi-Fi

Fragmen kebijakan contoh ini menunjukkan tiga jaringan Wi-Fi yang dikonfigurasi dengan skema keamanan yang berbeda. JSON Konfigurasi Jaringan Terbuka disarangkan dalam kolom openNetworkConfiguration dari 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

Fragmen kebijakan contoh ini menunjukkan jaringan nirkabel yang dikonfigurasi dengan autentikasi EAP-TLS. Selain objek NetworkConfigurations, contoh ini mencakup 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"
               ],
               "ServerCARefs": ["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 disetel ke KeyPairAlias, dan kolom ClientCertKeyPairAlias dapat digunakan untuk menentukan alias pasangan kunci KeyChain yang diinstal (lihat DevicePolicyManager.installKeyPair ) atau dibuat (lihat DevicePolicyManager.generateKeyPair ) yang digunakan untuk autentikasi Wi-Fi. Untuk Android 12 dan yang lebih baru, 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. Sebelum Android 12, nonComplianceDetail dengan API_LEVEL alasan dilaporkan. nonComplianceDetail dengan INVALID_VALUE alasan dan ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY alasan spesifik 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"
               ],
               "ServerCARefs": ["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 192-bit WPA3.

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