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

किसी डिवाइस पर वाई-फ़ाई नेटवर्क कॉन्फ़िगर करने के लिए, नीति का इस्तेमाल किया जा सकता है. 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_192
    • WEP-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"
      }
   ]
}