Định cấu hình mạng

Bạn có thể sử dụng chính sách để định cấu hình mạng Wi-Fi trên một thiết bị. Android Management API sử dụng Cấu hình mạng mở, một định dạng tiêu chuẩn dựa trên JSON, ban đầu được phát triển như một phần của dự án Chromium.

Để đưa Cấu hình mạng mở vào một chính sách, hãy đặt trường openNetworkConfiguration trên tài nguyên Policy.

Đối với các thiết bị được quản lý hoàn toàn, bạn có thể ngăn người dùng định cấu hình chế độ cài đặt Wi-Fi theo cách thủ công trên thiết bị của họ bằng cách đặt wifiConfigDisabled thành true trong Policy tài nguyên.

Tính năng được hỗ trợ

Android Management API chỉ hỗ trợ một tập hợp con của quy cách Cấu hình mạng mở.

  • Đối tượng cấp cao nhất:
    • Bạn phải bỏ qua hoặc đặt Type thành UnencryptedConfiguration. Không cần mã hoá cấu hình mạng trong một chính sách vì toàn bộ chính sách được mã hoá trong dịch vụ Android Management API. Ngoài ra, còn có một lớp mã hoá thứ hai cho thông tin nhạy cảm như cụm mật khẩu và khoá riêng tư.
  • Đối tượng NetworkConfiguration:
    • GUID, Name, TypeWiFi là các trường được hỗ trợ và đều là bắt buộc.
    • ProxySettings là một trường không bắt buộc. Nếu bạn sử dụng trường này, thì chỉ ManualPAC (Cấu hình tự động cho proxy) được hỗ trợ.
    • Bạn phải đặt Type thành WiFi. Không hỗ trợ các loại mạng khác.
  • WiFi đối tượng:
    • SSIDHexSSID được hỗ trợ và bạn phải cung cấp ít nhất một trong hai đối tượng này.
      • Nếu bạn đặt cả HexSSIDSSID, thì các giá trị phải nhất quán.
    • HiddenSSID được hỗ trợ.
    • AllowGatewayARPPolling không được hỗ trợ.
    • SignalStrength không được hỗ trợ.
    • AutoConnect: Trường này xác định xem mạng có được tự động bật hay không. Chế độ cài đặt này không phụ thuộc vào tuỳ chọn tự động kết nối cho mỗi mạng mà người dùng có trong phần cài đặt Wi-Fi của thiết bị.
      • Nếu bạn đặt thành true, mạng sẽ được bật, nghĩa là thiết bị có thể tự động kết nối với mạng đó mà không cần người dùng chọn rõ ràng trong phần cài đặt Wi-Fi, trừ phi người dùng tắt tính năng tự động kết nối cho mạng này.
      • Nếu bạn đặt thành false, mạng sẽ được thêm vào danh sách mạng đã lưu nhưng không được bật. Thiết bị không tự động kết nối với mạng đó Để thiết bị kết nối với mạng, người dùng phải chọn mạng đó một lần theo cách thủ công trong phần cài đặt Wi-Fi. Sau lần kết nối thủ công đầu tiên, mạng sẽ được coi là đã bật và thiết bị có thể tự động kết nối với mạng đó, trừ phi người dùng tắt tính năng tự động kết nối cho mạng này.
    • Security là bắt buộc và các giá trị sau đây được hỗ trợ: - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
  • Đối với cụm mật khẩu WEP-PSK, chỉ hỗ trợ cụm mật khẩu 40 bit (10 chữ số) hoặc 104 bit (26 chữ số).
  • Quy cách nêu rõ rằng cụm mật khẩu WEP-PSK phải bắt đầu bằng tiền tố 0x. Tuy nhiên, để đảm bảo tính nhất quán với Khung Android, bạn không bắt buộc phải sử dụng tiền tố này.
  • Để đặt chế độ tạo địa chỉ MAC ngẫu nhiên , hãy sử dụng thuộc tính MACAddressRandomizationMode được đặt với các giá trị Hardware hoặc Automatic. Thuộc tính này không có trong quy cách Cấu hình mạng mở (ONC) nhưng được cung cấp trong AMAPI và có thể được chỉ định trong khi định cấu hình mạng Wi-Fi Thuộc tính này chỉ áp dụng cho Android 13 trở lên trên tất cả các chế độ quản lý.
    • Hardware sử dụng địa chỉ MAC của nhà máy khi kết nối với mạng.
    • Automatic cho phép khung Wi-Fi tự động quyết định chiến lược tạo địa chỉ MAC ngẫu nhiên. Đây có thể là địa chỉ MAC được tạo ngẫu nhiên liên tục hoặc không liên tục , được sử dụng trong khi kết nối với mạng.
  • Đối tượng EAP:
  • ClientCertPattern không được hỗ trợ.
  • SaveCredentials không được hỗ trợ vì thông tin đăng nhập luôn được lưu.
  • UseSystemCAs không được hỗ trợ.
  • ServerCARef được hỗ trợ.
  • ServerCARefs được hỗ trợ.
  • DomainSuffixMatch được hỗ trợ. Các cấu hình không dây dành cho doanh nghiệp không có trường này (hoặc có danh sách trống làm giá trị) được coi là không an toàn và bị nền tảng từ chối . Giá trị phải là tên miền hợp lệ (ví dụ: "example.com", "subdomain.example.com").
  • Các giá trị sau đây được hỗ trợ cho ClientCertType: Ref, KeyPairAlias
  • Các giá trị sau đây được hỗ trợ cho Inner: MSCHAPv2, PAP
  • Các giá trị sau đây được hỗ trợ cho Outer: EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM, EAP-PWD, PEAP
  • Certificate đối tượng:
    • Remove không được hỗ trợ. Thay vào đó, hãy bỏ qua chứng chỉ trong cấu hình.
    • TrustBits không được hỗ trợ.

Ví dụ

Nhiều mạng Wi-Fi

Đoạn chính sách mẫu này cho thấy 3 mạng Wi-Fi được định cấu hình bằng các lược đồ bảo mật khác nhau. JSON Cấu hình mạng mở được lồng trong trường openNetworkConfiguration của 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"
      }
    }
  ]
}

Xác thực EAP

Đoạn chính sách mẫu này cho thấy một mạng không dây được định cấu hình bằng tính năng xác thực EAP-TLS. Ngoài đối tượng NetworkConfigurations, ví dụ này còn có 2 đối tượng Certificates cho chứng chỉ máy khách và máy chủ.

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

Bạn cũng có thể đặt trường ClientCertType thành KeyPairAlias và sử dụng trường ClientCertKeyPairAlias để chỉ định email đại diện của một cặp khoá KeyChain đã cài đặt (xem DevicePolicyManager.installKeyPair ) hoặc được tạo (xem DevicePolicyManager.generateKeyPair ) dùng để xác thực Wi-Fi. Đối với Android 12 trở lên, cặp khoá KeyChain có email đại diện được chỉ định bằng ClientCertKeyPairAlias được cấp để xác thực cho các mạng Wi-Fi và được dùng để xác thực cho mạng Wi-Fi tương ứng. Trước Android 12, một nonComplianceDetailAPI_LEVEL lý do sẽ được báo cáo. A nonComplianceDetailINVALID_VALUE lý do và ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY lý do cụ thể sẽ được báo cáo nếu email đại diện của cặp khoá được chỉ định không tương ứng với một khoá hiện có. Sau đây là một chính sách mẫu:

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

Trường Security cũng có thể là WPA3-Enterprise_192, đây là một mạng WPA-EAP được định cấu hình bằng chế độ WPA3 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"
      }
   ]
}