किसी डिवाइस पर वाई-फ़ाई नेटवर्क कॉन्फ़िगर करने के लिए, नीति का इस्तेमाल किया जा सकता है. Android मैनेजमेंट एपीआई, ओपन नेटवर्क कॉन्फ़िगरेशन का इस्तेमाल करता है. यह JSON पर आधारित स्टैंडर्ड फ़ॉर्मैट है, जिसे मूल रूप से Chromium प्रोजेक्ट के हिस्से के तौर पर डेवलप किया गया था. ओपन नेटवर्क कॉन्फ़िगरेशन के बारे में पूरी जानकारी के लिए, स्पेसिफ़िकेशन देखें.
किसी नीति में ओपन नेटवर्क कॉन्फ़िगरेशन शामिल करने के लिए, Policy
संसाधन पर openNetworkConfiguration
फ़ील्ड सेट करें.
पूरी तरह से मैनेज किए जा रहे डिवाइसों के लिए, उपयोगकर्ता को अपने डिवाइस पर वाई-फ़ाई सेटिंग को मैन्युअल तरीके से कॉन्फ़िगर करने से रोका जा सकता है. इसके लिए, Policy
संसाधन में wifiConfigDisabled
को true
पर सेट करें.
इस्तेमाल की जा सकने वाली सुविधाएं
Android Management API, सिर्फ़ ओपन नेटवर्क कॉन्फ़िगरेशन स्पेसिफ़िकेशन के सबसेट के साथ काम करता है.
- टॉप-लेवल ऑब्जेक्ट:
Type
को हटाया जाना चाहिए याUnencryptedConfiguration
पर सेट किया जाना चाहिए. किसी नीति में नेटवर्क कॉन्फ़िगरेशन को एन्क्रिप्ट करने की ज़रूरत नहीं होती, क्योंकि पूरी नीति Android Management API सेवा में एन्क्रिप्ट की जाती है. इसके अलावा, पासफ़्रेज़ और निजी पासकोड जैसी संवेदनशील जानकारी के लिए, एन्क्रिप्शन की एक दूसरी लेयर भी होती है.
NetworkConfiguration
ऑब्जेक्ट:GUID
,Name
,Type
, औरWiFi
फ़ील्ड इस्तेमाल किए जा सकते हैं. साथ ही, इन सभी को भरना ज़रूरी है.ProxySettings
की वैल्यू देना ज़रूरी नहीं है. अगर इसका इस्तेमाल किया जाता है, तो सिर्फ़Manual
औरPAC
(प्रॉक्सी अपने-आप कॉन्फ़िगर होना) काम करते हैं.Type
कोWiFi
पर सेट किया जाना चाहिए. अन्य तरह के नेटवर्क काम नहीं करते.
WiFi
ऑब्जेक्ट:SSID
औरHexSSID
का इस्तेमाल किया जा सकता है. साथ ही, इनमें से कम से कम एक का इस्तेमाल करना ज़रूरी है.- अगर
HexSSID
औरSSID
, दोनों सेट हैं, तो वैल्यू एक जैसी होनी चाहिए.
- अगर
HiddenSSID
का इस्तेमाल किया जा सकता है.AllowGatewayARPPolling
का इस्तेमाल नहीं किया जा सकता।SignalStrength
का इस्तेमाल नहीं किया जा सकता।Security
की वैल्यू देना ज़रूरी है. इसके लिए, ये वैल्यू इस्तेमाल की जा सकती हैं: - कोई नहीं - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192WEP-PSK
पासवर्ड के लिए, सिर्फ़ 40-बिट (10 अंकों) या 104-बिट (26 अंकों) के पासवर्ड इस्तेमाल किए जा सकते हैं.- स्पेसिफ़िकेशन के मुताबिक,
WEP-PSK
पासफ़्रेज़,0x
प्रीफ़िक्स से शुरू होने चाहिए. हालांकि, Android फ़्रेमवर्क के साथ काम करने के लिए, इस प्रीफ़िक्स की ज़रूरत नहीं है. - MAC को रैंडमाइज़ करने का मोड सेट करने के लिए,
Hardware
याAutomatic
वैल्यू के साथ सेट की गई प्रॉपर्टीMACAddressRandomizationMode
का इस्तेमाल करें. फ़िलहाल, यह प्रॉपर्टी ओपन नेटवर्क कॉन्फ़िगरेशन (ओएनसी) स्पेसिफ़िकेशन में उपलब्ध नहीं है. हालांकि, यह AMAPI में उपलब्ध है और वाई-फ़ाई नेटवर्क कॉन्फ़िगर करते समय इसका इस्तेमाल किया जा सकता है. यह सिर्फ़ Android 13 और उसके बाद के वर्शन पर, सभी मैनेजमेंट मोड पर लागू होता है.Hardware
, नेटवर्क से कनेक्ट होने पर फ़ैक्ट्री के एमएसी पते का इस्तेमाल करता है.Automatic
की मदद से, वाई-फ़ाई फ़्रेमवर्क अपने-आप मैक पते को यादृच्छिक तौर पर बदलने की रणनीति तय करता है. यह लगातार या कभी-कभी, रैंडम तौर पर जनरेट किए गए मैक पते हो सकते हैं. इनका इस्तेमाल, नेटवर्क से कनेक्ट करते समय किया जाता है.
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
का इस्तेमाल नहीं किया जा सकता।
उदाहरण
एक से ज़्यादा वाई-फ़ाई नेटवर्क
नीति के इस उदाहरण में, अलग-अलग सुरक्षा योजनाओं के साथ कॉन्फ़िगर किए गए तीन वाई-फ़ाई नेटवर्क दिखाए गए हैं. ओपन नेटवर्क कॉन्फ़िगरेशन JSON, Policy
JSON के openNetworkConfiguration
फ़ील्ड में नेस्ट किया गया है.
"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-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
फ़ील्ड का इस्तेमाल, वाई-फ़ाई की पुष्टि करने के लिए इस्तेमाल किए जाने वाले, इंस्टॉल किए गए (DevicePolicyManager.installKeyPair
देखें) या जनरेट किए गए (DevicePolicyManager.generateKeyPair
देखें) KeyChain पासकोड के उपनाम की जानकारी देने के लिए किया जा सकता है. Android 12 और उसके बाद के वर्शन पर, ClientCertKeyPairAlias
के साथ बताए गए उपनाम वाले KeyChain पासकोड पेयर को वाई-फ़ाई नेटवर्क की पुष्टि करने के लिए अनुमति दी जाती है. साथ ही, उस वाई-फ़ाई नेटवर्क की पुष्टि करने के लिए उसका इस्तेमाल किया जाता है. Android 12 से पहले के वर्शन में, API_LEVEL
वजह के साथ nonComplianceDetail
दिखता है. अगर बताई गई कुंजी जोड़ी का उपनाम, किसी मौजूदा कुंजी से मेल नहीं खाता है, तो INVALID_VALUE
के साथ nonComplianceDetail
और 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" ], "ServerCARefs": ["abc123"], "ClientCertType": "KeyPairAlias", "ClientCertKeyPairAlias": "key-alias" }, "Security": "WPA-EAP" } } ], "Certificates": [ { "GUID": "abc123", "Type": "Server", "X509": "TWFuIGlzIGRpc3Rpbmd1a" } ] }
Security
फ़ील्ड, WPA3-Enterprise_192
भी हो सकता है. यह WPA3 192-बिट मोड के साथ कॉन्फ़िगर किया गया WPA-EAP नेटवर्क है.
"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" } ] }