คุณใช้นโยบายเพื่อกำหนดค่าเครือข่าย Wi-Fi ในอุปกรณ์ได้ Android Management API ใช้การกำหนดค่าเครือข่ายแบบเปิด ซึ่งเป็นรูปแบบมาตรฐานที่อิงตาม JSON ซึ่งเดิมพัฒนาขึ้นเป็นส่วนหนึ่งของโปรเจ็กต์ Chromium
หากต้องการรวมการกำหนดค่าเครือข่ายแบบเปิดไว้ในนโยบาย ให้ตั้งค่าฟิลด์
openNetworkConfiguration ในทรัพยากร
Policy
สำหรับอุปกรณ์ที่มีการจัดการเต็มรูปแบบ คุณสามารถเลือกป้องกันไม่ให้ผู้ใช้กำหนดค่าการตั้งค่า Wi-Fi ในอุปกรณ์ด้วยตนเองได้โดยตั้งค่า wifiConfigDisabled เป็น
true ในแหล่งข้อมูล
Policy
ฟีเจอร์ที่รองรับ
Android Management API รองรับเฉพาะชุดย่อยของข้อกำหนดการกำหนดค่าเครือข่ายแบบเปิด
- ออบเจ็กต์ระดับบนสุด
- ต้องเว้น
Typeไว้หรือตั้งค่าเป็นUnencryptedConfigurationคุณไม่จำเป็นต้องเข้ารหัสการกำหนดค่าเครือข่ายภายในนโยบายเนื่องจาก นโยบายทั้งหมดได้รับการเข้ารหัสภายในบริการ Android Management API นอกจากนี้ ยังมีการเข้ารหัสชั้นที่ 2 สำหรับข้อมูลที่ละเอียดอ่อน เช่น วลีรหัสและคีย์ส่วนตัว
- ต้องเว้น
NetworkConfigurationออบเจ็กต์:GUID,Name,TypeและWiFiเป็นฟิลด์ที่รองรับและต้องระบุทั้งหมดProxySettingsเป็นช่องที่ไม่บังคับ หากใช้การตั้งค่านี้ ระบบจะรองรับเฉพาะManualและPAC(Proxy Auto-Configuration)- ต้องตั้งค่า
Typeเป็นWiFiระบบไม่รองรับเครือข่ายประเภทอื่นๆ
WiFiออบเจ็กต์:- ระบบรองรับ
SSIDและHexSSIDและต้องมีอย่างน้อย 1 รายการ- หากตั้งค่าทั้ง
HexSSIDและSSIDค่าดังกล่าวจะต้องสอดคล้องกัน
- หากตั้งค่าทั้ง
- รองรับ
HiddenSSID - ไม่รองรับ
AllowGatewayARPPolling - ไม่รองรับ
SignalStrength AutoConnect: ฟิลด์นี้กำหนดว่าเครือข่ายจะเปิดใช้โดยอัตโนมัติหรือไม่ การตั้งค่านี้ไม่ขึ้นอยู่กับตัวเลือกเชื่อมต่ออัตโนมัติต่อเครือข่ายที่ผู้ใช้ใช้ได้ในการตั้งค่า Wi-Fi ของอุปกรณ์- หากตั้งค่าเป็น
trueแสดงว่าเปิดใช้เครือข่าย ซึ่งหมายความว่าอุปกรณ์ จะเชื่อมต่อกับเครือข่ายได้โดยอัตโนมัติโดยไม่ต้องให้ผู้ใช้เลือกอย่างชัดเจนในการตั้งค่า Wi-Fi เว้นแต่ผู้ใช้จะปิดใช้การเชื่อมต่ออัตโนมัติสำหรับเครือข่ายนี้ - หากตั้งค่าเป็น
falseระบบจะเพิ่มเครือข่ายลงในรายการเครือข่ายที่บันทึกไว้ แต่จะไม่ได้เปิดใช้ อุปกรณ์จะไม่เชื่อมต่อกับเครือข่ายโดยอัตโนมัติ หากต้องการให้อุปกรณ์เชื่อมต่อกับเครือข่าย ผู้ใช้ต้องเลือกเครือข่ายด้วยตนเอง 1 ครั้งจากการตั้งค่า Wi-Fi หลังจากเชื่อมต่อด้วยตนเองเป็นครั้งแรก ระบบจะถือว่าเครือข่าย เปิดใช้แล้ว และอุปกรณ์จะเชื่อมต่อกับเครือข่ายนี้ได้โดยอัตโนมัติ เว้นแต่ ผู้ใช้จะปิดใช้การเชื่อมต่ออัตโนมัติสำหรับเครือข่ายนี้
- หากตั้งค่าเป็น
Securityต้องระบุและรองรับค่าต่อไปนี้ - ไม่มี - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
- ระบบรองรับ
- สำหรับรหัสผ่าน
WEP-PSKระบบรองรับเฉพาะรหัสผ่านแบบ 40 บิต (10 หลัก) หรือ 104 บิต (26 หลัก) เท่านั้น - ข้อกำหนดระบุว่า
WEP-PSKรหัสผ่านต้องขึ้นต้นด้วย คำนำหน้า0xอย่างไรก็ตาม เพื่อให้สอดคล้องกับ Android Framework คุณไม่จำเป็นต้องใช้ คำนำหน้านี้ - หากต้องการตั้งค่าโหมด
การสุ่ม MAC
ให้ใช้พร็อพเพอร์ตี้
MACAddressRandomizationModeที่ตั้งค่าด้วยค่าHardwareหรือAutomaticพร็อพเพอร์ตี้นี้ไม่พร้อมใช้งานใน ข้อกำหนดการกำหนดค่าเครือข่ายแบบเปิด (ONC) แต่มีให้ใช้งานใน AMAPI และสามารถระบุได้ขณะกำหนดค่าเครือข่าย Wi-Fi การดำเนินการนี้ใช้กับ Android 13 ขึ้นไปในโหมดการจัดการทั้งหมดเท่านั้นHardwareใช้ที่อยู่ MAC จากโรงงานเมื่อเชื่อมต่อกับเครือข่ายAutomaticช่วยให้เฟรมเวิร์ก Wi-Fi ตัดสินใจเลือกกลยุทธ์การสุ่ม MAC โดยอัตโนมัติ ซึ่งอาจเป็นที่อยู่ MAC ที่สร้างขึ้นแบบถาวรหรือ แบบไม่ถาวร แบบสุ่มซึ่งใช้ขณะเชื่อมต่อกับ เครือข่าย
EAPออบเจ็กต์- ไม่รองรับ
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ออบเจ็กต์:- ไม่รองรับ
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"
],
"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 A
nonComplianceDetail
with
INVALID_VALUE
reason and
ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY
specific reason is reported if specified key pair alias does not correspond to
an 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"
}
]
}