กำหนดค่าเครือข่าย

คุณใช้นโยบายเพื่อกำหนดค่าเครือข่าย Wi-Fi ในอุปกรณ์ได้ Android Management API ใช้การกำหนดค่าเครือข่ายแบบเปิด ซึ่งเป็นรูปแบบมาตรฐานที่อิงตาม JSON ซึ่งพัฒนาขึ้นเป็นส่วนหนึ่งของโปรเจ็กต์ Chromium เดิม โปรดดูรายละเอียดทั้งหมดเกี่ยวกับการกำหนดค่าเครือข่ายแบบเปิดในข้อกำหนด

หากต้องการรวมการกำหนดค่าเครือข่ายแบบเปิดไว้ในนโยบาย ให้ตั้งค่าช่อง openNetworkConfiguration ในแหล่งข้อมูล Policy

สำหรับอุปกรณ์ที่มีการจัดการอย่างเต็มรูปแบบ คุณสามารถเลือกป้องกันไม่ให้ผู้ใช้กำหนดการตั้งค่า Wi-Fi ในอุปกรณ์ด้วยตนเองได้โดยตั้งค่า wifiConfigDisabled เป็น true ในแหล่งข้อมูล Policy

ฟีเจอร์ที่รองรับ

Android Management API รองรับเฉพาะชุดย่อยของข้อกำหนดการกําหนดค่าเครือข่ายแบบเปิด

  • ออบเจ็กต์ระดับบนสุด:
    • ต้องละเว้น Type หรือตั้งค่าเป็น UnencryptedConfiguration คุณไม่จำเป็นต้องเข้ารหัสการกำหนดค่าเครือข่ายภายในนโยบาย เนื่องจากนโยบายทั้งหมดได้รับการเข้ารหัสภายในบริการ Android Management API นอกจากนี้ ยังมีการเข้ารหัสอีกชั้นสำหรับข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่านและคีย์ส่วนตัว
  • NetworkConfiguration objects:
    • GUID, Name, Type และ WiFi เป็นช่องที่รองรับและต้องกรอกข้อมูลให้ครบถ้วน
    • ProxySettings เป็นช่องที่ไม่บังคับ หากใช้ตัวเลือกนี้ ระบบจะรองรับเฉพาะ Manual และ PAC (Proxy Auto-Configuration) เท่านั้น
    • ต้องตั้งค่า Type เป็น WiFi ไม่รองรับเครือข่ายประเภทอื่นๆ
  • WiFi objects:
    • ระบบรองรับ SSID และ HexSSID โดยต้องมีอย่างน้อย 1 รายการ
      • หากตั้งค่าทั้ง HexSSID และ SSID ค่าต้องสอดคล้องกัน
    • รองรับ HiddenSSID
    • ไม่รองรับ AllowGatewayARPPolling
    • ไม่รองรับ SignalStrength
    • ต้องระบุ Security และระบบรองรับค่าต่อไปนี้ - ไม่มี - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
    • สำหรับรหัสผ่าน WEP-PSK ระบบจะรองรับเฉพาะรหัสผ่าน 40 บิต (10 หลัก) หรือ 104 บิต (26 หลัก) เท่านั้น
    • ข้อกำหนดระบุว่าพาสคีย์ WEP-PSK ต้องขึ้นต้นด้วยคำนำหน้า 0x อย่างไรก็ตาม คุณไม่จำเป็นต้องใช้คำนำหน้านี้เพื่อให้สอดคล้องกับเฟรมเวิร์ก Android
    • หากต้องการตั้งค่าโหมดการสุ่ม MAC ให้ใช้พร็อพเพอร์ตี้ MACAddressRandomizationMode set ที่มีค่า Hardware หรือ Automatic ปัจจุบันพร็อพเพอร์ตี้นี้ไม่มีอยู่ในข้อกำหนดการกำหนดค่าเครือข่ายเปิด (ONC) แต่มีอยู่ใน AMAPI และสามารถระบุได้ขณะกำหนดค่าเครือข่าย Wi-Fi การดำเนินการนี้ใช้ได้กับ Android 13 ขึ้นไปในโหมดการจัดการทั้งหมดเท่านั้น
      • Hardware ใช้ที่อยู่ MAC ของโรงงานเมื่อเชื่อมต่อกับเครือข่าย
      • Automatic ช่วยให้เฟรมเวิร์ก Wi-Fi ตัดสินใจกลยุทธ์การสุ่ม MAC โดยอัตโนมัติ ที่อยู่ MAC นี้อาจเป็นที่อยู่ MAC ที่ถาวรหรือไม่ถาวรซึ่งสร้างขึ้นแบบสุ่มและใช้ขณะเชื่อมต่อกับเครือข่าย
  • EAP objects:
    • ไม่รองรับ ClientCertPattern
    • ระบบไม่รองรับ SaveCredentials เนื่องจากระบบจะบันทึกข้อมูลเข้าสู่ระบบไว้เสมอ
    • ไม่รองรับ UseSystemCAs
    • รองรับ ServerCARef
    • รองรับ ServerCARefs
    • รองรับ DomainSuffixMatch การกำหนดค่าระบบไร้สายขององค์กรที่ไม่มีช่องนี้ (หรือมีลิสต์ว่างเปล่าเป็นค่า) จะถือว่าไม่ปลอดภัยและแพลตฟอร์มจะปฏิเสธ ค่าควรเป็นชื่อโดเมนที่ถูกต้อง (เช่น "example.com", "subdomain.example.com")
    • ค่าที่รองรับสำหรับ ClientCertType ได้แก่ Ref, KeyPairAlias
    • ค่าที่รองรับสำหรับ Inner ได้แก่ MSCHAPv2, PAP
    • ค่าที่รองรับสำหรับ Outer ได้แก่ EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM, PEAP
  • Certificate objects:
    • ไม่รองรับ Remove ละเว้นใบรับรองในการกําหนดค่าแทน
    • ไม่รองรับ TrustBits

