إعداد الشبكات

يمكنك استخدام السياسة لإعداد شبكات Wi-Fi على جهاز. تستخدم واجهة برمجة التطبيقات Android Management API تنسيق Open Network Configuration، وهو تنسيق عادي يستند إلى JSON وتم تطويره في الأصل كجزء من مشروع Chromium.

لتضمين إعدادات شبكة مفتوحة في إحدى السياسات، اضبط الحقل openNetworkConfiguration في مصدر Policy.

بالنسبة إلى الأجهزة المُدارة بالكامل، يمكنك اختياريًا منع المستخدم من ضبط إعدادات Wi-Fi يدويًا على جهازه عن طريق ضبط wifiConfigDisabled على true في مصدر Policy.

الميزات المتاحة

لا تتوافق واجهة برمجة التطبيقات Android Management API إلا مع مجموعة فرعية من مواصفات Open Network Configuration.

  • عنصر المستوى الأعلى:
    • يجب حذف Type أو ضبطه على UnencryptedConfiguration. لا حاجة إلى تشفير إعدادات الشبكة ضمن إحدى السياسات لأنّ السياسة بأكملها مشفّرة ضمن خدمة Android Management API. بالإضافة إلى ذلك، هناك طبقة ثانية من التشفير للمعلومات الحسّاسة، مثل عبارات المرور والمفاتيح الخاصة.
  • NetworkConfiguration عناصر:
    • GUID وName وType وWiFi هي حقول متوافقة، وكلها مطلوبة.
    • ProxySettings هو حقل اختياري. في حال استخدام هذا الخيار، لن يتم توفير سوى Manual وPAC (الإعداد التلقائي للخادم الوكيل).
    • يجب ضبط Type على WiFi. لا تتوافق مع الأنواع الأخرى من الشبكات.
  • WiFi عناصر:
    • تتوفّر السمتان SSID وHexSSID، ويجب توفير إحداهما على الأقل.
      • في حال ضبط كل من HexSSID وSSID، يجب أن تكون القيم متسقة.
    • HiddenSSID متاح.
    • ‫"AllowGatewayARPPolling" غير متاح
    • ‫"SignalStrength" غير متاح
    • AutoConnect: يحدّد هذا الحقل ما إذا كانت الشبكة مفعّلة تلقائيًا. لا يرتبط هذا الإعداد بخيار الاتصال التلقائي لكل شبكة متاح للمستخدمين في إعدادات Wi-Fi الخاصة بالجهاز.
      • إذا تم ضبطها على true، تكون الشبكة مفعّلة، ما يعني أنّه يمكن للجهاز الاتصال بها تلقائيًا بدون أن يختارها المستخدم بشكل صريح في إعدادات Wi-Fi، إلا إذا أوقف المستخدم خيار الاتصال التلقائي بهذه الشبكة.
      • في حال ضبطها على false، تتم إضافة الشبكة إلى قائمة الشبكات المحفوظة ولكن لا يتم تفعيلها. لا يتصل الجهاز تلقائيًا بالشبكة. لكي يتصل الجهاز بالشبكة، على المستخدم اختيار الشبكة يدويًا مرة واحدة من إعدادات Wi-Fi. بعد الاتصال اليدوي الأول، يتم التعامل مع الشبكة على أنّها مفعّلة ويمكن للجهاز الاتصال بها تلقائيًا ما لم يوقف المستخدم خيار الاتصال التلقائي بهذه الشبكة.
    • يجب إدخال قيمة 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. هذه السمة غير متاحة في مواصفات Open Network Configuration (ONC) ولكنها متوفّرة في واجهة برمجة التطبيقات Android Management API ويمكن تحديدها أثناء إعداد شبكات Wi-Fi. ينطبق ذلك على الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث في جميع أوضاع الإدارة.
    • Hardware يستخدم عنوان MAC الأصلي عند الاتصال بالشبكة.
    • تتيح السمة Automatic لإطار عمل Wi-Fi تحديد استراتيجية عشوائية لعنوان MAC تلقائيًا. يمكن أن تكون عناوين MAC هذه دائمة أو غير دائمة يتم إنشاؤها بشكل عشوائي ويتم استخدامها أثناء الاتصال بالشبكة.
  • عناصر EAP:
  • ‫"ClientCertPattern" غير متاح
  • لا يمكن إيقاف هذه الميزة لأنّه يتم حفظ بيانات الاعتماد دائمًا.SaveCredentials
  • ‫"UseSystemCAs" غير متاح
  • ServerCARef متاح.
  • ServerCARefs متاح.
  • DomainSuffixMatch متاح. تُعدّ إعدادات شبكة Wi-Fi الخاصة بالمؤسسة التي لا تتضمّن هذا الحقل (أو تتضمّن قائمة فارغة كقيمة) غير آمنة وترفضها المنصة. يجب أن تكون القيم أسماء نطاقات صالحة (مثل "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 متعددة

تعرض هذه الفقرة من السياسة ثلاث شبكات 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"
               ],
               "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 لتحديد الاسم المستعار لمفتاح KeyChain مثبَّت (راجِع DevicePolicyManager.installKeyPair) أو تم إنشاؤه (راجِع DevicePolicyManager.generateKeyPair) ويُستخدم للمصادقة على شبكة Wi-Fi. في نظام التشغيل Android 12 والإصدارات الأحدث، يتم منح مفتاحَي تشفير KeyChain اللذين يتضمّنان الاسم المستعار المحدّد باستخدام ClientCertKeyPairAlias لإجراء المصادقة مع شبكات Wi-Fi، ويتم استخدامهما لإجراء المصادقة مع شبكة Wi-Fi المعنية. قبل الإصدار 12 من نظام التشغيل Android، يتم تسجيل nonComplianceDetail مع السبب API_LEVEL. يتم تسجيل الخطأ A 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"
               ],
               "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"
      }
   ]
}