می توانید از خط مشی برای پیکربندی شبکه های Wi-Fi در دستگاه استفاده کنید. API مدیریت Android از پیکربندی شبکه باز، یک قالب استاندارد مبتنی بر JSON استفاده میکند که در ابتدا به عنوان بخشی از پروژه Chromium توسعه داده شد. برای جزئیات کامل در مورد پیکربندی شبکه باز به مشخصات مراجعه کنید.
برای گنجاندن یک پیکربندی شبکه باز در یک خط مشی، فیلد openNetworkConfiguration
را در یک منبع Policy
تنظیم کنید.
برای دستگاههای کاملاً مدیریتشده، میتوانید با تنظیم wifiConfigDisabled
روی true
در منبع Policy
، بهصورت اختیاری از پیکربندی دستی تنظیمات Wi-Fi روی دستگاه خود توسط کاربر جلوگیری کنید.
ویژگی های پشتیبانی شده
API مدیریت Android تنها از زیرمجموعهای از مشخصات پیکربندی شبکه باز پشتیبانی میکند.
- شی سطح بالا:
-
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 ارائه شده است و می توان آن را در هنگام پیکربندی شبکه های WiFi مشخص کرد. این فقط برای 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 را نشان می دهد که با طرح های امنیتی مختلف پیکربندی شده اند. Open Network Configuration 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
استفاده میشود که برای KeyPair استفاده میشود استفاده کرد. در اندروید 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 است که با حالت 192 بیتی WPA3 پیکربندی شده است.
"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" } ] }