ניתן להשתמש במדיניות כדי להגדיר רשתות Wi-Fi במכשיר. מכשיר Android ב-Management API נעשה שימוש ב-Open Network Configuration (הגדרת רשת פתוחה), בפורמט סטנדרטי מבוסס 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
(הגדרה אוטומטית של שרת Proxy) נתמכים.- הערך של
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 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
. - יש תמיכה ב-
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 שהוגדרו עם
תוכניות אבטחה שונות. קובץ ה-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
לאישורי הלקוח והשרת.
"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" } ] }