使用 Intune 应用包装工具准备用于应用保护策略的 iOS 应用

使用适用于 iOS 的 Microsoft Intune App Wrapping Tool为内部 iOS 应用启用 Intune 应用保护策略,而无需更改应用本身的代码。

该工具是一个 macOS 命令行应用程序,可围绕应用创建包装器。 处理应用后,可以通过部署应用 保护策略 来更改应用的功能。

若要下载该工具,请参阅 GitHub 上的 Microsoft Intune App Wrapping Tool for iOS

注意

如果在对应用使用 Intune App Wrapping Tool时遇到问题,请在 GitHub 上提交帮助请求

App Wrapping Tool的一般先决条件

在运行App Wrapping Tool之前,需要满足一些常规先决条件:

  • 从 GitHub 下载适用于 iOS 的Microsoft Intune App Wrapping Tool

  • 安装了 Xcode 工具集版本 14.0 或更高版本的 macOS 计算机。

  • 输入 iOS 应用必须由你的公司或独立软件供应商 (ISV) 开发和签名。

    • 输入应用文件必须具有扩展名 .ipa.app

    • 必须为 iOS 14.0 或更高版本编译输入应用。

    • 无法加密输入应用。

    • 输入应用不能具有扩展的文件属性。

    • 输入应用必须在由 Intune App Wrapping Tool处理之前设置权利。 权利 为应用提供了比通常授予的权限和功能更多的权限和功能。 有关说明 ,请参阅设置应用权利

  • 请确保系统密钥链中存在有效的签名证书。 如果遇到应用代码签名问题,请使用以下步骤来解决:
    • 重置所有相关证书的信任设置
    • 在系统密钥链和登录密钥链中安装中间证书
    • 卸载并重新安装所有相关证书

使用Microsoft Entra ID 注册应用

  1. 使用Microsoft Entra ID 注册应用。 有关详细信息,请参阅使用 Microsoft 标识平台注册应用程序
  2. 将自定义重定向 URL 添加到应用设置。 有关详细信息,请参阅 配置 MSAL
  3. 授予应用对 Intune MAM 服务的访问权限。 有关详细信息,请参阅 授予应用对 Intune 移动应用管理服务的访问权限
  4. 完成上述更改后,运行最新版本的 Intune 应用包装工具。 为 Microsoft 身份验证库配置应用 (MSAL) :使用 Intune App Wrapping Tool将 Microsoft Entra 应用程序客户端 ID 添加到命令行参数中。 有关详细信息,请参阅 命令行参数

注意

参数 -ac-ar 是必需参数。 每个应用都需要一组唯一的这些参数。 -aa 仅单租户应用程序需要 。

  1. 部署应用。

App Wrapping Tool的 Apple 开发人员先决条件

若要仅将包装的应用分发给组织的用户,需要一个具有 Apple 开发人员企业计划的 帐户,以及链接到 Apple 开发人员帐户的多个应用签名实体。

若要详细了解如何在组织用户内部分发 iOS 应用,请阅读 分发 Apple Developer Enterprise Program Apps 的官方指南。

需要以下项才能分发由 Intune 包装的应用:

  • Apple Developer Enterprise Program 的开发人员帐户。

  • 具有有效团队标识符的内部和临时分发签名证书。

    • 需要签名证书的 SHA1 哈希作为 Intune App Wrapping Tool的参数。
  • 内部分发预配配置文件。

创建 Apple Developer Enterprise 帐户的步骤

  1. 转到 Apple Developer Enterprise Program 站点

  2. 在页面右上角,单击“ 注册”。

  3. 阅读需要注册的内容的清单。 单击页面底部的“ 开始注册 ”。

  4. 使用组织的 Apple ID 登录。 如果没有,请单击“ 创建 Apple ID”。

  5. 选择 实体类型 ,然后单击“ 继续”。

  6. 使用组织的信息填写表单。 单击"继续"。 此时,Apple 会联系你,以验证你是否有权注册你的组织。

  7. 验证后,单击“ 同意许可”。

  8. 同意许可后,通过 购买并激活程序来完成。

  9. 如果你是团队代理 (代表组织加入 Apple Developer Enterprise Program 的人员) ,请先邀请团队成员并分配角色来构建团队。 若要了解如何管理团队,请阅读有关 管理开发人员帐户团队的 Apple 文档。

