Как да изпратите команда MDM DeviceLock с помощта на java

Аз съм нов в разработката на IOS MDM, използвайки услугата APN. Разработваме MDM за ios и е в начален етап. Имаме акаунт на програмист, създаден наскоро за Apple. Преминах през много уебсайтове и връзки, но все още не съм уверен как да изпратя команда към ios устройство. Преминавайки през форума по-долу, разбрах, че първо трябва да проверим състоянието на устройството и след това да изпратим командите към устройството. Изпращане на mdm полезен товар

Моето запитване е как да го направя. Не намерих кодов фрагмент в Java, който всъщност използваме, за да изпратим команда като „DeviceLock“ към ios устройство. Може ли някой да ми помогне с малък фрагмент от Java за моята процедура, така че да мога да използвам същия код, за да прилагам политики и към устройствата.

Моля, помогнете... Благодаря за четенето.


person Samreen    schedule 23.07.2014    source източник
comment
Добре дошли в stackoverflow. Препоръчително е да преминете през stackoverflow.com/help/how-to-ask   -  person Nagama Inamdar    schedule 23.07.2014
comment
Завършихте ли внедряването. Можете ли да ми предложите как сървърът взаимодейства с устройството и устройството със сървъра под формата на заявка. Това означава под каква форма изпращате команда от сървъра и как проверявате дали командата е изпълнена и изпращате обратна връзка към устройството.   -  person Imran    schedule 25.09.2014
comment
@Imran : Здравейте, извинете за късния отговор, ако приемем, че сте преминали през записването на устройството и отговаряте на вашите въпроси. Моля, намерете по-долу моите коментари в Актуализирано.   -  person Samreen    schedule 29.09.2014


Отговори (2)


Актуализирано:

  1. За да изпратим каквато и да е команда към устройството, първо трябва да инсталираме MDM профила в профилите на устройството, който ще съдържа URL адрес на сървъра, който ще се използва от устройството за запитване за команди, когато устройството получи насочено известие.

  2. Вижте http://media.blackhat.com/bh-us-11/Schuetz/BH_US_11_Schuetz_InsideAppleMDM_WP.pdf за подробно записване вижте също раздела „Изпращане на насочени известия“ и разделите след него от връзката по-горе за подробни команди на устройството.

  3. За да изпратим насочено известие, трябва да имаме apns push сертификат, който можем да създадем от портала за самоличност на Apple, препратка: http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning

  4. За mdm изпращаме полезни данни за насочени известия към APN като {mdm: "PushMagicToken-of-device"}

  5. Когато насоченото известие бъде получено от устройството, то ще се свърже с url-адреса на сървъра на mdm сървъра, за да изпълни командата.

Отговарям на вашите въпроси: (P.S. Използвах Java за комуникация)

Q1. „Можете ли да ми предложите как сървърът взаимодейства с устройството и устройството със сървъра под формата на заявка

Отговор: Устройството ще взаимодейства със сървъра, когато получи насочено известие от APN. Той ще се свърже с URL адреса на ключа ServerUrl, който предоставяте в полезния товар на mdm.

Това е тип метод на заявка PUT, устройството изпраща състояние на неактивност към сървъра във формат plist.

<?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>

Цялата комуникация с устройството се извършва с помощта на Plist (формат на списък със свойства), устройството разбира този формат лесно.

В2: „Това означава под каква форма изпращате команда от сървъра и как проверявате дали командата е изпълнена и изпращате обратна връзка към устройството

Сървърът също изпраща команда до устройството под формата на plist. Например: По-долу е plist, изпратен за команда DeviceLock от моя mdm сървър, когато устройството изпрати отговор за състояние на неактивност.

<?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>ph_mdm_command_uuid</string>
    </dict>
</plist>

Моля, обърнете внимание: всяка команда има поле CommandUUID, което можем да използваме за проверка на текущите команди в края на сървъра, то поддържа текущата сесия. Каквато и команда да изпратим до устройството с CommandUUID, устройството отговаря със състоянието на тази команда със същия CommandUUID.

Така че в отговор на DeviceLock Command RequestType, устройството изпраща обратно отговор:

