Đị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ị. Hệ điều hành Android API Quản lý 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. Tham khảo quy cách để biết toàn bộ thông tin chi tiết về Cấu hình mạng mở.

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

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

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

Android Management API chỉ hỗ trợ một nhóm nhỏ Mạng mở Thông số kỹ thuật của cấu hình.

  • Đối tượng cấp cao nhất:
    • Phải bỏ qua Type hoặc đặt thành UnencryptedConfiguration. Không có mã hóa cấu hình mạng trong một chính sách vì toàn bộ chính sách sẽ được mã hoá trong dịch vụ Android Management API. Ngoài ra, còn có lớp mã hoá thứ hai dành cho chẳng hạn như cụm mật khẩu và khoá riêng tư.
  • NetworkConfiguration đối tượng:
    • GUID, Name, TypeWiFi là được hỗ trợ và tất cả đều là trường bắt buộc.
    • ProxySettings là trường không bắt buộc. Nếu chế độ này được sử dụng, chỉ ManualPAC (Tự động định cấu hình proxy) được hỗ trợ.
    • Phải đặt Type thành WiFi. Các loại mạng khác không được hỗ trợ.
  • WiFi đối tượng:
    • AllowGatewayARPPolling không được hỗ trợ.
    • SignalStrength không được hỗ trợ.
    • Security là bắt buộc và các giá trị sau được hỗ trợ: – Không có – WEP-PSK – WPA-PSK – WPA-EAP - WEP-8021X - WPA3-Enterprise_192
    • Đối với cụm mật khẩu WEP-PSK, chỉ 40 bit (10 chữ số) hoặc 104 bit (26 chữ số) cụm mật khẩu được hỗ trợ.
    • Thông số kỹ thuật cho biết 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, quy tắc này không bắt buộc có tiền tố.
    • Để đặt chế độ ngẫu nhiên MAC, hãy sử dụng thuộc tính MACAddressRandomizationMode được đặt với giá trị Hardware hoặc Automatic. Tài sản này hiện đang không có trong thông số kỹ thuật của Cấu hình mạng mở (ONC) nhưng được cung cấp trong AMAPI và có thể được chỉ định khi định cấu hình mạng Wi-Fi. Chính sách 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 gốc khi kết nối mạng.
      • Automatic cho phép khung Wi-Fi tự động quyết định địa chỉ MAC ngẫu nhiên. Trạng thái này có thể là vĩnh viễn hoặc không vĩnh viễn địa chỉ MAC được tạo ngẫu nhiên được sử dụng khi kết nối với mạng.
  • EAP đối tượng:
    • 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ợ.
    • DomainSuffixMatch được hỗ trợ. Cấu hình không dây dành cho doanh nghiệp không có trường này (hoặc có trường trống danh sách dưới dạng giá trị) đều được coi là không an toàn và bị nền tảng này 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 được hỗ trợ cho ClientCertType: Ref, KeyPairAlias
    • Các giá trị sau được hỗ trợ cho Inner: MSCHAPv2, PAP
    • Các giá trị sau được hỗ trợ cho Outer: EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM, PEAP
  • Certificate đối tượng:
    • Remove không được hỗ trợ. Bỏ qua chứng chỉ trong cấu hình thay thế.
    • TrustBits không được hỗ trợ.

Ví dụ

Nhiều mạng Wi-Fi

Đoạn chính sách mẫu này hiển thị ba mạng Wi-Fi được định cấu hình bằng các chương trình 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 EAP-TLS xác thực. Ngoài đối tượng NetworkConfigurations, ví dụ bao gồm 2 đối tượng Certificates cho chứng chỉ ứng dụng khách và chứng chỉ 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"
               ],
               "ServerCARef": "abc123",
               "ClientCertType": "Ref",
               "ClientCertRef": "xyz456"
            },
            "Security": "WPA-EAP"
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      },
      {
         "GUID": "xyz456",
         "Type": "Client",
         "PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
      }
   ]
}

Trường ClientCertType cũng có thể được đặt thành KeyPairAlias và Bạn có thể sử dụng trường ClientCertKeyPairAlias để chỉ định bí danh của một ứng dụng đã cài đặt (xem DevicePolicyManager.installKeyPair ) hoặc được tạo (xem DevicePolicyManager.generateKeyPair ) Cặp khoá KeyChain dùng để xác thực Wi-Fi. Trên Android 12 và ở trên, cặp khoá KeyChain có bí danh được chỉ định bằng ClientCertKeyPairAlias được cấp để xác thực với mạng Wi-Fi và được được sử dụng để xác thực cho mạng Wi-Fi tương ứng. Dưới Android 12, nonComplianceDetail thông qua tính năng API_LEVEL lý do khác được báo cáo. Đáp nonComplianceDetail thông qua tính năng INVALID_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 bí danh 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"
               ],
               "ServerCARef": "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, là một WPA-EAP mạng được định cấu hình ở 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",
               "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"
      }
   ]
}