gpt4 book ai didi

java - 如何使用 java 发送 MDM DeviceLock 命令

转载 作者:行者123 更新时间:2023-11-28 19:59:18 26 4
gpt4 key购买 nike

我是使用 APNs 服务进行 IOS MDM 开发的新手。我们正在为 ios 开发 MDM,它处于初始阶段。我们最近为 Apple 创建了一个开发者帐户。我浏览了很多网站和链接,但仍然不确定如何向 ios 设备发送命令。通过下面的论坛,我了解到我们需要先检查设备状态,然后将命令发送到设备。 Sending mdm payload

我的问题是如何去做。我没有在 Java 中找到任何我们实际用来向 ios 设备发送“DeviceLock”之类的命令的代码片段。任何人都可以为我的程序提供一小段 Java 帮助我,以便我也可以使用相同的代码将策略应用于设备。

请帮助..感谢阅读。

最佳答案

更新:

  1. 要向设备发送任何命令,我们首先需要安装 MDM配置文件到将包含服务器 url 的设备配置文件设备将使用它来轮询命令设备接收推送通知。

  2. 引用http://media.blackhat.com/bh-us-11/Schuetz/BH_US_11_Schuetz_InsideAppleMDM_WP.pdf有关注册的详细信息,请参阅“发送推送通知”上面链接中的部分和后续部分,以获取详细的设备命令。

  3. 要发送推送通知,我们需要有一个 apns 推送证书,我们可以从 apple 的身份门户创建该证书,请引用:http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning

  4. 对于 mdm,我们将推送通知负载作为 {mdm : "PushMagicToken-of-device"}

  5. 发送到 APNs
  6. 当设备收到推送通知时,它将联系 mdm 服务器的 server-url 以执行命令。

回答你的问题:(P.S Used Java for communication)

Q1。 “您能否建议我服务器如何以请求的形式与设备以及设备与服务器交互

回答:设备在收到来自 APNs 的推送通知时将与服务器进行交互。它将联系您在 mdm 负载中提供的关键 ServerUrl 的 url。

这是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(属性列表格式)完成的,设备很容易理解这种格式。

Q2:“这意味着你从服务器以什么形式发送命令,以及你如何检查命令是否完成并将反馈发送到设备

服务器也以 plist 的形式向设备发送命令。例如:下面是当设备发送空闲状态响应时从我的 mdm 服务器发送的 DeviceLock 命令的 plist。

<?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 字段,我们可以用它来检查服务器端的当前命令,它维护当前 session 。无论我们使用 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,状态为Acknowledged,表示命令在设备上执行成功。

注意:所有这些都是以字节的形式在Java的响应中发送的。如果您指的是我向设备发送响应的格式。

我假设向设备发送反馈意味着发送下一个请求或停止轮询:如果您有要发送到设备的命令列表,则应遵循类似的步骤,因为目前我们一次只能发送一个命令。如果没有要执行的命令并且您希望设备停止轮询,则需要发送空响应。引用iOS MDM - How to close or stop connection after device responds back with valid response了解更多详情。

希望这消除了疑虑。如果您正处于注册阶段,请在关注之前引用@Victor 的评论。如果有任何澄清,请告诉我。目前,我在 iOS 设备上成功运行了一个 mdm 设置。

谢谢。

关于java - 如何使用 java 发送 MDM DeviceLock 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24907159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com