Как разработать приложение для управления мобильными устройствами в iOS

В моей компании много iOS-устройств, и я должен управлять ими централизованно, поэтому мы попытались использовать сторонние MDM-приложения, например, для airwatch, но это очень дорого.

Мы решили не использовать его и думаем о создании MDM с нуля. Мы перепробовали все решения, доступные онлайн, но я не получил никакого решения. Может кто-нибудь, пожалуйста, помогите мне с этим.

2 ответа

Решение

iOS MDM - это клиентский протокол. Итак, вы разрабатываете сервер, но не разрабатываете клиентское приложение для него. На самом деле, есть клиентское приложение, но оно разработано Apple и встроено в операционную систему.

Итак, ваш сервер отправит команду, встроенный клиент MDM получит и выполнит ее.

Вообще говоря, если вы хотите разработать сервер MDM, вам необходимо зарегистрироваться в программе Enterprise Developer Program и получить документацию по MDM.

Документация здесь поможет вам создать собственное решение mdm с нуля.

Ссылка

Некоторые другие полезные ссылки по разработке mdm сервера Ref 1, Ref 2

Вот ссылка на тэг MDM в просмотре переполнения стека, это поможет вам получить ответ на большинство вопросов и ответов.

Если вы хотите получить какие-либо разъяснения по поводу этого, оставьте комментарий здесь. Я готов помочь тебе

Обновить

обзор

  • Для управления устройством мы можем настроить его вручную с помощью приложения iOS Settings

    Но у него есть проблема с масштабируемостью и много работы по настройке каждого устройства вручную и требует физического доступа

  • Поэтому Apple представила утилиту iPCU (iPhone Configuration Utility), с помощью которой мы можем создавать профили конфигурации (.moibleconfig) и устанавливать ее через USB или OTA(через эфир).

    Но это требует взаимодействия с пользователем

  • Так, Apple представила сервисы MDM для iOS, это не требует взаимодействия с пользователем, мы можем очень легко сделать так много вещей без согласия пользователя, таких как удаленная блокировка, разблокировка, стирание, настройка почты и т. д.

    MDM - это протокол, с помощью которого вы можете удаленно управлять устройствами.

    обзор

    Изменения, которые мы вносим в приложение настроек iOS, хранятся в /var/mobile/Library/ConfigurationProfiles в виде файлов.plist вместе с профилями (.plist), установленными iPCU и MDM.

    Допустим, мы отключаем установку приложения App Store на устройстве, поэтому для этого перейдем в " Настройки" -> "Ограничения" и отключим установку App Store, чтобы параметр allowAppInstallation в конфигурации (.plist) был установлен на "ложь". Если вы настраиваете установку приложения с помощью iPCU, а также MDM, тогда для iOS мы выберем наиболее ограниченный вариант, когда конфликт возникает между профилями конфигурации профиля приложения настроек iOS, профиля iPCU и профиля MDM.

    iOS создает профиль с именем ProfileTruth.plist, объединяя все эти профили, и iOS работает с этим списком

    МДМ в основном состоит из этих вещей

    • Устройство iOS

      Это может быть любое устройство, работающее с использованием iOS. Все устройства iOS имеют встроенный клиент MDM. Он будет действовать в соответствии с инструкцией, передаваемой сервером MDM.

    • MDM сервер

      Это в основном приложение, которое размещено на приложении или веб-сервере, и оно передает команду клиенту MDM, который размещен на устройстве iOS

    • сигнализации

      Этот механизм вызывает клиента mdm с сервера, в нашем случае это APNS

К этому я приложил рабочий процесс MDM

Рабочий процесс MDM

  1. MDM-сервер отправляет уведомление с использованием APNS
  2. APNS доставляет его на устройство
  3. Встроенный клиент MDM подключается к серверу MDM
  4. При подключении MDM-сервер отправляет обратно команды, поставленные в очередь клиенту, а клиент выполняет команды, отправленные MDM-сервером, и отвечает соответствующим подтверждением на MDM-сервер.

Шаги для создания простого MDM

MDM Enrollment

Начинается с профиля регистрации MDM

В iPCU вы можете создать новый профиль, выбрав полезную нагрузку MDM

Профиль регистрации MDM

Проверить URL

 The is the URL where enrolment of the device happens. 

 i.e upon installation of profile on the device MDM client sends necessary information to the MDM server which MDM server will use to authenticate and connect with the device 

URL сервера

 Once the MDM server got the enrolment information.It can use the information to connect the device using APNS and when MDM client wakes up it connects with the URL mentioned in Server URL and Server can send back the queued commands to MDM client

Тема

Enter the subject of APNS certificate that's going to be used for MDM.

тождественность

It can be any certificate generated by Certificate Assistant but important thing is it has to be signed by globally trusted CA or in the case of self signed CA the CA has be installed in the device.

Установите профиль регистрации MDM