<?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>ph_mdm_command_uuid</string>
    <key>Status</key>
    <string>Acknowledged</string>
    <key>UDID</key>
    <string>device_udid</string>
</dict>
</plist>

Тук CommandUUID е подобен на този, изпратен от сървъра, UDID е udid на устройството и състоянието е Потвърдено, което означава, че командата е изпълнена успешно на устройството.

Забележка: Всичко това се изпраща в отговора на Java под формата на байтове. Ако имахте предвид кой формат изпращах отговора на устройството.

Предполагам, че изпращането на обратна връзка до устройството означава или изпращане на следваща заявка, или спиране на запитването: Подобни стъпки трябва да се следват, ако имате списък с команди, които да бъдат изпратени на устройството, тъй като в момента можем да изпращаме само една команда наведнъж. Ако няма команди за изпълнение и искате устройството да спре анкетирането, трябва да изпратите празен отговор. Вижте iOS MDM - Как да затворите или спрете връзката, след като устройството отговори с валиден отговор за повече подробности.

Надяваме се това да разсее съмненията. Ако сте във фазата на записване, моля, прегледайте коментарите на @Victor, преди да следвате това. Уведомете ме в случай на някакви разяснения. В момента имам успешно инсталирана настройка на mdm на iOS устройство.

Благодаря.

