אפשר להשתמש במדיניות כדי להגדיר רשתות Wi-Fi במכשיר. Android Management API משתמש ב-Open Network Configuration, פורמט סטנדרטי מבוסס JSON שפותח במקור כחלק מפרויקט Chromium.
כדי לכלול הגדרת רשת פתוחה במדיניות, מגדירים את השדה openNetworkConfiguration במשאב Policy.
במכשירים בניהול מלא, אתם יכולים למנוע מהמשתמשים להגדיר ידנית את הגדרות ה-Wi-Fi במכשיר שלהם. לשם כך, צריך להגדיר את wifiConfigDisabled לערך true במשאב Policy.
תכונות נתמכות
Android Management API תומך רק בקבוצת משנה של מפרט Open Network Configuration.
- אובייקט ברמה העליונה:
- צריך להשמיט את
Typeאו להגדיר אותו בתורUnencryptedConfiguration. אין צורך להצפין את הגדרות הרשת במדיניות, כי המדיניות כולה מוצפנת בשירות Android Management API. בנוסף, יש שכבת הצפנה שנייה למידע רגיש כמו ביטויי גישה ומפתחות פרטיים.
- צריך להשמיט את
-
NetworkConfigurationobjects:-
GUID,Name,TypeוגםWiFiהם שדות נתמכים, וכולם שדות חובה. - השדה
ProxySettingsהוא אופציונלי. אם משתמשים בשיטה הזו, רקManualו-PAC(Proxy Auto-Configuration) נתמכים. - הערך של
Typeחייב להיותWiFi. אין תמיכה בסוגים אחרים של רשתות.
-
-
WiFiobjects:- המאפיינים
SSIDו-HexSSIDנתמכים, וצריך לציין לפחות אחד מהם.- אם הגדרתם גם את
HexSSIDוגם אתSSID, הערכים צריכים להיות עקביים.
- אם הגדרתם גם את
- יש תמיכה ב-
HiddenSSID. - אין תמיכה ב-
AllowGatewayARPPolling. - אין תמיכה ב-
SignalStrength. -
AutoConnect: השדה הזה קובע אם הרשת מופעלת באופן אוטומטי. ההגדרה הזו לא תלויה באפשרות החיבור האוטומטי לכל רשת שזמינה למשתמשים בהגדרות ה-Wi-Fi של המכשיר.- אם המדיניות מוגדרת לערך
true, הרשת מופעלת, כלומר המכשיר יכול להתחבר אליה באופן אוטומטי בלי שהמשתמש יבחר אותה במפורש בהגדרות ה-Wi-Fi, אלא אם המשתמש משבית את החיבור האוטומטי לרשת הזו. - אם הערך הוא
false, הרשת נוספת לרשימת הרשתות השמורות אבל לא מופעלת. המכשיר לא מתחבר אליה באופן אוטומטי. כדי שהמכשיר יתחבר לרשת, המשתמש צריך לבחור את הרשת באופן ידני פעם אחת בהגדרות ה-Wi-Fi. אחרי החיבור הידני הראשון, הרשת נחשבת כמופעלת והמכשיר יכול להתחבר אליה באופן אוטומטי, אלא אם המשתמש משבית את החיבור האוטומטי לרשת הזו.
- אם המדיניות מוגדרת לערך
- המאפיין
Securityהוא חובה, ואפשר להשתמש בערכים הבאים: – None – 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. המאפיין הזה לא זמין במפרט Open Network Configuration (ONC), אבל הוא זמין ב-AMAPI ואפשר לציין אותו כשמגדירים רשתות Wi-Fi. ההגדרה הזו רלוונטית רק ל-Android מגרסה 13 ואילך בכל מצבי הניהול.-
Hardwareמשתמש בכתובת ה-MAC של היצרן כשהוא מתחבר לרשת. -
Automaticמאפשר למסגרת ה-Wi-Fi להחליט באופן אוטומטי על אסטרטגיית ההקצאה האקראית של כתובות MAC. אלה יכולות להיות כתובות MAC שנוצרות באופן אקראי וקבועות או לא קבועות, שמשמשות להתחברות לרשת.
-
EAPאובייקטים:- אין תמיכה ב-
ClientCertPattern. - אין תמיכה ב-
SaveCredentialsכי פרטי הכניסה תמיד נשמרים. - אין תמיכה ב-
UseSystemCAs. - יש תמיכה ב-
ServerCARef. - יש תמיכה ב-
ServerCARefs. - יש תמיכה ב-
DomainSuffixMatch. הגדרות אלחוטיות של Enterprise ללא השדה הזה (או עם רשימה ריקה כערך) נחשבות לא מאובטחות ונדחות על ידי הפלטפורמה. הערכים צריכים להיות שמות דומיין תקינים (למשל example.com או subdomain.example.com). - הערכים הנתמכים של
ClientCertTypeהם:Ref,KeyPairAlias - הערכים הנתמכים של
Innerהם:MSCHAPv2, PAP - הערכים הנתמכים של
Outerהם:EAP-AKA, EAP-TLS,EAP-TTLS, EAP-SIM, EAP-PWD, PEAP -
Certificateobjects:- אין תמיכה ב-
Remove. במקום זאת, אפשר להשמיט את האישור בהגדרה. - אין תמיכה ב-
TrustBits.
- אין תמיכה ב-
דוגמאות
כמה רשתות Wi-Fi
בדוגמה הבאה מוצג קטע מדיניות עם שלוש רשתות Wi-Fi שמוגדרות עם תוכניות אבטחה שונות. קובץ ה-JSON של Open Network Configuration מוטמע בשדה 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 לאישורי הלקוח והשרת.
"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-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"
}
]
}