Вы можете установить этот профиль с помощью беспроводной связи или через USB

После установки встроенный клиент iOS подключится к серверу MDM (URL-адрес регистрации) с запросом на проверку подлинности.

PUT: / регистрация

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
     <key>MessageType</key>
     <string>Authenticate</string>
     <key>Topic</key>
     <string>com.example.mdm.pushcert</string>
     <key>UDID</key>
     <string> [ redacted ] </string>
 </dict>
 </plist>

Теперь сервер может либо принять, либо отклонить запрос на аутентификацию. Для того, чтобы принять, сервер должен ответить пустым списком.

  <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
     <plist version="1.0">
     <dict>
     </dict>
     </plist>

После получения ответа клиент MDM отправит запрос TokenUpdate.

PUT: / регистрация

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
     <key>MessageType</key>
     <string>TokenUpdate</string>
     <key>PushMagic</key>
     <string> [ redacted uuid string ] </string>
     <key>Token</key>
     <data> [ 32 byte string, base64 encoded, redacted ] </data>
     </data>
     <key>Topic</key>
     <string>com.example.mdm.pushcert</string>
     <key>UDID</key>
     <string> [ redacted ] </string>
     <key>UnlockToken</key>
     <data>
        [ long binary string encoded in base64, redacted ]
     </data>
 </dict>
 </plist>

Снова серверу необходимо отправить простой список для завершения процесса регистрации

Сервер MDM должен хранить следующие ключи на сервере

PushMagic

Сервер должен прикрепить это ко всем Push-уведомлениям, которые он отправляет для подключения клиента MDM

знак

Уникальный идентификатор, который идентифицирует устройство для APNS

UnlockToken

Ключ, используемый для сброса пароля устройства.

Управление устройством

Теперь сервер должен отправлять push-уведомления, передавая выше Token в библиотеку Token for Push-уведомлений и Payload of Pushmagic в качестве значения для ключа MDM

 {"mdm":"996ac527-9993-4a0a-8528-60b2b3c2f52b"}

См апс нет в этой полезной нагрузке

Как только устройство получает push-уведомление, клиент MDM связывается с URL-адресом сервера, а не с URL-адресом возврата со статусом бездействия

PUT: / сервер

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
     <key>Status</key>
     <string>Idle</string>
     <key>UDID</key>
     <string> [ redacted ] </string>
 </dict>
</plist> 

Затем сервер отвечает любой командой, поставленной в очередь для устройства.

Давайте посмотрим пример для блокировки устройства

 The server has to respond with command like this to the client request

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
       <key>Command</key>
       <dict>
             <key>RequestType</key>
             <string>DeviceLock</string>
       </dict>
       <key>CommandUUID</key>
       <string></string>
 </dict>
</plist>

Когда клиент MDM получает это для своего запроса о состоянии простоя, который был отправлен ранее. Он немедленно заблокирует устройство и ответит серверу следующим стандартным подтверждением.

<?xml version="1.0" encoding="UTF-8"?>
     <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
     <plist version="1.0">
     <dict>
           <key>CommandUUID</key>
           <string></string>
           <key>Status</key>
           <string>Acknowledged</string>
           <key>UDID</key>
           <string> [ redacted ] </string>
     </dict>
    </plist> 

Вы можете найти список команд здесь

Вот и все. Такой подход позволил бы сделать простую демонстрационную вещь.

Замечания:

Я постараюсь подстроиться или добавить больше контента здесь для облегчения понимания

Пожалуйста, пройдите по этой ссылке и содержанию

Об управлении мобильными устройствами

Протокол управления мобильными устройствами (MDM) позволяет системным администраторам отправлять команды управления устройствами на управляемые устройства iOS под управлением iOS 4 и более поздних версий, устройства OS X под управлением OS X v10.7 и более поздних версий и устройства Apple TV под управлением iOS 7 (Apple ТВ софт 6.0) и позже. С помощью службы MDM ИТ-администратор может проверять, устанавливать или удалять профили; удалить пароли; и начать безопасное удаление на управляемом устройстве.

Протокол MDM построен на основе HTTP, безопасности транспортного уровня (TLS) и push-уведомлений. Соответствующий протокол регистрации MDM позволяет делегировать начальный процесс регистрации отдельному серверу.

MDM использует Apple Push Notification Service (APNS) для доставки сообщения "проснуться" на управляемое устройство. Затем устройство подключается к заранее определенной веб-службе для получения команд и возврата результатов.

Для предоставления услуги MDM вашему ИТ-отделу необходимо развернуть HTTPS-сервер, который будет выполнять роль сервера MDM, а затем распространить профили, содержащие полезную нагрузку MDM, на управляемые устройства.

Управляемое устройство использует удостоверение для аутентификации на сервере MDM через TLS (SSL). Эта идентификационная информация может быть включена в профиль в качестве полезной нагрузки сертификата или может быть сгенерирована путем регистрации устройства с помощью SCEP.