person Samreen    schedule 29.09.2014
comment
Благодаря за отговора и се извинявам за късния отговор, тъй като бях в отпуск. Какво ще стане, ако трябва да напиша MDM сървъра в ASP.NET. Каква всъщност разлика мислите, че ще има в настройката на сървъра, ако отида с вашия процес и MDM сървър в ASP.NET. - person Imran; 10.10.2014
comment
@Imran: Не съм запознат с ASP.NET като технология, но що се отнася до комуникацията на устройствата с iOS и заявката и отговора, тя винаги ще бъде във формат plist, независимо каква сървърна технология използваме. По-скоро би бил подобен на Java MDM Server според моите познания. - person Samreen; 10.10.2014
comment
@Imran: Просто трябва да следвате това, което се казва в документа. Всяка стъпка. Не зависи от технологията, която използвате. Кодът на Python е само за справка. Теоретичната част е това, което трябва да следвате и да напишете сървърния код във вашата специфична сървърна технология. - person Samreen; 20.10.2014
comment
Здравей Самрийн. Благодаря за оказаната помощ. Тествах всички команди и те работят добре за мен, но има голям проблем между тях. Когато инсталирам профила на устройството, той работи добре и веднага след инсталирането изпращам команда (кажи заключване) към устройството, използвайки пътя между сървъра и устройството, създаден по време на инсталирането на профила. Така че проверих всички команди по време на инсталирането на профила. Но когато се опитам да свържа mdm сървъра към устройството чрез APNS, тогава не отговаря. Заседнах в края. Можете ли да предложите какво може да не е наред? - person Imran; 02.01.2015
comment
Здравейте Имран, бих искал да знам дали след инсталирането на профила на устройството получихте Token, PushMagic, UnlockToken. Всеки път, когато искаме да се свържем с устройството чрез APNS, трябва да изпратим Token и PushMagic заедно с apns сертификата и паролата - person Samreen; 06.05.2015
comment
Здравей Samreen, съжалявам за забавянето... По време на процеса на инсталиране на MDM профил на устройството, Устройството първо пингва към MDM сървъра с plist за удостоверяване, който съдържа UDID (уникален идентификатор на устройството), който трябва да запазим в нашия база данни, след което Устройството пингва към MDM сървър с TokenUpdate plist, който съдържа UDID, PushMagic, Token и UnlockToken. - person Imran; 09.05.2015
comment
Хей Имран, Абсолютно прав.. Използвайте Token и PushMagic, за да изпратите команди до APNS. APns вътрешно ще изпрати команда до вашето устройство и устройството ще се свърже с вашия mdm-serverUrl, който сте предоставили при инсталирането на профила на устройството. Можете да използвате IPcu, за да проверите дали вашето устройство получава команди или не.. Ако получи команда в конзолните регистрационни файлове на iPCu, ще видите нещо като това MDM: Изпитване на MDM сървър https: you-serverUrl за следващата команда. serverUrl винаги ще бъде https и устройството трябва да има сертификат на сървъра. Кажете ми вашите резултати? - person Samreen; 11.05.2015
comment
Здравейте Samreen, Можете ли да видите MDM: Изпитване на MDM сървър https: you-serverUrl за следващата команда. Ако отговорът е да, след това поставете някои регистрационни файлове на сървъра URL, за да проверите заявката, която идва от устройството, устройството основно иска със състояние Idle plist заедно с UDID.BTW кой изход имате предвид? - person Imran; 11.05.2015
comment
Здравей Имран, имаме пълноценна работеща MDM система, внедрена за iOS устройство. Устройството ще изпрати текущото състояние на mdm. за първи път ще изпрати състояние на неактивност. В отговор на това трябва да изпратите текущата си команда, която трябва да бъде изпратена. Това кодиране трябва да направите от ваша страна, т.е. MDM. Вашето внедряване, базирано на вашата система.. зависи единствено от вашето приложение.. Резултатът, който имах предвид, беше за регистрационните файлове на конзолата.. - person Samreen; 12.05.2015
comment
Кой лог на конзолата. iPhone или MDM сървър? - person Imran; 13.05.2015
comment
Здравей Самрийн. Не получих 4-та точка. Как да изпратим полезен товар за насочени известия към APN като {mdm: PushMagicToken-of-device}? Съжалявам, че в момента съм в начален етап. Как да получим състоянието на неактивност на устройството? - person sau; 05.06.2015
comment
Здравейте sau, успешно ли инсталирахте mdm профил на вашето устройство?? Когато изпращаме полезния товар за конфигурацията на mdm към устройството, ние изпращаме поле за тема, което е UID във формат като com.apple.mgmt.External.ebad.... получен от портала за самоличност на apple. След като профилът е инсталиран на устройството. Устройството изпраща Push magic token и deviceToken към mdm сървър, който се използва за изпращане до APNS във формат {mdm: PushMagic}. Моля, върнете се в случай на проблеми, които сте открили. Получаването на статус IDle все още е далеч от изпълнението, ако сте в начален етап. - person Samreen; 08.06.2015
comment
Здравей Самрийн. Радвам се да получа отговор от вас. Много благодаря. Направих цялата част със сертификатите от тук github.com/project-imas/mdm-server. Но не мога да кодирам. Бихте ли ми казали всички начални стъпки, за които трябва да напиша код за MDM сървър в PHP. Прочетох цялата ви документация за stackoverflow. Ще го прочета отново. Разбрах малко теоретични части. Но не мога да започна да кодирам части. - person sau; 08.06.2015
comment
Здравей sau, радвам се да чуя, че създаването на сертификат е направено.. Аз съм напълно наивен за PHP. Говорейки как да го внедрите, вижте този блог: avibirnale.blogspot .in/2013/05/ помага много. - person Samreen; 09.06.2015
comment
@Samreen..Здравей, кой сървър използваш за MDM? Първоначално използвахме специален сървър, но сега се прехвърляме към Microsoft Azure. Така че инсталирането на профила е неуспешно, когато го инсталираме (Неуспешно инсталиране на профила). Може би azure има проблем с PUT заявката, който разбрах досега. Дадохте ли някаква представа за това? Трябва ли да създаваме нови сертификати? - person Imran; 25.06.2015
comment
@Samreen... Работи. Беше малко по-различен проблем в azure. Трябваше да конфигурираме PUT заявка върху IIS за всички уеб приложения в Azure, тъй като използваме SNI за нашите приложения. т.е. премахване на WebDAV от манипулатори и WebDAVModule от модули във файла webcofig. Благодаря за цялата ви помощ. - person Imran; 29.06.2015

Не мисля, че има начин да отговоря на въпроса ви. Не е ясно какъв е вашият проблем и е невъзможно да се обясни целият MDM тук на stackoverflow.

Бих препоръчал да прочетете три документа (поне няколко пъти):

