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

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

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

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

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

Android Management API รองรับเฉพาะข้อกำหนดการกำหนดค่าเครือข่ายแบบเปิดเพียงบางส่วนเท่านั้น

  • ออบเจ็กต์ระดับบนสุด
    • ต้องละเว้น Type หรือตั้งค่าเป็น UnencryptedConfiguration ไม่จำเป็นต้องเข้ารหัสการกำหนดค่าเครือข่ายภายในนโยบาย เนื่องจากนโยบายทั้งหมดจะได้รับการเข้ารหัสภายในบริการ Android Management API นอกจากนี้ ยังมีการเข้ารหัสอีกชั้นหนึ่งสำหรับข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่านและคีย์ส่วนตัว
  • ออบเจ็กต์ NetworkConfiguration รายการ
    • GUID, Name, Type และ WiFi เป็นช่อง ที่รองรับและต้องระบุทั้งหมด
    • ProxySettings เป็นช่องที่ไม่บังคับ หากใช้ตัวเลือกนี้ ระบบจะรองรับเฉพาะ Manual และ PAC (การกำหนดค่าพร็อกซีอัตโนมัติ)
    • ต้องตั้งค่า Type เป็น WiFi ระบบไม่รองรับเครือข่ายประเภทอื่น
  • ออบเจ็กต์ WiFi รายการ
    • ไม่รองรับ 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 ที่ตั้งค่าด้วยค่า Hardware หรือ Automatic ปัจจุบันพร็อพเพอร์ตี้นี้ ไม่พร้อมใช้งานในข้อมูลจำเพาะของ Open Network Configuration (ONC) แต่มีอยู่ใน AMAPI และสามารถระบุได้ขณะที่กำหนดค่าเครือข่าย Wi-Fi การตั้งค่านี้มีผลกับ Android 13 ขึ้นไปในทุกโหมดการจัดการ
      • Hardware ใช้ที่อยู่ MAC จากโรงงานเมื่อเชื่อมต่อเครือข่าย
      • Automatic อนุญาตให้เฟรมเวิร์ก Wi-Fi กำหนดกลยุทธ์การสุ่ม MAC โดยอัตโนมัติ ซึ่งอาจเป็นที่อยู่ MAC ที่สร้างแบบสุ่มหรือแบบถาวรหรือถาวรซึ่งใช้ขณะเชื่อมต่อกับเครือข่ายก็ได้
  • ออบเจ็กต์ EAP รายการ
    • ไม่รองรับ ClientCertPattern
    • ไม่รองรับ SaveCredentials
    • ไม่รองรับ UseSystemCAs
    • รองรับ DomainSuffixMatch
      การกำหนดค่าระบบไร้สายขององค์กรที่ไม่มีช่องนี้ (หรือที่มีรายการที่ว่างเปล่าเป็นค่า) จะถือว่าไม่ปลอดภัยและแพลตฟอร์มปฏิเสธ ค่าควรเป็นชื่อโดเมนที่ถูกต้อง (เช่น "example.com", "subdomain.example.com")
    • ClientCertType รองรับเฉพาะค่า Ref
    • ค่าที่รองรับสำหรับ Inner มีดังนี้: MSCHAPv2, PAP
    • ค่าที่รองรับสำหรับ Outer มีดังนี้: EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM, PEAP
  • ออบเจ็กต์ Certificate รายการ
    • ไม่รองรับ Remove ไม่ใช้ใบรับรองในการกำหนดค่า แทน
    • ไม่รองรับ TrustBits

ตัวอย่าง

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

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

การตรวจสอบสิทธิ์ 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"
               ],
               "ServerCARef": "abc123",
               "ClientCertType": "Ref",
               "ClientCertRef": "xyz456"
            },
            "Security": "WPA-EAP"
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      },
      {
         "GUID": "xyz456",
         "Type": "Client",
         "PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
      }
   ]
}

นอกจากนี้ ช่อง ClientCertType ยังสามารถตั้งค่าเป็น KeyPairAlias ได้ และสามารถใช้ช่อง ClientCertKeyPairAlias เพื่อระบุชื่อแทนของที่ติดตั้งไว้ (ดู 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"
               ],
               "ServerCARef": "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",
               "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"
      }
   ]
}