किसी डिवाइस पर वाई-फ़ाई नेटवर्क कॉन्फ़िगर करने के लिए, नीति का इस्तेमाल किया जा सकता है. Android Management API, ओपन नेटवर्क कॉन्फ़िगरेशन का इस्तेमाल करता है. यह 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का इस्तेमाल नहीं किया जा सकता।AutoConnect: इस फ़ील्ड से यह तय होता है कि नेटवर्क अपने-आप चालू होगा या नहीं. यह सेटिंग, डिवाइस की वाई-फ़ाई सेटिंग में जाकर, हर नेटवर्क के लिए अपने-आप कनेक्ट होने के विकल्प से अलग होती है.- अगर इसे
trueपर सेट किया जाता है, तो नेटवर्क चालू हो जाता है. इसका मतलब है कि डिवाइस, वाई-फ़ाई सेटिंग में उपयोगकर्ता के चुने बिना ही इससे अपने-आप कनेक्ट हो सकता है. हालांकि, ऐसा तब तक होता है, जब तक उपयोगकर्ता इस नेटवर्क के लिए अपने-आप कनेक्ट होने की सुविधा बंद नहीं कर देता. falseपर सेट करने पर, नेटवर्क को सेव किए गए नेटवर्क की सूची में जोड़ दिया जाता है, लेकिन इसे चालू नहीं किया जाता. डिवाइस इससे अपने-आप कनेक्ट नहीं होता. डिवाइस को नेटवर्क से कनेक्ट करने के लिए, उपयोगकर्ता को वाई-फ़ाई सेटिंग में जाकर, नेटवर्क को एक बार मैन्युअल तरीके से चुनना होगा. पहली बार मैन्युअल तरीके से कनेक्ट करने के बाद, नेटवर्क को चालू माना जाता है. साथ ही, डिवाइस इससे अपने-आप कनेक्ट हो सकता है. हालांकि, ऐसा तब तक होता है, जब तक उपयोगकर्ता इस नेटवर्क के लिए, अपने-आप कनेक्ट होने की सुविधा बंद न कर दे.
- अगर इसे
Securityएट्रिब्यूट की वैल्यू देना ज़रूरी है. इसके लिए, इन वैल्यू का इस्तेमाल किया जा सकता है: - None - 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पर सेट करें. यह प्रॉपर्टी, ओपन नेटवर्क कॉन्फ़िगरेशन (ओएनसी) स्पेसिफ़िकेशन में उपलब्ध नहीं है. हालांकि, यह AMAPI में उपलब्ध है और वाई-फ़ाई नेटवर्क कॉन्फ़िगर करते समय इसे सेट किया जा सकता है. यह सुविधा, Android 13 या इसके बाद के वर्शन वाले डिवाइसों पर, सभी मैनेजमेंट मोड के लिए उपलब्ध है.Hardwareनेटवर्क से कनेक्ट होने पर, फ़ैक्ट्री एमएसी पते का इस्तेमाल करता है.Automaticसे, वाई-फ़ाई फ़्रेमवर्क को यह तय करने की अनुमति मिलती है कि मैक पते को रैंडम बनाने की रणनीति क्या होगी. ये स्थायी या अस्थायी तौर पर जनरेट किए गए एमएसी पते हो सकते हैं. इनका इस्तेमाल नेटवर्क से कनेक्ट करते समय किया जाता है.
EAPऑब्जेक्ट:ClientCertPatternका इस्तेमाल नहीं किया जा सकता।SaveCredentialsफ़ंक्शन का इस्तेमाल नहीं किया जा सकता, क्योंकि क्रेडेंशियल हमेशा सेव किए जाते हैं.UseSystemCAsका इस्तेमाल नहीं किया जा सकता।ServerCARefका इस्तेमाल किया जा सकता है.ServerCARefsका इस्तेमाल किया जा सकता है.DomainSuffixMatchका इस्तेमाल किया जा सकता है. इस फ़ील्ड के बिना (या वैल्यू के तौर पर खाली सूची के साथ) एंटरप्राइज़ वायरलेस कॉन्फ़िगरेशन को असुरक्षित माना जाता है. साथ ही, प्लैटफ़ॉर्म से अस्वीकार कर दिया जाता है. वैल्यू, मान्य डोमेन नेम होने चाहिए. जैसे, "example.com", "subdomain.example.com".ClientCertTypeएट्रिब्यूट के लिए, ये वैल्यू इस्तेमाल की जा सकती हैं:Ref,KeyPairAliasInnerएट्रिब्यूट के लिए, ये वैल्यू इस्तेमाल की जा सकती हैं:MSCHAPv2,PAPOuterएट्रिब्यूट के लिए, इन वैल्यू का इस्तेमाल किया जा सकता है:EAP-AKA,EAP-TLS,EAP-TTLS,EAP-SIM,PEAPCertificateऑब्जेक्ट: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 की सूचना दी जाती है. अगर बताया गया कुंजी जोड़े का एलियास, किसी मौजूदा कुंजी से मेल नहीं खाता है, तो nonComplianceDetail
INVALID_VALUE
वजह और
ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY
वजह के साथ A की रिपोर्ट की जाती है. नीचे नीति का एक उदाहरण दिया गया है:
"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"
}
]
}