Най-общо казано, невъзможно е да се разработи MDM без задълбочено разбиране на поне първите два документа.

Има няколко реализации с отворен код, които можете да разгледате:

  • Мениджър на профили (включен в OS X Server). това е в някаква комбинация от рубин + двоичен файл

  • WSO2

Мога да се закълна, че видях изпълнението на MDM с отворен код на Java, но не мога да го намеря сега.

person Victor Ronin    schedule 23.07.2014
comment
Благодаря, Виктор.. Прегледах всички тези документи по-рано и също препратих кода WSO2 за първоначално разбиране. Кодовата база на WSO2 има по-голямата част от db и взаимодействието между устройствата, написани на javascript (по-точно jQuery).. Съжалявам, че не можах да се изясня. Единственият ми проблем е. Как моят java MDM сървър ще взаимодейства с IOS устройството. Внедрихме тази java за Android устройство, като има android клиент от страната на устройството, за да можем да обработваме взаимодействията с Java MDM сървъра. Но тъй като IOS има вграден MDM, който може директно да взаимодейства с нашия MDM сървър на трета страна. - person Samreen; 24.07.2014
comment
Моята заявка е: Препращайки към WSO2 код, намерих PushNotification към APNS сървър, използвайки по-долу кода ApnsService service = APNS.newService().withCert(AppConfigurations.getConfigEntry(AppConfigurations.APNS_PUSH_CERT_PATH),AppConfigurations.getConfigEntry(AppConfigurations.APNS_PUSH_CERT_PASSWORD)).withProductionDe оцеляване () .build(); service.start(); service.testConnection(); Низ mdmPayload = APNS.newPayload().mdm(pushMagicToken).build(); service.push(deviceToken, mdmPayload); тук deviceToken и pushMagicToken са получени при записване на IOS устройството предполагам. - person Samreen; 24.07.2014
comment
Този код се използва за изпращане на насочени известия към APNS сървър (за проверка на състоянието на устройството), а не към IOS устройството. Имам нужда от действителния код, който показва как да изпратя действителната команда, например команда DeviceLock към IOS устройството, което не можах да намеря в нито една от публикациите. Всички документи се отнасят само за това, което можем да изпратим на устройството, но не и как. Имам нужда от внедряване как за стартиране. Моля помогнете. - person Samreen; 24.07.2014
comment
О... разбрах. Идеята е следната. Вашето устройство ще ви даде deviceToken и pushMagicToken (както споменахте). Ще изпратите насочено известие до APNS, когато имате неизпълнени команди на сървъра. APNS ще препрати това насочено известие към устройство (към вградения MDM клиент, който споменахте). И този MDM клиент ще се свърже с вашия сървър. Той ще направи GET на ServerURL, който е дефиниран в полезен товар на MDM, който е инсталиран по време на записването. По този начин можете да мислите за насочено известие като за заявка за повикване до дома, която изпращате чрез APNS до устройство. - person Victor Ronin; 24.07.2014
comment
Добре!! Благодаря Виктор.. Тези твърдения почти изчистиха съмненията ми. Така че имаме URL адрес на сървъра, който предаваме, докато се регистрираме, и този URL адрес ще ни помогне да направим по-голямата част от разговора между устройството и MDM сървъра. WSO2 кодът наистина има спомената конфигурация за url ios-enroll-url, ios-profile-url, ios-checkin-url, ios-server-url (така че това ще се използва за бъдещи взаимодействия) Благодаря много за повечето ми начални съмненията са ясни.. Може би ще дойдат още, когато започна да прилагам.. Беше голяма помощ, Виктор. :) - person Samreen; 25.07.2014
comment
Вярвам, че в техния случай enroll и URL адресът на профила е за OTA записване, checkin е за MDM записване, а URL адресът на сървъра е за основна комуникация. - person Victor Ronin; 25.07.2014
comment
Да, това е правилно... регистрирането и профилът ще се използват само при регистриране на устройство.. URL адресът за регистрация ще помогне за mdm взаимодействия, като например когато се случи актуализирането на токена и URL адресът на сървъра е за основна комуникация. - person Samreen; 28.07.2014