创建 Apple 签名证书的步骤

  1. 转到 Apple 开发人员门户

  2. 在页面右上角,单击“ 帐户”。

  3. 使用组织的 Apple ID 登录

  4. 单击“ 证书”、“ID & 配置文件”。

    Apple 开发人员门户 - 证书、ID & 配置文件

  5. 单击 Apple 开发人员门户并在右上角登录 以添加 iOS 证书。

  6. 选择在“生产”下创建内部和临时证书。

    选择“In-House”和“临时证书”

    注意

    如果不打算分发应用,并且只想在内部测试应用,则可以使用 iOS 应用开发证书而不是生产证书。 如果使用开发证书,请确保移动预配配置文件引用将安装应用的设备。

  7. 单击页面底部的“ 下一步 ”。

  8. 阅读有关在 macOS 计算机上使用密钥链访问应用程序创建 证书签名请求 (CSR) 的说明。

    阅读创建 CSR 的说明

  9. 按照上述说明创建证书签名请求。 在 macOS 计算机上,启动 Keychain Access 应用程序。

  10. 在屏幕顶部的 macOS 菜单上,转到 “密钥链访问 > 证书助手 > 从证书颁发机构请求证书”。

    在 Keychain Access 中向证书颁发机构请求证书

  11. 按照上面 Apple 开发人员站点中的说明操作,了解如何创建 CSR 文件。 将 CSR 文件保存到 macOS 计算机。

    输入要请求的证书的信息

  12. 返回到 Apple 开发人员网站。 单击"继续"。 然后上传 CSR 文件。

  13. Apple 生成签名证书。 下载并将其保存到 macOS 计算机上的令人难忘的位置。

    下载签名证书

  14. 双击刚下载的证书文件,将证书添加到密钥链。

  15. 再次打开 密钥链访问 。 通过在右上方搜索栏中搜索证书的名称来查找证书。 右键单击项以显示菜单,然后单击“ 获取信息”。 在示例屏幕中,我们使用开发证书而不是生产证书。

    将证书添加到密钥链

  16. 此时会显示一个信息窗口。 滚动到底部,在 “指纹 ”标签下查看。 将 SHA1 字符串 (模糊) 复制,用作App Wrapping Tool“-c”的参数。

    iPhone 信息 - 指纹 SHA1 字符串

