web-dev-qa-db-ja.com

iOSでモバイルデバイス管理アプリケーションを開発する方法

私の会社には多くのiOSデバイスがあり、それらを集中管理する必要があるため、たとえばairwatchのサードパーティMDMアプリケーションを使用しようとしましたが、非常にコストがかかります。

使用しないことにし、MDMを最初から作成することを検討しています。オンラインで入手できるすべてのソリューションを試しましたが、解決策が見つかりませんでした。誰かがこれを手伝ってくれませんか。

18
Venky

iOSMDMはクライアントレスプロトコルです。したがって、サーバーを開発しますが、そのためのクライアントアプリケーションは開発しません。実際にはクライアントアプリがありますが、それはAppleによって開発され、オペレーティングシステムに組み込まれています。

したがって、サーバーはコマンドを送信し、組み込みのMDMクライアントはそれを受信して​​実行します。

一般的に、MDMサーバーを開発する場合は、Enterprise Developer Programに登録して、MDMドキュメントを入手する必要があります。

ドキュメント ここ それはあなたが最初からあなた自身のmdmソリューションを作成するのを助けるでしょう私は信じます

参考

Mdmサーバーの開発に関するその他の役立つリンク 参照1参照2

これが MDMタグ へのリンクです。スタックオーバーフローで参照すると、ほとんどのFAQの回答を得るのに役立ちます。

これを行うための説明が必要な場合は、以下のコメントをご覧ください。私はあなたを助ける準備ができています

更新

概要

  • デバイスを管理するために、iOS設定アプリを使用して手動で構成できます

    ただし、スケーラビリティの問題があり、すべてのデバイスを手動で構成する作業が多く、物理的なアクセスが必要です。

  • だからApple導入 iPC (iPhone構成ユーティリティ)ツールを使用して構成プロファイル(.moibleconfig)を作成し、USBまたはOTA(無線)経由でインストールできます)

    ただし、ユーザーの操作が必要です

  • したがって、Apple iOS用のMDMサービスが導入されました。ユーザーの操作は必要ありません。リモートロック、ロック解除、ワイプ、メールの構成など、ユーザーの同意なしに非常に簡単に多くのことを実行できます...

    MDMは基本的に、デバイスをリモートで管理できるプロトコルです。

    概要概要

    IOS設定アプリで行った変更は、/ var/mobile/Library/ConfigurationProfilesにiPCUおよびMDMによってインストールされたプロファイル(.plist)とともに.plistファイルとして保存されます

    デバイスのApp Storeアプリのインストールをオフにして、設定->制限に移動して、App StoreのインストールをオフにするとしますallowAppInstallationはその構成(.plist)でfalseになります。たとえば、iPCUとMDMを使用してアプリのインストールを構成している場合、iOSでは、構成間で競合が発生したときに最も制限の厳しいものを使用します。 iOS設定アプリプロファイル、iPCUプロファイルおよびMDMプロファイルのプロファイル。

    iOSは、このすべてのプロファイルをマージしてProfileTruth.plistというプロファイルを作成し、iOSはこのplistに関して機能します

    MDMは基本的にこれらのもので構成されています

    • iOSデバイス

      これは、iOSを使用して実行する任意のデバイスにすることができます。すべてのiOSデバイスには、組み込みのMDMクライアントがあります。MDMサーバーからの指示に基づいて動作します

    • MDMサーバー

      基本的には、アプリケーションまたはWebサーバーでホストされているアプリケーションであり、iOSデバイスでホストされているMDMクライアントにコマンドをフィードします。

    • シグナリング

      これは、サーバーからmdmクライアントを呼び出すメカニズムです。この場合はAPNSです。

これでMDMワークフローを添付しました

MDM Workflow

  1. MDMサーバーはAPNSを使用して通知を送信します
  2. APNSはそれをデバイスに配信します
  3. 組み込みのMDMクライアントがMDMサーバーに接続します
  4. 接続すると、MDMサーバーはクライアントにキューイングされたコマンドを送り返し、クライアントはMDMサーバーから送信されたコマンドに基づいて動作し、MDMサーバーに適切な確認応答で応答します。