Примечание. Информацию о SCEP см. В проекте спецификации SCEP, расположенном по адресу datatracker.ietf.org/doc/draft-nourse-scep/. Полезная нагрузка MDM может быть помещена в файл профиля конфигурации (.mobileconfig), распространяемый с помощью электронной почты или веб-страницы, как часть окончательного профиля конфигурации, предоставляемого беспроводной службой регистрации, или автоматически с помощью программы регистрации устройств. В каждый момент времени на устройстве может быть установлена ​​только одна полезная нагрузка MDM.

Профили конфигурации и профили обеспечения, установленные через службу MDM, называются управляемыми профилями. Эти профили автоматически удаляются при удалении полезной нагрузки MDM. Хотя служба MDM может иметь права для проверки устройства на наличие полного списка профилей конфигурации или профилей обеспечения, она может удалять только приложения, профили конфигурации и профили обеспечения, которые были изначально установлены. Учетные записи, установленные с использованием управляемых профилей, называются управляемыми учетными записями.

В дополнение к управляемым профилям вы также можете использовать MDM для установки приложений. Приложения, установленные через службу MDM, называются управляемыми приложениями. Служба MDM имеет дополнительный контроль над тем, как управляемые приложения и их данные используются на устройстве.

Устройства под управлением iOS 5 и более поздних версий могут быть определены как контролируемые, когда они готовятся к развертыванию с помощью Apple Configurator 2. Кроме того, устройства под управлением iOS 7 и более поздних версий могут контролироваться с помощью программы регистрации устройств. Контролируемое устройство предоставляет организации дополнительный контроль над его конфигурацией и ограничениями. В этом документе, если какой-либо параметр конфигурации ограничен контролируемыми устройствами, его описание отмечает это ограничение.

Если профиль не установлен с помощью Программы регистрации устройств, пользователь может удалить профиль, содержащий полезную нагрузку MDM, в любое время. Сервер MDM всегда может удалить свой собственный профиль, независимо от его прав доступа. В OS X v10.8 и более поздних версиях и iOS 5 клиент MDM делает единственную попытку связаться с сервером с помощью команды CheckOut при удалении профиля. В более ранних версиях ОС устройство не связывается с сервером MDM, когда пользователь удаляет полезную нагрузку. См. Рекомендации по MDM для получения рекомендаций по обнаружению устройств, которые больше не управляются.

Профиль, содержащий полезную нагрузку MDM, нельзя заблокировать, если он не установлен с помощью программы регистрации устройств. Однако управляемые профили, установленные через MDM, могут быть заблокированы. Все управляемые профили, установленные через MDM, удаляются при удалении основного профиля MDM, даже если они заблокированы.

С одного взгляда

Этот документ был написан для системных администраторов и системных интеграторов, которые разрабатывают программное обеспечение для управления устройствами в корпоративных средах.

Протокол регистрации MDM позволяет устройству связываться с вашим сервером. Протокол регистрации MDM используется во время инициализации для проверки соответствия устройства требованиям регистрации MDM и для информирования сервера об обновлении токена устройства устройства.

Связанная глава: протокол регистрации MDM Протокол MDM отправляет на устройство команды управления (основной) протокол MDM использует push-уведомления, чтобы сообщить управляемому устройству о выполнении определенных функций, таких как удаление приложения или удаленная очистка.

Связанная глава: Протокол управления мобильными устройствами (MDM): способ разработки полезной нагрузки Для максимальной эффективности и безопасности установите базовый профиль, который содержит чуть больше основной информации управления MDM, а затем установите другие профили на устройстве после его управления,

Связанная глава: "Лучшие практики MDM". Программа регистрации устройств позволяет настраивать устройства с помощью помощника по настройке. Программа регистрации устройств на основе HTTP предназначена для удовлетворения массовых потребностей организаций в приобретении и развертывании устройств в больших количествах без необходимости заводской настройки или предварительной настройки. устройств до развертывания.

API облачного сервиса обеспечивает управление профилями и их отображение. С помощью этого API вы можете создавать профили, обновлять профили, удалять профили, получать список устройств и связывать эти профили с конкретными устройствами.

Связанная глава: Программа регистрации устройств Программа массовых покупок позволяет назначать лицензии на приложения пользователям и устройствам Программа массовых закупок предоставляет ряд веб-сервисов, которые серверы MDM могут вызывать для связи объемных покупок с конкретным пользователем или устройством.

Связанная глава: Назначение приложений VPP Сертификаты Apple Push-уведомлений могут быть созданы с помощью портала Apple Push Certificates Прежде чем вы получите CSR от своего клиента, вы должны загрузить "Сертификат подписи MDM" и связанные с ним доверительные сертификаты через портал обеспечения iOS. Затем вы должны использовать этот сертификат для подписи сертификатов ваших клиентов.

Другие вопросы по тегам