नेटवर्क कॉन्फ़िगर करें

किसी डिवाइस पर वाई-फ़ाई नेटवर्क कॉन्फ़िगर करने के लिए, नीति का इस्तेमाल किया जा सकता है. 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, 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 की सूचना दी जाती है. अगर बताया गया कुंजी जोड़े का एलियास, किसी मौजूदा कुंजी से मेल नहीं खाता है, तो 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"
      }
   ]
}