単純なMDMを作成する手順

MDM登録

MDM登録プロファイルから始まります

IPCUでは、MDMペイロードを選択して新しいプロファイルを作成できます

MDM Enrolment Profile

チェックイン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.

ID

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ビルトインクライアントはAuthenticateリクエストでMDMサーバー(チェックインURL)に接続します

PUT:/ checkin

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

これで、サーバーはAuthenticateリクエストを受け入れるか拒否することができます。サーバーを受け入れるには、空白の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:/ checkin

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

繰り返しますが、サーバーは登録プロセスを完了するためにプレーンなplistを送信する必要があります

MDMサーバーは次のキーをサーバーに保存する必要があります

PushMagic

サーバーは、これをMDMクライアントに接続するために送信するすべてのプッシュ通知に添付する必要があります

トークン

APNSに対してデバイスを識別する一意のID

UnlockToken

デバイスのパスコードをクリアするために使用されるキー。

デバイスの管理

これで、サーバーは上記のTokenをプッシュ通知ライブラリのトークンに渡し、Pushmagicのペイロードをキー[〜#〜] mdm [〜#〜]

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

apsがこのペイロードに存在しないことを参照してください

デバイスがプッシュ通知を受信すると、MDMクライアントはチェックインURLではなくサーバーURLステータスアイドル

PUT:/ server

 <?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クライアントが以前に送信されたstatus idleリクエストに対してこれを受信すると、デバイスをすぐにロックし、次の標準の確認応答でサーバーに応答します

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

ここにいくつかのコマンドのリストがあります

enter image description here

これですべてです。このアプローチでは、簡単なデモが行われます。

注意:

理解しやすいように、ここでコンテンツを微調整または追加してみます

44
Durai Amuthan.H

これを通過してください link とコンテンツ

モバイルデバイス管理について

モバイルデバイス管理(MDM)プロトコルは、システム管理者がiOS 4以降を実行しているマネージドiOSデバイス、OS Xv10.7以降を実行しているOSXデバイス、およびAppleTVにデバイス管理コマンドを送信する方法を提供します。 iOS 7(Apple TVソフトウェア6.0)以降を実行しているデバイス。 IT管​​理者は、MDMサービスを通じて、プロファイルを検査、インストール、または削除できます。パスコードを削除します。管理対象デバイスで安全な消去を開始します。

MDMプロトコルは、HTTP、トランスポート層セキュリティ(TLS)、およびプッシュ通知の上に構築されています。関連するMDMチェックインプロトコルは、初期登録プロセスを別のサーバーに委任する方法を提供します。

MDMは、Appleプッシュ通知サービス(APNS)を使用して、管理対象デバイスに「ウェイクアップ」メッセージを配信します。次に、デバイスは所定のWebサービスに接続してコマンドを取得し、結果を返します。

MDMサービスを提供するには、IT部門がHTTPSサーバーを展開してMDMサーバーとして機能させ、MDMペイロードを含むプロファイルを管理対象デバイスに配布する必要があります。

管理対象デバイスは、IDを使用して、TLS(SSL)を介してMDMサーバーに対して自身を認証します。このIDは、証明書ペイロードとしてプロファイルに含めることも、SCEPでデバイスを登録して生成することもできます。

注:SCEPの詳細については、datatracker.ietf.org/doc/draft-nourse-scep /にあるドラフトSCEP仕様を参照してください。 MDMペイロードは、電子メールまたはWebページを使用して配布される構成プロファイル(.mobileconfig)ファイル内に、無線登録サービスによって配信される最終構成プロファイルの一部として、またはデバイス登録プログラムを使用して自動的に配置できます。一度に1つのMDMペイロードのみをデバイスにインストールできます。

MDMサービスを介してインストールされる構成プロファイルとプロビジョニングプロファイルは、管理対象プロファイルと呼ばれます。これらのプロファイルは、MDMペイロードが削除されると自動的に削除されます。 MDMサービスは、構成プロファイルまたはプロビジョニングプロファイルの完全なリストについてデバイスを検査する権限を持っている場合がありますが、最初にインストールしたアプリ、構成プロファイル、およびプロビジョニングプロファイルのみを削除できます。管理プロファイルを使用してインストールされたアカウントは、管理アカウントと呼ばれます。

管理されたプロファイルに加えて、MDMを使用してアプリをインストールすることもできます。 MDMサービスを介してインストールされたアプリは、管理対象アプリと呼ばれます。 MDMサービスは、管理対象アプリとそのデータがデバイスでどのように使用されるかをさらに制御します。

IOS 5以降を実行しているデバイスは、Apple Configurator 2を使用して展開の準備をしているときに、監視対象として指定できます。さらに、iOS 7以降を実行しているデバイスは、デバイス登録プログラムを使用して監視できます。監視対象デバイスは、組織にその構成と制限に対する追加の制御を提供します。このドキュメントでは、構成オプションが監視対象デバイスに制限されている場合、その説明はその制限を示しています。

プロファイルがデバイス登録プログラムを使用してインストールされていない限り、ユーザーはいつでもMDMペイロードを含むプロファイルを削除できます。 MDMサーバーは、アクセス権に関係なく、常に独自のプロファイルを削除できます。 OS Xv10.8以降およびiOS5では、プロファイルが削除されると、MDMクライアントはCheckOutコマンドを使用してサーバーへの接続を1回試行します。以前のOSバージョンでは、ユーザーがペイロードを削除しても、デバイスはMDMサーバーに接続しません。管理されなくなったデバイスを検出する方法に関する推奨事項については、MDMのベストプラクティスを参照してください。

MDMペイロードを含むプロファイルは、デバイス登録プログラムを使用してインストールされない限り、ロックできません。ただし、MDMを介してインストールされた管理対象プロファイルはロックされる場合があります。ロックされている場合でも、メインMDMプロファイルが削除されると、MDMを介してインストールされたすべての管理対象プロファイルが削除されます。

概要

このドキュメントは、エンタープライズ環境でデバイスを管理するためのソフトウェアを設計するシステム管理者およびシステムインテグレーター向けに書かれています。

MDMチェックインプロトコルにより、デバイスはサーバーに接続できますMDMチェックインプロトコルは、初期化中に、デバイスのMDM登録の適格性を検証し、デバイスのデバイストークンが更新されたことをサーバーに通知するために使用されます。

関連章:MDMチェックインプロトコルMDMプロトコルはデバイスに管理コマンドを送信します(メイン)MDMプロトコルは、プッシュ通知を使用して、アプリの削除やリモートワイプの実行などの特定の機能を実行するように管理対象デバイスに指示します。

関連章:モバイルデバイス管理(MDM)プロトコルペイロードの設計方法重要性とセキュリティを最大限に高めるには、最も基本的なMDM管理情報だけを含む基本プロファイルをインストールし、管理後に他のプロファイルをデバイスにインストールします。 。

関連章:MDMのベストプラクティスデバイス登録プログラムを使用すると、セットアップアシスタントでデバイスを構成できますHTTPベースのデバイス登録プログラムは、工場でのカスタマイズや事前構成を必要とせずに、デバイスを大量に購入および導入する組織の大量構成のニーズに対応します。展開前のデバイスの数。

クラウドサービスAPIは、プロファイル管理とマッピングを提供します。このAPIを使用すると、プロファイルの作成、プロファイルの更新、プロファイルの削除、デバイスのリストの取得、およびそれらのプロファイルを特定のデバイスに関連付けることができます。

関連章:デバイス登録プログラムボリューム購入プログラムを使用すると、ユーザーとデバイスにアプリライセンスを割り当てることができますボリューム購入プログラムは、ボリューム購入を特定のユーザーまたはデバイスに関連付けるためにMDMサーバーが呼び出すことができる多数のWebサービスを提供します。

関連章:VPPアプリの割り当てAppleプッシュ通知証明書はAppleプッシュ証明書ポータルから生成できます顧客からCSRを受け取る前に、「MDM署名証明書」をダウンロードし、 iOSプロビジョニングポータル経由で関連付けられた信頼証明書。次に、その証明書を使用して顧客の証明書に署名する必要があります。

2
Anurag_Soni