创建 In-House 分发预配配置文件的步骤

  1. 返回 Apple 开发人员帐户门户,并使用组织 Apple ID 登录

  2. 单击“ 证书”、“ID & 配置文件”。

  3. 单击 Apple 开发人员门户并在右上角登录 以添加 iOS 预配配置文件。

  4. 选择在“分发”下创建内部预配配置文件。

    选择“内部预配配置文件”

  5. 单击"继续"。 请确保将以前生成的签名证书链接到预配配置文件。

  6. 按照步骤将扩展名为 .mobileprovision) 的个人资料 (下载到 macOS 计算机。

  7. 将文件保存在令人难忘的位置。 使用 App Wrapping Tool 时,此文件将用于 -p 参数。

下载App Wrapping Tool

  1. 将App Wrapping Tool的文件从 GitHub 下载到 macOS 计算机。

  2. 双击 iOS.dmg Microsoft Intune应用程序限制打包程序。 将显示一个窗口,其中包含最终用户许可协议 (EULA) 。 请仔细阅读文档。

  3. 选择 “同意 接受 EULA”,这会将包装载到计算机。

运行App Wrapping Tool

重要

Intune 定期发布对 Intune App Wrapping Tool的更新。 定期检查适用于 iOS 的 Intune App Wrapping Tool进行更新,并纳入软件开发发布周期,以确保应用支持最新的应用保护策略设置。

使用终端

打开 macOS 终端并运行以下命令:

/Volumes/IntuneMAMAppPackager/IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager -i /<path of input app>/<app filename> -o /<path to output folder>/<app filename> -p /<path to provisioning profile> -c <SHA1 hash of the certificate> [-b [<output app build string>]] [-v] [-e] [-x /<array of extension provisioning profile paths>]

注意

某些参数是可选的,如下表所示。

例子:以下示例命令在名为 MyApp.ipa 的应用上运行App Wrapping Tool。 将指定签名证书的预配配置文件和 SHA-1 哈希,并用于对包装的应用进行签名。 将创建输出应用 (MyApp_Wrapped.ipa) 并将其存储在桌面文件夹中。

./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager -i ~/Desktop/MyApp.ipa -o ~/Desktop/MyApp_Wrapped.ipa -p ~/Desktop/My_Provisioning_Profile_.mobileprovision -c "12 A3 BC 45 D6 7E F8 90 1A 2B 3C DE F4 AB C5 D6 E7 89 0F AB"  -v true

命令行参数

可以将以下命令行参数与 App Wrapping Tool一起使用:

例子:以下示例命令运行 App Wrapping Tool,在包装应用程序以在单个租户内使用时合并所需的命令。

./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager -i ~/Desktop/MyApp.ipa -o ~/Desktop/MyApp_Wrapped.ipa -p ~/Desktop/My_Provisioning_Profile_.mobileprovision -c "12 A3 BC 45 D6 7E F8 90 1A 2B 3C DE F4 AB C5 D6 E7 89 0F AB" -aa https://login.microsoftonline.com/<tenantID> -ac "Client ID of the input app if the app uses the Microsoft Authentication Library" -ar "Redirect/Reply URI of the input app if the app uses the Microsoft Authentication Library"  -v true
属性 如何使用
-我 <Path of the input native iOS application file>. 文件名必须以 .app 或 .ipa 结尾。
-o <Path of the wrapped output application>
-P <Path of your provisioning profile for iOS apps>
-C <SHA1 hash of the signing certificate>
-H 显示有关App Wrapping Tool可用命令行属性的详细使用情况信息。
-交流 <Client ID of the input app if the app uses the Microsoft Authentication Library> 这是“应用注册”边栏选项卡中应用列表的“客户端 ID”字段中的 GUID。
-Ar <Redirect/Reply URI of the input app if the app uses the Microsoft Authentication Library> 这是在应用注册中配置的重定向 URI。 通常,它是 Microsoft Authenticator 应用在中转身份验证后将返回到的应用程序的 URL 协议。
-机 管 局 (单租户应用需要) <Authority URI of the input app>https://login.microsoftonline.com/<tenantID>/
-V (可选) 将详细消息输出到控制台。 建议使用此标志来调试任何错误。
-e (可选) 使用此标志可让App Wrapping Tool在处理应用时删除缺少的权利。 有关更多详细信息 ,请参阅设置应用权利
-氙气 (可选) 打印有关应用中的 iOS 扩展以及使用它们所需的权利的信息。 有关更多详细信息 ,请参阅设置应用权利
-X (可选) <An array of paths to extension provisioning profiles>。 如果应用需要扩展预配配置文件,请使用此选项。
-B (可选) 如果希望包装的输出应用具有与输入应用相同的捆绑包版本, (不建议) ,请使用不带参数的 -b。

如果希望包装的应用具有自定义 CFBundleVersion,请使用 -b <custom bundle version> 。 如果选择指定自定义 CFBundleVersion,最好将本机应用的 CFBundleVersion 递增最少的组件,例如 1.0.0 -> 1.0.1。
-F (可选) <Path to a plist file specifying arguments.> 如果选择使用 plist 模板指定其他 IntuneMAMPackager 属性(如 -i、-o 和 -p),请在 plist 文件前面使用此标志。 请参阅使用 plist 输入参数。
-Dt (可选) 禁用Microsoft Intune客户端遥测的收集。
-Dl (可选) 已与 MSAL 集成并实现自己的 MSAL 日志记录回调的应用程序禁用 INtune 日志中的 MSAL 日志。

使用 plist 输入参数

运行App Wrapping Tool的一种简单方法是将所有命令参数放入 plist 文件中。 Plist 是一种类似于 XML 的文件格式,可用于使用表单接口输入命令行参数。

在 IntuneMAMPackager/Contents/MacOS 文件夹中, Parameters.plist 使用文本编辑器或 Xcode 打开 (空白 plist 模板) 。 输入以下键的参数:

Plist 键 类型 默认值 注意
输入应用程序包路径 String 与 -i 相同
输出应用程序包路径 String 与 -o 相同
预配配置文件路径 String 与 -p 相同
SHA-1 证书哈希 String 与 -c 相同
MSAL 机构 String 与 -aa 相同
MSAL 客户端 ID String 与 -ac 相同
MSAL 回复 URI String 与 -ar 相同
已启用详细 布尔值 false 与 -v 相同
删除缺少的权利 布尔值 false 与 -e 相同
阻止默认生成更新 布尔值 false 等效于使用不带参数的 -b
生成字符串重写 String 包装输出应用的自定义 CFBundleVersion
扩展预配配置文件路径 Array of Strings 应用的扩展预配配置文件数组。
禁用遥测 布尔值 false 与 -dt 相同
禁用 MSAL 日志重写 布尔值 false 与 -dl 相同

使用 plist 作为唯一参数运行 IntuneMAMPackager:

./IntuneMAMPackager –f Parameters.plist

后包装

包装过程完成后,将显示消息“已成功包装应用程序”。 如果发生错误,请参阅 错误消息 以获取帮助。

包装的应用保存在前面指定的输出文件夹中。 可以将应用上传到 Intune 管理中心,并将其与移动应用程序管理策略相关联。

重要

上传已包装的应用时,如果已将旧版 (包装或本机) 版本部署到 Intune,则可以尝试更新旧版应用。 如果遇到错误,请将应用作为新应用上传并删除旧版本。

现在可以将应用部署到用户组,并将应用保护策略目标部署到应用。 应用将使用指定的应用保护策略在设备上运行。

应多久使用 Intune App Wrapping Tool重新包装一次 iOS 应用程序?

需要重新打包应用程序的main方案如下所示:

  • 应用程序本身已发布新版本。 应用的早期版本已包装并上传到 Intune 管理中心。
  • 适用于 iOS 的 Intune App Wrapping Tool已发布一个新版本,该版本支持关键 bug 修复或新的特定 Intune 应用程序保护策略功能。 这发生在 6-8 周后,通过适用于 iOS 的 Microsoft Intune App Wrapping Tool GitHub 存储库。

对于 iOS/iPadOS,虽然可以使用与用于对应用进行签名的原始证书/预配配置文件不同的证书/预配配置文件进行包装,但如果应用中指定的权利未包含在新的预配配置文件中,包装将失败。 使用“-e”命令行选项(从应用中删除任何缺失的权利)强制包装不失败,可能会导致应用中的功能中断。

重新包装的一些最佳做法包括:

  • 确保不同的预配配置文件具有与任何以前的预配配置文件相同的所有必需权利。

错误消息和日志文件

使用以下信息排查应用包装工具遇到的问题。

错误消息

如果应用包装工具无法成功完成,控制台中将显示以下错误消息之一:

错误消息 更多信息
必须指定有效的 iOS 预配配置文件。 预配配置文件可能无效。 检查以确保你对设备具有正确的权限,并且你的配置文件正确面向开发或分发。 预配配置文件可能也已过期。
指定有效的输入应用程序名称。 请确保指定的输入应用程序名称正确。
指定输出应用程序的有效路径。 请确保指定的输出应用程序的路径存在且正确。
指定有效的输入预配配置文件。 请确保提供了有效的预配配置文件名称和扩展。 预配配置文件可能缺少权利,或者可能未包含 –p 命令行选项。
找不到指定的输入应用程序。 指定有效的输入应用程序名称和路径。 确保输入应用路径有效且存在。 确保输入应用位于该位置。
找不到指定的输入预配配置文件。 指定有效的输入预配配置文件。 请确保输入预配文件的路径有效,并且指定的文件存在。
找不到指定的输出应用程序文件夹。 指定输出应用程序的有效路径。 请确保指定的输出路径有效且存在。
输出应用没有 .ipa 扩展名。 App Wrapping Tool仅接受具有 .app.ipa 扩展的应用。 确保输出文件的扩展名有效。
指定的签名证书无效。 指定有效的 Apple 签名证书。 请确保已从 Apple 开发人员门户下载正确的签名证书。 证书可能已过期,或者可能缺少公钥或私钥。 如果你的 Apple 证书和预配配置文件可用于在 Xcode 中正确对应用进行签名,则它们对App Wrapping Tool有效。 此外,验证签名证书在 macOS 计算机的主机密钥链中是否具有唯一名称。 如果同一证书的多个版本密钥链可能会返回此错误。
指定的输入应用程序无效。 指定有效的应用程序。 确保已编译为 .app 或 .ipa 文件的有效 iOS 应用程序。
指定的输入应用程序已加密。 指定有效的未加密应用程序。 App Wrapping Tool不支持加密的应用。 提供未加密的应用。
指定的输入应用程序不是位置独立可执行文件 (PIE) 格式。 以 PIE 格式指定有效的应用程序。 位置独立可执行文件 (PIE) 运行时可以在随机内存地址加载应用。 这可以带来安全优势。 有关安全优势的详细信息,请参阅 Apple 开发人员文档。
已包装指定的输入应用。 指定有效的未包装应用程序。 无法处理工具已处理的应用。 如果要再次处理应用,请使用应用的原始版本运行该工具。
指定的输入应用程序未签名。 指定有效的已签名应用程序。 应用包装工具要求对应用进行签名。 请参阅开发人员文档,了解如何对包装的应用进行签名。
指定的输入应用程序必须采用 .ipa 或 .app 格式。 应用包装工具仅接受 .app 和 .ipa 扩展。 请确保输入文件的扩展名有效,并且已编译为 .app 或 .ipa 文件。
指定的输入应用已包装,并且位于最新的策略模板版本上。 App Wrapping Tool不会使用最新策略模板版本重新包装现有已包装的应用。
警告:未指定 SHA1 证书哈希。 在部署之前,请确保已对包装的应用程序进行签名。 请确保在 –c 命令行标志后指定有效的 SHA1 哈希。

从设备收集已包装应用程序的日志

在故障排除期间,使用以下步骤获取已包装应用程序的日志。

  1. 转到设备上的“iOS 设置”应用,然后选择 LOB 应用。
  2. 选择“Microsoft Intune”。
  3. “显示诊断控制台” 设置切换为 “打开”。
  4. 启动 LOB 应用程序。
  5. 单击“入门”链接。
  6. 现在可以直接将日志发送到 Microsoft 或通过设备上的其他应用程序共享日志。

注意

为已包装 Intune App Wrapping Tool版本 7.1.13 或更高版本的应用启用日志记录功能。

从系统收集崩溃日志

你的应用可能正在将有用信息记录到 iOS 客户端设备控制台。 当你遇到应用程序问题并且需要确定问题是否与App Wrapping Tool或应用本身有关时,此信息非常有用。 若要检索此信息,请使用以下步骤:

  1. 通过运行应用重现问题。

  2. 按照 Apple 关于 调试已部署的 iOS 应用的说明收集控制台输出。

包装应用还会向用户提供在应用崩溃后直接从设备通过电子邮件发送日志的选项。 如有必要,用户可以将日志发送给你以检查并转发到 Microsoft。

证书、预配配置文件和身份验证要求

适用于 iOS 的App Wrapping Tool具有一些必须满足的要求才能保证完整的功能。

要求 详细信息
iOS 预配配置文件 在包含预配配置文件之前,请确保该配置文件有效。 处理 iOS 应用时,App Wrapping Tool不会检查预配配置文件是否过期。 如果指定了过期的预配配置文件,则应用包装工具将包含过期的预配配置文件,在 iOS 设备上无法安装应用之前,你不会知道存在问题。
iOS 签名证书 在指定签名证书之前,请确保该证书有效。 该工具不会检查处理 iOS 应用时证书是否过期。 如果提供了过期证书的哈希,该工具将处理应用并对其进行签名,但无法在设备上安装。

确保提供的用于对包装应用进行签名的证书在预配配置文件中具有匹配项。 该工具不会验证预配配置文件是否与为已包装的应用程序签名而提供的证书匹配。
身份验证 设备必须具有 PIN 才能进行加密。 在已将包装应用部署到的设备上,触摸设备上的状态栏将要求用户使用工作或学校帐户再次登录。 包装应用中的默认策略是 重新启动时进行身份验证。 iOS 通过退出应用,然后重新启动应用来处理任何外部通知 (,例如电话呼叫) 。

设置应用权利

在包装应用之前,可以授予 权利 ,以便为应用授予超出应用通常可执行的操作的其他权限和功能。 在代码签名期间,权利文件用于指定应用中的特殊权限, (例如,对共享密钥链) 的访问权限。 在应用开发期间,在 Xcode 中启用名为 “功能 ”的特定应用服务。 启用后,这些功能将反映在权利文件中。 有关权利和功能的详细信息,请参阅在 iOS 开发人员库中 添加功能 。 有关支持的功能的完整列表,请参阅 支持的功能

适用于 iOS 的App Wrapping Tool支持的功能

功能 说明 建议的指南
应用组 使用应用组允许多个应用访问共享容器,并允许应用之间的其他进程间通信。

若要启用应用组,请打开“功能”窗格,然后单击“应用组”中的“”。 可以添加应用组或选择现有应用组。
使用应用组时,请使用反向 DNS 表示法:

group.com.companyName.AppGroup
背景模式 启用后台模式可让 iOS 应用继续在后台运行。
数据保护 数据保护为 iOS 应用存储在磁盘上的文件增加了一个安全级别。 数据保护使用特定设备上存在的内置加密硬件将文件以加密格式存储在磁盘上。 需要预配应用才能使用数据保护。
应用内购买 应用内购买使你能够连接到应用商店并安全地处理用户的付款,从而将商店直接嵌入到你的应用中。 你可以使用应用内购买来收取增强功能或应用可以使用的其他内容的付款。
密钥链共享 启用密钥链共享后,你的应用可以在密钥链中与团队开发的其他应用共享密码。 使用密钥链共享时,请使用反向 DNS 表示法:

com.companyName.KeychainGroup
个人 VPN 启用个人 VPN 以允许应用使用网络扩展框架创建和控制自定义系统 VPN 配置。
推送通知 Apple 推送通知服务 (APN) 允许未在前台运行的应用通知用户它包含用户的信息。 若要使推送通知正常工作,需要使用特定于应用的预配配置文件。

按照 Apple 开发人员文档中的步骤操作。
无线配件配置 启用无线配件配置会将外部附件框架添加到项目,并允许应用设置 MFi Wi-Fi 附件。

启用权利的步骤

  1. 在应用中启用功能:

    a. 在 Xcode 中,转到应用的目标,然后单击“ 功能”。

    b. 启用相应的功能。 有关每个功能以及如何确定正确值的详细信息,请参阅在 iOS 开发人员库中 添加功能

    c. 记下在此过程中创建的任何 ID。 这些值也可以称为 AppIdentifierPrefix 值。

    d. 生成并签名要包装的应用。

  2. 在预配配置文件中启用权利:

    a. 登录到 Apple 开发人员成员中心。

    b. 为应用创建预配配置文件。 有关说明,请参阅如何获取适用于 iOS 的 Intune App Wrapping Tool的先决条件

    c. 在预配配置文件中,启用与应用相同的权利。 你需要提供相同的 ID (AppIdentifierPrefix 在开发应用期间指定的值) 。

    d. 完成预配配置文件向导并下载文件。

  3. 确保满足所有先决条件,然后包装应用。

排查权利常见错误

如果适用于 iOS 的App Wrapping Tool显示权利错误,请尝试以下故障排除步骤。

问题 原因 解决方案
无法分析从输入应用程序生成的权利。 App Wrapping Tool无法读取从应用中提取的权利文件。 权利文件的格式可能不正确。 检查应用的权利文件。 以下说明说明如何执行此操作。 检查权利文件时,检查任何格式不正确的语法。 该文件应采用 XML 格式。
预配配置文件中缺少权利, (缺少的权利) 列出。 使用具有这些权利的预配配置文件重新打包应用。 预配配置文件中启用的权利与应用中启用的功能不匹配。 这种不匹配也适用于与应用组和密钥链访问) 等特定功能 (关联的 ID。 通常,可以创建新的预配配置文件,以启用与应用相同的功能。 当配置文件和应用之间的 ID 不匹配时,App Wrapping Tool将替换 ID(如果能够)。 如果在创建新的预配配置文件后仍收到此错误,可以尝试使用 –e 参数从应用中删除权利 (请参阅使用 –e 参数从应用中删除权利部分) 。

查找已签名应用的现有权利

若要查看已签名应用和预配配置文件的现有权利,请执行以下操作:

  1. 找到 .ipa 文件并将其扩展名更改为 .zip。

  2. 展开 .zip 文件。 这将生成包含 .app 捆绑包的有效负载文件夹。

  3. 使用代码签名工具检查 .app 捆绑包上的权利,其中 YourApp.app 是 .app 捆绑包的实际名称::

    codesign -d --entitlements :- "Payload/YourApp.app"
    
  4. 使用安全工具检查应用的嵌入式预配配置文件的权利,其中 YourApp.app 是 .app 捆绑包的实际名称。

    security cms -D -i "Payload/YourApp.app/embedded.mobileprovision"
    

使用 –e 参数从应用中删除权利

此命令删除应用中未在权利文件中启用的任何功能。 如果删除应用正在使用的功能,它可能会破坏你的应用。 例如,在默认具有所有功能的供应商生成的应用中,可以删除缺少的功能。

./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager –i /<path of input app>/<app filename> -o /<path to output folder>/<app filename> –p /<path to provisioning profile> –c <SHA1 hash of the certificate> -e

App Wrapping Tool的安全和隐私

使用App Wrapping Tool时,请遵循以下安全和隐私最佳做法。

  • 签名证书、预配配置文件和指定的业务线应用必须位于用于运行应用包装工具的同一台 macOS 计算机上。 如果文件位于 UNC 路径上,请确保可从 macOS 计算机访问这些文件。 必须通过 IPsec 或 SMB 签名保护路径。

    导入到管理中心的包装应用程序应位于运行该工具的同一台计算机上。 如果文件位于 UNC 路径上,请确保可在运行管理中心的计算机上访问该文件。 必须通过 IPsec 或 SMB 签名保护路径。

  • 需要通过 IPsec 或 SMB 签名来保护从 GitHub 存储库下载App Wrapping Tool的环境。

  • 处理的应用必须来自可信来源,以确保防范攻击。

  • 确保App Wrapping Tool中指定的输出文件夹受到保护,尤其是当它是远程文件夹时。

  • 包含文件上传对话框的 iOS 应用可允许用户绕过、剪切、复制和粘贴应用所应用的限制。 例如,用户可以使用“文件上传”对话框上传应用数据的屏幕截图。

  • 从包装的应用内监视设备上的 documents 文件夹时,可能会看到名为 .msftintuneapplauncher 的文件夹。 如果更改或删除此文件,可能会影响受限应用的正确功能。

  • 注册自定义 URL 方案允许特定 URL 重定向到应用。 iOS 和 iPadOS 允许多个应用注册相同的自定义 URL 方案,OS 将决定调用哪个应用程序。 请参阅 Apple 文档 为应用定义自定义 URL 方案 ,获取帮助避免自定义 URL 方案冲突的建议,以及处理格式错误的 URL 的安全准则。

另请参阅