ตัวอย่าง

เครือข่าย Wi-Fi หลายเครือข่าย

ตัวอย่างข้อมูลโค้ดนโยบายนี้แสดงเครือข่าย Wi-Fi 3 เครือข่ายที่กำหนดค่าด้วยรูปแบบการรักษาความปลอดภัยที่แตกต่างกัน JSON ของการกำหนดค่าเครือข่ายแบบเปิดจะฝังอยู่ในฟิลด์ openNetworkConfiguration ของ 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"
      }
    }
  ]
}

การตรวจสอบสิทธิ์ EAP

ตัวอย่างข้อมูลนโยบายนี้แสดงเครือข่ายไร้สายที่กําหนดค่าด้วยการตรวจสอบสิทธิ์ EAP-TLS นอกเหนือจากออบเจ็กต์ NetworkConfigurations แล้ว ตัวอย่างนี้ยังมีออบเจ็กต์ Certificates 2 รายการสําหรับใบรับรองไคลเอ็นต์และเซิร์ฟเวอร์

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

นอกจากนี้ คุณยังตั้งค่าช่อง ClientCertType เป็น KeyPairAlias ได้ด้วย และสามารถใช้ช่อง ClientCertKeyPairAlias เพื่อระบุอีเมลแทนของคู่คีย์ KeyChain ที่ติดตั้งไว้ (ดูหัวข้อ DevicePolicyManager.installKeyPair) หรือที่สร้างขึ้น (ดูหัวข้อ DevicePolicyManager.generateKeyPair) ซึ่งจะใช้สำหรับการตรวจสอบสิทธิ์ Wi-Fi ใน Android 12 ขึ้นไป คู่คีย์ KeyChain ที่มีชื่อแทนที่ระบุด้วย ClientCertKeyPairAlias จะได้รับสิทธิ์สำหรับการตรวจสอบสิทธิ์เครือข่าย Wi-Fi และจะใช้สำหรับการตรวจสอบสิทธิ์เครือข่าย Wi-Fi ที่เกี่ยวข้อง ด้านล่าง Android 12 ระบบจะรายงานเหตุผลว่า nonComplianceDetail มี API_LEVEL ระบบจะรายงานnonComplianceDetail ที่มีเหตุผลจาก INVALID_VALUE และเหตุผลที่เฉพาะเจาะจงหากชื่อแทนคู่คีย์ที่ระบุไม่ตรงกับคีย์ที่มีอยู่ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY ต่อไปนี้เป็นตัวอย่างนโยบาย

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

ฟิลด์ Security อาจเป็น WPA3-Enterprise_192 ซึ่งเป็นเครือข่าย WPA-EAP ที่กําหนดค่าด้วยโหมด WPA3 192 บิต

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