当前位置:网站首页 > 安全测试 > 正文

sdk检测工具(sdk测试方法)



Microsoft Intune App SDK for Android 允许将Intune应用保护策略 (也称为 APP 或 MAM 策略) 合并到本机 Java/Kotlin Android 应用中。 Intune托管的应用程序是与 Intune App SDK 集成的应用程序。 当Intune主动管理应用时,Intune管理员可以轻松地将应用保护策略部署到Intune托管的应用。

  • 确定应用程序是否需要多标识支持。
  • 了解Intune应用 SDK 如何感知标识。
  • 重构应用程序以增强标识意识。
  • 添加代码以在整个应用程序中通知 SDK 活动标识和不断变化的标识。
  • 全面测试托管和非托管标识的应用保护策略强制实施。

术语“user”、“account”和“identity”通常可互换使用。 本指南尝试按如下所示进行区分:

  • 用户:使用软件产品的人。 进一步区分为最终用户、使用 Android 应用的人和管理员 / 用户 / IT / 专业人员(使用 Microsoft Intune 管理中心的人)。
  • 帐户:属于唯一标识用户实体的组织的软件记录。 一个用户可以有多个帐户。
  • 标识:Intune应用 SDK 用来唯一标识帐户的数据集。

默认情况下,Intune应用 SDK 将策略应用于整个应用程序。 使用面向的应用保护策略注册帐户后,SDK 会将每个文件和每个活动与该帐户的标识相关联,并将普遍应用该帐户的目标策略。

对于许多开发人员来说,这是其应用程序所需的应用保护行为。 这些应用程序被视为 单一标识。 通过完成前面的阶段,应用程序已成功集成为单一标识,并且可以强制实施所有基本策略。 旨在保持单一标识的应用可以跳过此部分,继续执行第 6 阶段:应用程序配置。

Intune应用 SDK 可以选择在每个标识级别强制实施策略。 如果应用程序已支持同时登录的多个帐户,并且你希望通过应用保护策略保留此多帐户支持,则应用程序被视为 多标识

当 SDK 集成应用程序使用 registerAccountForMAM 注册帐户时,SDK 会将提供的所有参数 (upn、aadId、tenantId 和 authority) 保存为标识。 但是,大多数 SDK 的标识 API 使用提供的 OID (也称为Microsoft Entra ID或 AAD ID) 作为标识的标识符。 MAM SDK API 将返回 OID 字符串作为标识,并且需要标识的 OID 字符串参数。 某些方法还可能采用或返回 UPN 字符串,在这种情况下,UPN 仅供参考。

标识参数不区分大小写。 对 SDK 的标识请求可能不会返回注册或设置标识时使用的相同大小写。

如 注册应用保护策略中所述,应用程序负责在用户登录时通知 SDK。 在登录时,用户的帐户可能成为也可能不是应用保护策略的目标。 如果帐户是应用保护策略的目标,则 SDK 会将其视为托管;否则,它是非托管的。

SDK 将对其认为托管的标识强制实施策略。 SDK 不会对认为非托管的标识强制实施策略。

目前,Intune应用 SDK 仅支持每个设备一个托管标识。 任何 SDK 集成的应用程序注册托管标识后,所有随后注册的标识(即使它们当前是应用保护策略的目标)都将被视为非托管标识。

如果已在设备上注册托管标识,并且你的应用注册了另一个同样面向应用保护策略的标识,则 SDK 将返回 并提示最终用户提供修正选项。 有关更多详细信息 ,请参阅从 SDK 注册通知 。

应用程序必须始终将当前使用的标识(也称为活动标识)通知 SDK。 如果活动标识是托管的,则 SDK 将应用保护。 如果活动标识不受管理,则 SDK 不会应用保护。

由于 SDK 没有特定于应用程序的知识,因此它必须信任应用程序来共享正确的活动标识。

  • 如果应用程序错误地告知 SDK 非托管标识在实际使用时处于活动状态,则 SDK 不会应用保护。 这可能会导致数据泄漏,使用户的数据面临风险。
  • 如果应用程序错误地告知 SDK 托管标识在实际使用非托管标识时处于活动状态,则 SDK 将不恰当地应用保护。 这不是数据泄漏,但可能会不必要地限制非托管用户,并使非托管用户的数据面临删除风险。

如果应用程序显示任何用户的数据,则它必须仅显示属于活动标识的数据。 如果应用程序当前不知道谁拥有显示的数据,则可能需要在开始集成多标识支持之前重构应用程序以增强标识意识。

每当应用程序写入新文件时,SDK 会根据当前活动线程和进程标识将 (也称为“标记”) 标识与该文件相关联。 或者,应用可以直接调用 SDK 来手动标记具有特定标识的文件 (请参阅 编写受保护的文件 了解详细信息) 。 SDK 使用此标记的文件标识进行文件加密和选择性擦除。

如果托管标识是加密策略的目标,则只会加密使用托管标识标记的文件。

如果管理员操作或配置的策略请求已擦除托管数据,将仅删除使用托管标识标记的文件。

SDK 无法将多个标识与单个文件相关联。 如果应用将属于多个用户的数据存储在同一文件中,则 SDK 的默认行为将导致此数据保护不足或过度保护。 强烈建议你按标识组织应用的数据

如果应用绝对必须将属于不同标识的数据存储在同一文件中,则 SDK 提供用于对文件中数据子集进行标识标记的功能。 有关详细信息 ,请参阅数据缓冲区保护 。

若要为应用声明多标识支持,请首先在 AndroidManifest.xml 中放置以下元数据。

 
  

应用程序可以按降序优先级在以下级别设置活动标识:

  1. 线程级别
  2. (通常 ) 级别
  3. 进程级别

在线程级别设置的标识取代在级别设置 的标识,后者取代在进程级别设置的标识。

上 设置的标识仅在适当的关联方案中使用。 例如,文件 IO 操作没有关联的 。 最常见的是,应用会在 上设置标识。 考虑在 中 设置标识。 除非标识设置为同一标识,否则应用不得显示标识的数据。

通常,仅当应用在所有线程上一次仅处理单个标识时,进程级标识才有用。 对于支持多个帐户的应用,这不是典型行为。 强烈建议隔离帐户数据,并在线程或 级别上设置活动标识。

如果你的应用使用 上下文来获取系统服务,请确保已设置线程或进程标识,或者你已在应用的 上下文中设置了 UI 标识。

如果你的应用使用 上下文来启动意向、使用内容解析程序或利用其他系统服务,请确保在上下文中 设置标识。 同样,如果你的应用使用上下文来执行这些操作,请确保根据实现的要求在上下文或线程上设置标识。 例如,如果 处理单个标识的作业,请考虑在上下文中 设置标识。 如果处理多个标识的作业,请考虑在线程级别设置标识。

MAMPolicyManager 中的以下方法可用于设置活动标识并检索以前设置的标识值。

 
  

为方便起见,还可以通过 MAMActivity 中的方法直接设置活动的标识,而不是调用 。 使用以下方法执行此操作:

 
  

常见标识切换陷阱

  • 对于对 的调用,Intune应用 SDK 假定级别的活动标识与提供的参数相关联。 强烈建议使用 的上下文(而不是 的上下文)设置级别标识。
  • 建议在 Activity 的 方法期间设置标识。 但是,请务必同时涵盖其他入口点,例如 。 否则,当重复使用同一活动来显示托管和非托管标识的数据时,策略可能会被错误地应用,从而导致公司数据不受保护或个人数据受到不当限制。

标识切换结果

用于通过 MAMIdentitySwitchResult 设置标识报告结果值的所有方法。 可以返回四个值:

返回值 应用场景 标识更改成功。 不允许更改标识。 如果在当前线程上设置其他标识时,尝试设置 UI () 标识,则会发生这种情况。 用户取消了标识更改,通常是通过按 PIN 或身份验证提示符上的后退按钮。 由于未指定的原因,标识更改失败。

应用应在显示或使用托管帐户的数据之前验证 MAMIdentitySwitchResult。

设置活动标识的大多数方法同步返回 MAMIdentitySwitchResult 。 如果通过 setUIPolicyIdentityOID 设置标识,则以异步方式报告结果。 应用可以实现 MAMSetUIIdentityCallback 来接收此结果,或者可能会为回调对象传递 null。 如果在之前对 同一个调用的结果尚未传递时发出调用,则新回调将取代旧回调,而原始回调将永远不会收到结果。

目前,对于启用了多标识的应用,进程和线程标识切换将始终成功。 SDK 保留将来添加故障条件的权利。

如果 UI 标识开关与线程标识冲突,或者如果用户取消了条件启动要求(例如, (按 PIN 屏幕上的后退按钮) ),则 UI 标识开关可能会失败。

活动上失败的 UI 标识开关的默认行为是完成活动。 若要更改此行为并接收有关活动的标识更改尝试的通知,可以在 中 替代 方法。

 
  

如果替代 (或) 调用 方法, 则必须 确保在标识切换失败后不会显示托管帐户的数据。

Identity、Intents 和 IdentitySwitchOptions

除了使用活动标识自动标记新文件外,SDK 还使用活动标识标记 意向 。 默认情况下,SDK 将对传入意向检查标识,并将其与活动标识进行比较。 如果这些标识不匹配,SDK 通常会 (*) 请求标识切换 (请参阅下面的 隐式标识更改 ,了解) 的更多详细信息。

SDK 还存储此传入意向标识,供以后使用。 当应用显式更改 UI 标识时,SDK 会将应用尝试切换到的标识与最新的传入意向标识进行比较。 如果这些标识不匹配,SDK 通常会 (*) 标识切换失败。

SDK 执行此检查,因为它假定应用仍显示来自意向的内容,该意向属于在意向上标记的标识。 此假设可防止应用在显示托管数据时意外关闭保护;但是,此假设可能与应用的实际行为不一定正确。

可以将可选的 IdentitySwitchOption 枚举传递给 setUIPolicyIdentityOID 和 switchMAMIdentityOID API 以修改 SDK 的默认行为。

  • :在 UI 层请求标识开关时,此选项会通知 SDK 跳过将请求的标识参数与最近存储的意向标识进行比较。 当应用不再显示属于该标识的内容,并且 SDK 不应阻止此标识切换时,这很有用。 例如:
    1. 你的应用是文档查看器。 它可以呈现从其他应用传入的文档。 它还包含一项功能,用户可以在其中切换帐户。 每当用户使用此帐户切换功能时,应用将导航到具有该帐户最近文档的特定于帐户的登陆页面。
    2. 应用收到显示文档的意向。 此意向使用托管标识进行标记。
    3. 应用将切换到托管标识并显示此文档,并正确应用了保护。
    4. 用户使用帐户切换器更改其个人帐户。

    你的应用必须在步骤 4 中更改 UI 标识。 在这种情况下,由于应用的行为是在意向) 中从托管帐户的数据 (文档中导航,因此应在标识切换调用中使用 。 这可避免 SDK 错误地失败此调用。

  • :在 UI 层请求标识切换时,此选项会通知 SDK,在标识 切换成功后,将继续显示最近存储的意向标识中的数据。 因此,SDK 将针对以前的意向标识全面评估接收策略,以确定是否允许显示它。 例如:
    1. 你的应用是文档查看器。 它可以呈现从其他应用传入的文档。 它还包含一项功能,用户可以在其中切换帐户。 与前面的示例不同,每当用户使用此帐户切换功能时,应用都会导航到显示 所有帐户的最新文档的共享页面。
    2. 应用收到显示文档的意向。 此意向使用托管标识进行标记。
    3. 应用将切换到托管标识并显示此文档,并正确应用了保护。
    4. 用户使用帐户切换器更改其个人帐户。

    你的应用必须在步骤 4 中更改 UI 标识。 在这种情况下,由于应用的行为是在意向) 中继续显示托管标识的数据 (文档预览,因此应在标识切换调用中使用 。 这会通知 SDK 检查配置的应用保护策略,以确定它是否适合继续显示数据。

(*) SDK 的默认行为包括跳过此数据入口 检查的特殊大小写,例如,如果意向来自同一应用内部或系统启动器,则跳过此数据入口。

清除活动标识

应用程序可能具有与帐户无关的方案。 应用程序可能还具有不需要任何登录的本地非托管方案的方案。 在这两种情况下,你的应用可能不希望 SDK 强制实施托管标识的策略,但你可能没有要切换到的显式标识。

可以通过调用将标识 OID 参数设置为 的任何设置标识方法来清除活动标识。 在一个级别清除标识将导致 SDK 根据优先级顺序在其他级别查找活动标识。

或者,可以将空字符串作为标识 OID 参数传递,这将标识设置为一个特殊的空值,该值被视为非托管标识。 将活动标识设置为空字符串会告知 SDK 不要强制实施 任何 应用保护策略。

以上部分介绍了应用在线程、上下文和进程级别显式设置活动标识的不同方式。 但是,应用中的活动标识也可以更改,而无需应用调用任何这些方法。 本部分介绍应用如何侦听和响应这些隐式标识更改。

侦听这些隐式标识更改是可选的,但建议这样做。 如果不提供这些隐式标识更改通知,SDK 永远不会更改活动标识。

隐式标识更改的来源

  • 来自其他Intune托管应用的数据入口可以更改线程和上下文级别的活动标识。
    • 如果活动是从另一个 MAM 应用发送的 启动的,则会根据发送 时其他应用中的活动标识来设置该 活动的标识。
      • 例如,当用户选择文档附件时,将从 Outlook Microsoft 意向启动查看Word文档的活动。 Office 的文档查看器活动的标识从 Outlook 切换到标识。
    • 对于服务,线程标识将在 或 调用期间以类似的方式设置。 调用从 返回的 也将临时设置线程标识。
    • 对 的 调用同样会设置线程标识的持续时间。
  • 用户 与活动的交互可以在上下文级别更改活动标识。 例如:
    • 用户取消授权提示期间 将导致隐式切换到空标识。

处理隐式标识更改

你的应用可以选择侦听这些隐式标识更改并做出响应。 例如,应用程序可能需要多个步骤才能使用添加的帐户,例如设置新收件箱的电子邮件应用。 看到尝试的标识切换到此不完整帐户的标识后,应用处理程序可以在接受标识切换之前将用户重定向到帐户设置活动。 或者,应用的处理程序可能会显示错误对话框并阻止标识开关。

你的应用可以在 或 上实现 MAMIdentityRequirementListener 接口,以便对应用于此线程的标识更改。 实现必须重写:

 
  

应用可以在 上实现 MAMActivityIdentityRequirementListener 接口 ,以便对应用于此活动的标识更改。 实现必须重写:

 
  

枚举 参数描述隐式标识开关的源。

枚举值 默认 SDK 行为 说明 允许标识切换。 由于活动创建,正在发生标识切换。 允许标识切换。 正在发生标识切换,因为正在向活动分配新的意向。 阻止标识切换。 由于取消了恢复,因此发生了标识切换。 当最终用户按下 PIN、身份验证或合规性 UI 上的后退按钮时,这种情况最为常见。

AppIdentitySwitchResultCallback 参数允许开发人员替代标识开关的默认行为:

 
  

为所有隐式标识更改调用 ,但通过从 返回的 Binder 进行的更改除外。 的默认实现 立即调用:

  • 当原因为 时。
  • 在所有其他情况下。

预计大多数应用不需要以其他方式阻止或延迟标识切换,但如果应用需要这样做,则必须考虑以下几点:

  • 如果标识开关被阻止,则最终用户行为与 SDK 的“从其他应用接收数据”应用保护设置禁止数据进入相同。
  • 如果服务在main线程上运行,则必须同步调用,否则 UI 线程停止响应。
  • 对于创建,将在 之前调用 onMAMIdentitySwitchRequired。 如果应用必须显示 UI 以确定是否允许标识切换,则必须使用 其他 活动显示该 UI。
  • 在 中 ,当请求切换到空标识且原因为 时,应用必须修改恢复的活动,以显示与该标识开关一致的数据。 如果无法执行此操作,应用应拒绝切换,并且将再次要求用户遵守恢复标识 (的策略,例如,) 显示应用 PIN 输入屏幕。

如果请求的标识托管 (使用 MAMPolicyManager.getIsIdentityOIDManaged 检查) ,但应用无法使用该帐户 (例如,因为帐户(如电子邮件帐户)必须先在应用中设置,) 应拒绝标识切换。

可以通过调用静态方法 来访问 的默认行为。

同样,如果需要重写 ,则可以在不显式继承自 的情况下实现 。

Intune应用 SDK 使用 标志来强制实施屏幕截图策略。 某些应用也可能出于自己的目的而设置 。 当应用保护策略不限制屏幕截图时,SDK 不会修改 。

在标识从策略要求禁用屏幕截图的标识切换到策略不禁用的标识时,SDK 将清除 。 因此,你的应用不应依赖于 标识切换后的剩余集。

应用通常从 UI 线程调度后台任务,以处理其他线程上的操作。 多标识应用必须确保这些后台任务使用适当的标识进行操作,该标识通常是调度它们的活动使用的相同标识。

Intune应用 SDK 提供 MAMAsyncTask 和 MAMIdentityExecutors,以帮助在异步操作中保留标识。 如果应用的异步操作可以,则应用必须使用这些 (或显式设置任务上的线程标识) :

  • 将属于托管标识的数据写入文件
  • 与其他应用通信

MAMAsyncTask

若要使用 ,只需继承自它而不是 ,并将 的替代分别替换为 和 。 构造 函数采用活动上下文。 例如:

 
  

将基于正常优先级顺序假定活动标识。

MAMIdentityExecutors

允许使用 和 方法将现有 或 实例包装为标识保留/。 例如

 
  

将基于正常优先级顺序假定活动标识。

写入受保护的文件

如上述按标识组织应用数据中所述,Intune应用 SDK 会将线程/进程级别的活动标识 (与写入文件时) 关联。 在文件创建时设置正确的标识以确保适当的加密和选择性擦除功能至关重要。

你的应用可以使用 MAMFileProtectionManager 类查询或更改文件的标识,专用 于查询和 更改。

方法 还可用于保护目录。 目录保护以递归方式应用于目录中包含的所有文件和子目录。 当目录受到保护时,在该目录中创建的所有新文件将自动应用相同的保护。 由于目录保护以递归方式应用,因此对于大型目录, 调用可能需要一些时间才能完成。 因此,对包含大量文件的目录应用保护的应用可能希望在后台线程上异步运行 。

调用 标识参数的空字符串将使用非托管标识标记文件/目录。 如果以前已加密,此操作将从文件/目录中删除加密。 发出选择性擦除命令时,不会删除文件/目录。

显示受保护的文件内容

同样重要的是,在 显示 文件内容时设置正确的标识,以防止未经授权的用户查看托管数据。 SDK 无法自动推断正在读取的文件与 在 中显示的 数据之间的关系。 在显示任何托管数据之前,应用 必须 正确设置 UI 标识。 这包括从文件读取的数据。

如果文件来自应用外部 (或 从可公开写入位置读取) ,则应用 必须 尝试使用正确的 MAMFileProtectionManager.getProtectionInfo 重载确定文件标识 (数据源) ,然后才能显示从文件读取的信息。

如果 报告非空的非空标识,应用 必须使用MAMActivity.switchMAMIdentityOID 或 MAMPolicyManager.setUIPolicyIdentityOID 设置 UI 标识以匹配此标识。 如果标识切换失败,则 不得 显示文件中的数据。

从内容 URI 读取时,可能需要先通过 采用) 的重载 来读取标识 (,然后相应地设置上下文或线程标识。 必须在 在 上 打开文件描述符或输入流之前完成此操作,否则操作可能会失败。

示例流可能如下所示:

  • 用户选择要在应用中打开的文档。
  • 在打开流期间,在从磁盘读取数据之前,应用会确认应用于显示内容的标识:
     
  • 应用将等待,直到将结果报告给回调。
  • 如果报告的结果是失败,则应用不会显示文档。
  • 应用将打开并呈现文件。

如果应用使用 Android 下载文件,SDK 将尝试使用 前面所述的标识优先级自动保护这些文件。 如果未设置线程标识, 则将使用用于检索 的上下文。 如果下载的文件包含公司数据,则应用负责在下载后移动或重新创建文件时调用 protectForOID 。

Single-Identity 到多标识转换

如果以前使用单标识Intune集成发布的应用后来集成了多标识,则以前安装的应用将经历转换。 此转换对用户不可见。

应用 不需要 处理此转换。 在转换之前创建的所有文件将继续被视为托管 (因此,如果加密策略处于) 上,它们将保持加密状态。

如果不希望所有以前的应用数据都与托管标识相关联,可以检测此转换并显式删除保护。

  • 通过将应用的版本与添加了多标识支持的已知版本进行比较来检测升级。
  • 对于不希望与托管标识关联的文件或目录,使用空字符串调用 标识参数。

脱机方案

未安装公司门户应用时,Intune应用 SDK 在“脱机”模式下运行。 文件标识标记对脱机模式敏感:

  • 如果未安装公司门户,则无法对文件进行标识标记。 在脱机模式下调用 MAMFileProtectionManager.protectForOID 是安全的,但不起作用。
  • 如果已安装公司门户,但应用没有应用保护策略,则文件无法可靠地进行标识标记。
  • 文件标识标记可用时,以前创建的所有文件都被视为属于空字符串标识) 的个人/非托管 (,除非以前将应用安装为单标识托管应用,如 单标识到多标识转换中所述。

为避免这些情况,应用应避免创建包含帐户数据的文件,直到帐户注册成功完成。 如果应用在脱机时必须创建文件,则在 SDK 联机后,它可以使用 MAMFileProtectionManager.protectForOID 来更正文件的关联标识。

SDK 的 MAMDataProtectionManager 提供用于以 或 格式检查和更改特定数据缓冲区的标记标识的方法。

允许应用将数据与标识相关联,如果标识当前是加密策略的目标,请加密数据。 此加密数据适合存储在文件中的磁盘。

还允许查询与标识关联的数据并取消加密。

使用 的应用 应实现通知接收 方。 有关更多详细信息 ,请参阅从 SDK 注册通知 。

此通知完成后,如果) 保护缓冲区时启用了文件加密,则通过此类保护的缓冲区将不再可读 (。 应用可以在处理通知时通过对所有缓冲区调用来防止这些缓冲区变得不可读。 如果想要保留标识信息,还可以在此通知期间安全地调用 。 保证在通知期间禁用加密,并且处理程序中的调用 不会加密数据缓冲区。

多标识应用还必须保护通过 共享的数据,以防止不当共享托管内容。

应用必须在返回内容之前调用静态 MAMContentProvider 方法 。 如果此函数返回 false,则 不得 将内容返回到调用方。

如果返回 ,则不需要调用 。 通过内容提供程序返回的文件描述符将根据文件标识自动处理。

默认情况下,Intune应用 SDK 会自动处理选择性擦除,删除与托管标识关联的所有文件。 之后,SDK 将正常关闭应用,完成活动并终止应用进程。

SDK 提供可选功能,使应用可以补充 (建议) 或替代默认擦除行为。

SDK 的默认擦除处理程序不处理受 保护的数据缓冲区。 如果你的应用使用了此功能 ,则必须补充 或替代默认擦除处理程序以删除该数据。

补充默认擦除行为

为了补充默认 SDK 擦除行为,你的应用可以注册 MAMNotificationType。

SDK 将在执行默认选择性擦除 之前 发送此通知。 在删除数据和终止应用之前,SDK 将等待应用的通知处理程序完成。 你的应用应同步清除数据,在完成所有清理之前不会返回。

应用应强烈考虑使用 补充默认擦除行为,因为特定于应用的清理对于多标识应用很常见。

重写默认擦除行为

若要替代默认的 SDK 擦除行为,应用可以注册 MAMNotificationType。

重写默认 SDK 擦除行为对应用具有相当大的风险。 你的应用将完全负责删除与托管标识关联的所有数据,包括已为该标识标记的所有文件和数据缓冲区。

  • 如果托管标识受加密保护,并且应用的自定义擦除处理程序未完全删除所有托管数据,则任何剩余的托管文件将保持加密状态。 此数据将变得不可访问,并且你的应用可能无法正常处理尝试读取加密数据。
  • 如果你的应用的擦除处理程序删除了未使用托管标识标记的文件,则可能会导致非托管用户的数据丢失。

如果应用的自定义擦除处理程序从文件中删除托管数据,但希望将其他数据保留在文件中 ,则必须通过MAMFileProtectionManager.protectForOID) 更改为非托管标识或空字符串来更改文件 (的标识。

重写的擦除处理程序应同步清除数据,在完成所有清理之前不会返回。

请考虑在完成自定义擦除处理程序步骤后手动关闭应用,以防止用户在擦除发生后访问内存中数据。

计划将大量时间用于验证应用的多标识集成。 开始测试之前:

  • 创建应用保护策略并将其分配给帐户。 这是测试托管帐户。
  • 创建另一个帐户,但不向其分配应用保护策略。 这是测试的非托管帐户。 或者,如果你的应用支持Microsoft Entra帐户以外的多种帐户类型,则可以使用现有的非 Entra 帐户作为非托管测试帐户。
  • 重新熟悉应用内策略的强制实施方式。 多标识测试要求你轻松区分应用在强制实施策略的情况下运行和未运行。 用于阻止屏幕截图的应用保护策略设置在快速测试策略强制实施时有效。
  • 请考虑应用提供的整个 UI 集。 枚举显示帐户数据的屏幕。 你的应用是否只一次显示单个帐户的数据,或者它可以同时显示属于多个帐户的数据?
  • 请考虑应用创建的整个文件集。 枚举其中哪些文件包含属于帐户的数据,而不是系统级数据。
    • 确定对其中每个文件验证加密的方式。
  • 请考虑应用可以与其他应用交互的整套方式。 枚举所有入口点和出口点。 应用可以引入哪些类型的数据? 它广播的意图是什么? 它实现哪些内容提供商?
    • 确定将如何练习其中每个数据共享功能。
    • 准备一个测试设备,该设备同时具有可以与应用交互的托管和非托管应用。
  • 考虑应用如何使最终用户能够与所有登录帐户交互。 用户是否需要在显示该帐户的数据之前手动切换到该帐户?

全面评估应用当前行为后,通过执行以下测试集来验证多标识集成。 请注意,这不是一个全面的列表,并且不保证应用的多标识实现是无 bug 的。

验证登录和注销方案

多标识应用最多支持 1 个托管帐户和多个非托管帐户。 这些测试有助于确保多标识集成不会在用户登录或注销时不正确地更改保护。

对于这些测试,请安装应用和Intune 公司门户;在开始测试之前不要登录。

应用场景 步骤 首先登录托管 - 首先使用托管帐户登录,并验证帐户的数据是否托管。
- 使用非托管帐户登录,并验证该帐户的数据不受管理。
首先登录非托管 - 首先使用非托管帐户登录,并验证该帐户的数据不受管理。
- 使用托管帐户登录并验证帐户的数据是否托管。
登录多个托管 - 首先使用托管帐户登录,并验证帐户的数据是否托管。
- 使用第二个托管帐户登录,并验证是否阻止用户登录,而无需先删除原始托管帐户。
注销托管 - 使用托管的非托管帐户登录到应用。
- 注销托管帐户。
- 确认已从应用中删除托管帐户,并且已删除该帐户的所有数据。
- 确认非托管帐户仍处于登录状态,未删除任何非托管帐户的数据,并且策略仍未应用。


注销非托管 - 使用托管的非托管帐户登录到应用。
- 注销非托管帐户。
- 确认已从应用中删除非托管帐户,并且已删除该帐户的所有数据。
- 确认托管帐户仍处于登录状态,未删除任何非托管帐户的数据,并且策略仍在应用。




















验证活动标识和应用生命周期

多标识应用可能会显示具有单个帐户数据的视图,并允许用户显式更改当前正在使用的帐户。 它还可能同时显示包含多个帐户数据的视图。 这些测试有助于确保多标识集成在整个应用生命周期内为每个页面上的活动标识提供适当的保护。

对于这些测试,请安装应用和Intune 公司门户;在开始测试之前,使用托管和非托管帐户登录。

应用场景 步骤 单帐户视图,托管 - 切换到托管帐户。
- 导航到应用中显示单个帐户数据的所有页面。
- 确认策略已应用于每个页面。

单帐户视图,非托管 - 切换到非托管帐户。
- 导航到应用中显示单个帐户数据的所有页面。
- 确认策略未应用于任何页面。

多帐户视图 - 导航到应用中同时显示多个帐户数据的所有页面。
- 确认策略已应用于每个页面。
托管暂停 - 在显示托管数据并激活策略的屏幕上,导航到设备主屏幕或其他应用来暂停应用。
- 恢复应用。
- 确认仍应用策略。

非托管暂停 - 在显示非托管数据且未激活策略的屏幕上,导航到设备主屏幕或其他应用来暂停应用。
- 恢复应用。
- 确认策略未应用。

托管终止 - 在显示托管数据并激活策略的屏幕上,强制终止应用。
- 重启应用。
- 确认如果应用在屏幕上恢复,且托管帐户的数据 (预期) ,仍会应用策略。 如果应用在具有非托管帐户数据的屏幕上恢复,请确认该策略未应用。

非托管终止 - 在显示非托管数据并激活策略的屏幕上,强制终止应用。
- 重启应用。
- 确认如果应用在具有非托管帐户数据 (预期) 的屏幕上恢复,则不会应用策略。 如果应用在包含托管帐户数据的屏幕上恢复,请确认仍应用策略。

即席标识切换 - 尝试在帐户之间切换以及暂停/恢复/终止/重启应用。
- 确认托管帐户的数据始终受到保护,非托管帐户的数据永远不会受到保护。




























验证数据共享方案

多标识应用可能会向其他应用发送数据以及从其他应用接收数据。 Intune的应用保护策略具有指示此行为的设置。 这些测试有助于确保多标识集成遵循这些数据共享设置。

对于这些测试,请安装应用和Intune 公司门户;在开始测试之前,使用托管和非托管帐户登录。 此外:

  • 将托管帐户的策略设置为:
    • “将组织数据发送到其他应用”到“策略托管应用”。
    • “从其他应用接收数据”到“策略托管应用”。
  • 在测试设备上安装其他应用:
    • 一个托管应用,其目标策略与应用相同,可以发送和接收数据 (,如 Microsoft Outlook) 。
    • 可以发送和接收数据的任何非托管应用。
  • 使用托管测试帐户登录到其他托管应用。 即使其他托管应用是多标识,也只能使用托管帐户登录。

如果你的应用能够将数据发送到其他应用,例如Microsoft Outlook 将文档附件发送到 Office Microsoft:

应用场景 步骤 将托管标识发送到非托管应用 - 切换到托管帐户。
- 导航到应用可以发送数据的位置。
- 尝试将数据发送到非托管应用。
- 应阻止你将数据发送到非托管应用。


将托管标识发送到托管应用 - 切换到托管帐户。
- 导航到应用可以发送数据的位置。
- 尝试将数据发送到已登录托管帐户的其他托管应用。
- 应允许将数据发送到托管应用。


将非托管标识发送到托管应用 - 切换到非托管帐户。
- 导航到应用可以发送数据的位置。
- 尝试将数据发送到已登录托管帐户的其他托管应用。
- 应阻止你将数据发送到其他托管应用。


将非托管标识发送到非托管应用 - 切换到非托管帐户。
- 导航到应用可以发送数据的位置。
- 尝试将数据发送到非托管应用。
- 应始终允许将非托管帐户的数据发送到非托管应用。


























你的应用可能会主动从其他应用导入数据,例如Microsoft Outlook 从 Microsoft OneDrive 附加文件。 你的应用也可能被动接收来自其他应用的数据,例如Microsoft Office 从Microsoft Outlook 附件打开文档。 接收应用保护策略设置涵盖这两种方案。

如果你的应用能够主动从其他应用导入数据:

应用场景 步骤 从非托管应用导入托管标识 - 切换到托管帐户。
- 导航到应用可以从其他应用导入数据的位置。
- 尝试从非托管应用导入数据。
- 应阻止你从非托管应用导入数据。


从托管应用导入托管标识 - 切换到托管帐户。
- 导航到应用可以从其他应用导入数据的位置。
- 尝试从已登录托管帐户的其他托管应用导入数据。
- 应允许从其他托管应用导入数据。


从托管应用导入非托管标识 - 切换到非托管帐户。
- 导航到应用可以从其他应用导入数据的位置。
- 尝试从已登录托管帐户的其他托管应用导入数据。
- 应阻止你从其他托管应用导入数据。


从非托管应用导入非托管标识 - 切换到非托管帐户。
- 导航到应用可以从其他应用导入数据的位置。
- 尝试从非托管应用导入数据。
- 应始终允许从非托管帐户的非托管应用导入数据。


























如果你的应用能够被动接收来自其他应用的数据:

应用场景 步骤 从非托管应用接收托管标识 - 切换到托管帐户。
- 切换到非托管应用。
- 导航到可以发送数据的位置。
- 尝试将数据从非托管应用发送到你的应用。
- 应用的托管帐户无法从非托管应用接收数据。



从托管应用接收托管标识 - 切换到托管帐户。
- 切换到已登录托管帐户的其他托管应用。
- 导航到可以发送数据的位置。
- 尝试将数据从托管应用发送到应用。
- 应允许应用的托管帐户从其他托管应用接收数据。



从托管应用接收非托管标识 - 切换到非托管帐户。
- 切换到已登录托管帐户的其他托管应用。
- 导航到可以发送数据的位置。
- 尝试将数据从托管应用发送到应用。
- 你的应用的非托管帐户无法从托管应用接收数据。



从非托管应用接收非托管标识 - 切换到非托管帐户。
- 切换到非托管应用。
- 导航到可以发送数据的位置。
- 尝试将数据从非托管应用发送到你的应用。
- 应始终允许应用的非托管帐户从非托管应用接收数据。



































这些测试中的失败可能表示应用在尝试发送或接收数据时没有设置正确的活动标识。 可以通过在发送/接收时利用 SDK 的 get 标识 API 来调查此问题,以确认活动标识是否已正确设置。

验证选择性擦除方案

多标识应用可能已补充或重写 SDK 的默认擦除行为。 这些测试有助于确保在启动擦除时,多标识集成正确删除托管数据,而不会影响非托管数据。

对于这些测试,请安装应用和Intune 公司门户;在开始测试之前,使用托管和非托管帐户登录。 对于这两个帐户,请练习用于存储帐户数据的应用方案。

应用场景 前提 条件 步骤 补充擦除处理程序 你的应用已为 - 从Microsoft Intune管理中心发出选择性擦除。
- 通常通过日志记录) 确认 (擦除处理程序已成功执行。
- 确认已从应用中删除托管帐户,并且已删除该帐户的所有数据。
- 确认非托管帐户仍处于登录状态,未删除任何非托管帐户的数据,并且策略仍未应用。


重写的擦除处理程序 你的应用已为 - 从Microsoft Intune管理中心发出选择性擦除。
- 通常通过日志记录) 确认 (擦除处理程序已成功执行。
- 确认已从应用中删除托管帐户,并且已删除该帐户的所有数据。
- 确认非托管帐户仍处于登录状态,未删除任何非托管帐户的数据,并且策略仍未应用。
- 确认应用在擦除处理程序完成后已正常退出或仍处于正常状态。



手动文件保护 - 应用调用
- 应用已实现处理程序
- 确保已练习应用手动保护至少一个属于托管帐户的文件的方案。
- 从Microsoft Intune管理中心发出选择性擦除。
- 确认文件已删除。

手动数据缓冲区保护 - 应用调用
- 你的应用已为 或 实现了处理程序
- 确保已练习应用手动保护至少一个属于托管帐户的数据缓冲区的方案。
- 从Microsoft Intune管理中心发出选择性擦除。
- 确认数据缓冲区已从存储到的任何文件中删除,并且你的应用仍可以从这些文件读取非托管数据。



























完成上述所有 退出条件 后,你的应用现在已成功集成为多标识,并且可以基于每个标识强制实施应用保护策略。 后续部分(阶段 6:应用程序配置和阶段 7:应用参与功能)可能是必需的,也可能不需要,具体取决于应用所需的应用保护策略支持。 如果不确定这些部分是否适用于你的应用,请重新访问 SDK 集成的关键决策。

Microsoft Intune App SDK for Android 允许将 Intune 应用保护策略 (也称为 APP 或 MAM 策略) 合并到本机 Java/Kotlin Android 应用中。 Intune 托管的应用程序是与 Intune 应用 SDK 集成的应用程序。 当 Intune 主动管理应用时,Intune 管理员可以轻松地将应用保护策略部署到 Intune 托管的应用。

  • 了解 Android 上的应用程序配置选项。
  • 确定应用程序应添加哪些配置(如果有)。
  • 集成 Intune App SDK 应用程序配置 API。
  • 为自定义应用程序配置实现冲突解决逻辑。

应用程序配置(也称为托管配置或应用程序限制)是特定于应用程序且由开发人员定义的设置,你可以添加到应用,以便管理员在托管设置中使用时对应用体验进行增强控制。 例如,如果你的应用是浏览器,你可以选择添加允许管理员预先设置书签、阻止某些网页或禁用隐身模式的配置。 应用程序配置是一种完全可选但功能强大的工具,可增强应用的管理体验。

有关更多详细信息,请参阅 Microsoft Intune 的应用配置策略 。

Android 在平台中内置了应用配置,称为 托管配置。 这些配置不依赖于 Intune 应用 SDK,可以在未集成 Intune 应用 SDK 的应用上启用。 只有在使用 Google Android Enterprise 模式之一管理的设备上使用应用程序时,这些配置才适用。 有关如何在 Microsoft Intune 中设置这些 Android Enterprise 模式的详细信息,请参阅 注册 Android 设备 。 管理员可以在 Microsoft Intune 中 为托管的 Android Enterprise 设备配置这些应用程序配置策略 。

应用可以通过 Android 或 Intune 应用 SDK 检索这些管理员配置的值。 有关详细信息 ,请参阅从 SDK 检索应用配置 。

应用开发人员可以使用 委托的范围 来集成其托管 Google Play 应用的增强权限。 委派范围为托管 Google Play 应用提供以下功能:

  • 允许其他应用安装和管理证书
  • 允许应用访问 Android 安全日志
  • 允许应用访问 Android 网络活动日志

使用 Google API 将这些功能集成到托管 Google Play 应用中后,可以使用设备配置文件在 Intune 中配置这些设置。 有关详细信息,请参阅 Android Enterprise 设备设置 - 应用程序。

有关应用实现的详细信息,请参阅 Android 开发人员文档 - 委派范围。

Intune 应用 SDK 支持另一种机制,用于提供应用配置,独立于 Android Enterprise 托管配置。 这些配置仅适用于 Microsoft Intune,仅适用于已集成 Intune 应用 SDK 的应用。 但是,这些配置并不局限于具有 Android Enterprise 管理的设备。 管理员可以在 Microsoft Intune 中 为托管应用配置这些应用程序配置策略 。

应用必须通过 Intune App SDK 检索这些管理员配置的值。 有关详细信息 ,请参阅从 SDK 检索应用配置 。

本指南无法回答此问题。 只有你和你的团队知道哪些功能使你的应用在管理下更有价值。

以下问题可能有助于指导讨论,并揭示你可能想要添加到应用的配置:

  • 你的应用目前提供哪些功能?
    • 在管理期间禁用这些功能是否有价值?
    • 在管理期间更改这些功能是否有价值?
  • 你的应用目前是如何在管理下使用的?
    • 管理员是否可以代表其用户预先配置任何选项?
    • 管理员或最终用户是否采取任何操作,但仅限于托管方案?
    • 托管用户是否请求了可能不适合整个用户群体的功能?

对于决定添加到应用的每个配置,都需要定义三项:

  • - 此字符串从其他设置中唯一标识此设置。 它应该是人工可读的,因为它将由管理员配置。
  • 类型 - 此设置是什么数据类型? 它是字符串、布尔值、整数、数组等吗?
  • 冲突解决策略 - 如果管理员为同一密钥配置多个值,应用将如何响应? 在上述浏览器示例中,书签列表可以合并所有值,而禁用 incognito 的设置可能会选择禁用任何冲突值为“true”。

应用于托管设备的配置和应用于托管应用的配置 不是互斥的。 在确定要支持的配置 (类型或两者) 时,应考虑用户的需求。

配置方面 托管设备的配置 托管应用的配置 设备适用性 仅适用于 Android Enterprise 设备管理下的设备。 适用于所有设备,前提是应用集成了 Intune 应用 SDK 并安装了公司门户。 平台 仅限 Android,仅限具有 Google 服务的设备 iOS 应用 SDK 支持相同的配置。 开发人员可以共享这些密钥,以便获得一致的跨平台体验。 适用性 任何 EMM Microsoft Intune 独占 架构可发现性 将应用上传到 Play 后,架构公开可用 开发人员控制下的架构可发现性

这两种类型的应用配置都依赖于键值对。 Microsoft Intune 不会检查这些配置的内容,只是将管理员配置的值传递给应用。

Intune App SDK 应用配置 API 包括 来自两个 通道的管理员配置的值。 如果应用支持这两种类型的应用配置,请使用 API,如下所述。

应用程序可以使用 MAMAppConfigManager 和 MAMAppConfig 类从两个通道接收配置。

 
  

如果没有已注册 MAM 的帐户,但应用仍希望检索 Android Enterprise 配置值, (这些值不会针对特定帐户) ,你可以为 OID 传递 或 空字符串。

你的应用还可以请求原始数据作为键值对集的列表,而不是按特定键进行查询。

 
  

你的应用还可以注册 通知,通知应用新的应用配置数据可用。 如果应用缓存应用配置数据,它 必须 注册此通知,并使处理程序中的任何缓存数据失效。 有关更多详细信息 ,请参阅从 SDK 注册通知 。

如果多个应用配置策略针对同一应用和帐户,则同一密钥可能有多个冲突值可用。

如果管理员为同一密钥配置冲突值,Intune 无法自动解决此冲突,并且会将所有值提供给应用。 如果管理员将具有相同密钥的不同应用配置集定向到包含同一帐户的多个组,则可能会出现此类冲突。

应用可以从 MAMAppConfig 对象请求给定密钥的所有值,以便解决与你自己的业务逻辑的冲突:

 
  

或者,可以使用内置冲突解决策略之一请求选择值:

 
  

可用的内置冲突解决策略包括:

  • , ,
  • , ,
  • 、 、 ,其中 min 和 max 来自按字母顺序排序的列表。

Intune 负责将应用配置策略值传递给应用;之后,你的应用负责使用这些值来更改应用内的行为或 UI。 彻底的端到端测试应涵盖这两个组件。

若要验证 Intune 是否正确交付应用配置策略,请执行以下操作:

  1. 配置面向你的应用并部署到测试帐户的应用配置策略。
    • 如果应用支持托管设备的应用配置,请参阅 托管 Android Enterprise 设备的应用程序配置策略。
    • 如果应用支持托管应用的应用配置,请参阅 托管应用的应用程序配置策略。
    • 如果应用支持这两种类型的应用配置,请创建这两种类型的策略用于测试。
  2. 使用测试帐户登录到应用。
    • 对于托管设备,请参阅 Android 企业应用配置策略 和 注册 Android 设备。
    • 对于托管应用:
      1. 安装应用和 Intune 公司门户。
      2. 使用测试帐户登录到应用。
  3. 浏览应用以练习调用 或 的每个代码路径。
    • 记录对 的调用 结果是验证传递了哪些设置的简单方法。 但是,由于管理员可以为应用配置设置输入任何数据,因此请注意不要记录任何专用用户数据。
  4. 请参阅 验证应用配置策略。

由于应用配置特定于应用,因此只有你知道如何验证应用应如何更改每个应用配置设置的行为或 UI。

测试时,请考虑以下事项:

  • 使用应用支持的每个值创建不同的测试应用配置策略,确保涵盖所有方案。
  • 通过为每个设置创建具有不同值的多个测试应用配置策略来验证应用的冲突解决逻辑。
  • 如果应用已注册 通知,请在应用处于活动状态时更新应用配置策略,等待策略更新,并确认正确执行此代码路径。
  • 如果应用支持这两种类型的应用配置,请测试这两种方案,以确保实现为 提供正确的标识。

完成上述所有 退出条件 后,应用现在已成功与应用配置策略集成。

后续部分 阶段 7:应用参与功能可能是必需的,也可能不需要,具体取决于应用所需的应用保护策略支持。 如果不确定其中任何功能是否适用于你的应用,请重新访问 SDK 集成的关键决策。

Microsoft Intune App SDK for Android 允许将 Intune 应用保护策略 (也称为 APP 或 MAM 策略) 合并到本机 Java/Kotlin Android 应用中。 Intune 托管的应用程序是与 Intune 应用 SDK 集成的应用程序。 当 Intune 主动管理应用时,Intune 管理员可以轻松地将应用保护策略部署到 Intune 托管的应用。

  • 了解 Intune 应用 SDK 提供的各种应用参与功能。
  • 集成与应用和用户相关的应用参与功能。
  • 测试这些功能的集成。

此 SDK 集成过程尝试将开发人员需要编写的特定于应用的代码量降至最低。 通过成功完成 SDK 集成的前一阶段,你的应用现在可以强制实施大多数应用保护策略设置,例如文件加密、复制/粘贴限制、屏幕截图阻止和数据传输限制。

但是,有些设置需要应用特定的代码才能正确强制执行;这些称为应用参与功能。 通常,SDK 没有足够的有关应用程序代码或最终用户方案的上下文来自动强制实施这些设置,因此依赖于开发人员适当地调用 SDK API。

应用参与功能不一定是可选的。 根据应用的现有功能,可能需要这些功能。 有关详细信息 ,请参阅 SDK 集成的关键决策 。

本指南的上一阶段已经介绍了多个应用参与功能:

  • 阶段 5:多标识中所述的多标识。
  • 阶段 6:应用配置中所述的应用配置。

本指南的其余部分介绍了剩余的应用参与功能集:

  • 强制实施策略,限制将文件保存到本地或云存储/从本地存储或云存储打开文件。
  • 强制实施限制通知中内容的策略。
  • 强制实施保护备份数据的策略。
  • 如果应用具有自定义屏幕捕获代码) ,则强制实施限制屏幕捕获 (策略。
  • 支持应用保护 CA。
  • 注册 SDK 中的通知。
  • 应用自定义应用程序主题。
  • 使用 Intune 中的受信任证书来确保对本地终结点的信任链。

AppPolicy 接口包含许多方法,可通知应用是否允许某些操作。

大多数应用参与功能包括:

  • 确定应用代码中的正确位置,以检查是否允许某个操作。
  • 调用方法 以根据当前配置的策略检查是否允许某个操作。
  • 根据结果,允许操作完成,或者在操作被阻止时修改应用行为。

若要检索 实例,请使用 MAMPolicyManager 方法之一,例如 或 。

中 并非每个方法都与应用参与功能相关联。 某些方法是信息性的,为应用提供当前配置了哪些策略的应用数据,即使 SDK 会自动强制执行这些策略也是如此。 这些方法的存在使你的应用有机会在配置特定策略时提供自定义用户体验。

示例:确定是否阻止屏幕截图

如果应用具有允许用户获取屏幕截图的控件,则如果应用保护策略阻止了屏幕截图,则可能需要禁用或隐藏该控件。

你的应用可以通过调用 来检查这一点。

许多应用允许最终用户将数据保存到本地文件存储或云存储服务或从本地文件存储服务打开数据。 Intune App SDK 允许 IT 管理员通过限制应用将数据保存到和打开数据的位置,防止数据进入和数据泄露。

API 可让你的应用知道是否允许根据配置的策略为给定标识保存到特定位置:

 
  

若要确定应用是否应实施 检查,请查看下表,确定应用是否支持数据出口:

参数: 枚举值 用例 关联的 OID 应用正在将数据保存到 OneDrive。 用于云服务身份验证和Microsoft Entra 身份验证的帐户的 OID。 如果此类帐户不存在或 OID 未知,请使用 。 应用程序正在将数据保存到 Sharepoint。 用于云服务身份验证和Microsoft Entra 身份验证的帐户的 OID。 如果此类帐户不存在或 OID 未知,请使用 。 此应用正在将数据保存到 Box。 用于云服务身份验证和Microsoft Entra 身份验证的帐户的 OID。 如果此类帐户不存在或 OID 未知,请使用 。 应用将数据保存到设备上的外部存储位置,该位置 不是 应用的专用存储。 外部存储不被视为云服务,因此应始终与 oid 参数一 起使用。 应用正在将数据保存到 Android 本地照片存储。 Android 本地照片存储不被视为云服务,因此应始终与 oid 参数一 起使用。 应用将数据保存到与应用中的帐户关联的位置,但不是上面指定的特定云位置之一。 *此位置应用于确定是否可以在多标识应用中的帐户之间传递数据。- 用于Microsoft Entra 身份验证的帐户的 OID。 如果此类帐户不存在或 OID 未知,请使用 。 应用将数据保存到上面未指定且不满足 的条件 的位置。 不会为此位置评估 ,因此应为 。

始终允许放置在专用应用存储中的文件,这些文件要么是应用操作所必需的,要么是临时下载以供显示的文件;无需检查 。 执行检查

  1. 保存在专用应用存储外部的文件。
  2. 下载到专用应用存储(无需执行应用操作)的文件 (例如,用户故意选择) 下载到设备。

通过 API,应用可以根据配置的策略知道给定标识是否允许从特定位置打开:

 
  

若要确定应用是否应实现 检查,请查看下表,确定应用是否支持数据入口:

参数: 枚举值 用例 关联的 OID 应用正在从 OneDrive 打开数据。 用于云服务身份验证和Microsoft Entra 身份验证的帐户的 OID。 如果此类帐户不存在或 OID 未知,请使用 。 应用正在从 Sharepoint 打开数据。 用于云服务身份验证和Microsoft Entra 身份验证的帐户的 OID。 如果此类帐户不存在或 OID 未知,请使用 。 应用正在打开来自相机的数据。 一个 值,因为设备相机不是云服务。 应用正在从设备上的外部存储位置( 不是 应用的专用存储)打开数据。 虽然外部存储不是云服务位置,但需要参数 ,因为它指示所有权。
从本地存储打开文件时,必须始终考虑文件所有者,因为文件所有者的保存策略可能允许或不允许其他标识打开文件:
- 对于标识标记的文件, 应是文件所有者的标识。
- 对于没有标识标记的文件, 应为 。


应用正在从 Android 照片本地存储打开数据。 Android 本地照片存储不被视为云服务,因此应始终与 oid 参数一 起使用。 应用从与应用中的帐户关联的位置打开数据,但不是上面指定的特定云位置之一。 *此位置应用于确定是否可以在多标识应用中的帐户之间传递数据。- 用于Microsoft Entra 身份验证的帐户的 OID。 如果此类帐户不存在或 OID 未知,请使用 。 应用正在从上面未指定且不满足 的条件 的位置打开数据。 不会为此位置评估 ,因此应为 。





SDK 提供了一个对话框,用于通知用户数据传输操作被 MAM 策略阻止。

每当 或 API 调用导致保存/打开操作被阻止时,都应向用户显示对话框。 对话框显示一条泛型消息,并在关闭时返回到调用 。

若要显示对话框,请添加以下代码:

 
  

如果不允许保存到公共存储位置,则应用仍应允许用户查看文件,方法是将文件下载到 应用专用存储 ,然后使用系统选择器打开这些文件。

对于单标识应用,当应用保护策略限制通知时,Intune 应用 SDK 的默认行为将尝试阻止 所有 通知。

SDK 的默认行为是有限的。 SDK 不能自动遵循“阻止组织数据”值,该值仅用于从通知中删除托管内容。 对于多标识应用,SDK 无法确定哪些通知包含托管内容。

如果你的应用显示通知,并且它是多标识和/或希望遵循“阻止组织数据”值,它必须在显示通知之前检查与通知关联的帐户的通知限制策略。

若要确定是否强制实施策略,请进行以下调用:

 
  

返回的 枚举具有以下值:

枚举 预期应用行为 应用 不得 显示与此策略关联的帐户的任何通知。 对于 单标识 应用,Intune 应用 SDK 将自动阻止所有通知,并且不需要其他代码。 应用必须显示不包含组织数据的修改通知。 应用应显示所有通知。

如果应用未正确调用 ,MAM SDK 将尽最大努力自动限制 仅针对单标识应用的通知。

在这种情况下, 被视为 相同 ,并且根本不显示通知。

若要进行更精细的控制,请检查 的值 并相应地修改应用通知。

Intune App SDK 可以阻止数据上传到 Android 的内置备份和还原功能。 若要了解有关 Android 中的备份和还原的详细信息,请参阅 Android API 指南 和 Android S /12 中引入的更改: 对备份和还原的更改。

从 Android M 开始,Android 开始为应用提供 Google Drive 的自动完整备份 ,而不考虑应用的目标 API。

Intune 允许你利用 Android 提供的所有自动备份功能,包括使用特定 Intune 集成指南在 XML 中定义自定义规则的功能,以确保应用数据保护。

默认情况下, 设置为 true ,如 启用和禁用备份中所述。

如果你的应用不需要完整的备份和还原功能,请将 设置为 false在这种情况下,无需采取进一步操作,并且“公司”数据将保留在应用中。

如果应用需要完整的备份和还原功能,请将 设置为 true 并执行以下附加步骤:

  1. 如果你的应用 不使用 自己的自定义 ,请使用默认 的 MAMBackupAgent ,以允许自动完整备份符合 Intune 策略。 在应用清单中放置以下内容:
     
  2. [可选] 如果实现了可选的自定义 ,则需要确保使用 MAMBackupAgent 或 MAMBackupAgentHelper。 请参阅以下部分。 请考虑切换到使用 Intune 的 MAMDefaultBackupAgent,如步骤 1 中所述,它可在 Android M 及更高版本上轻松备份。
  3. 当你决定应用应接收 (未筛选、筛选或无) 的完整备份类型时,需要在应用中将属性 设置为 true、false 或 XML 资源。
  4. 然后, 必须将 的值 复制到元数据标记中 ,对于支持 API 31 中添加的新 XML 配置格式的应用,则复制到元数据标记中 。
    • 示例 1:如果希望应用具有不带排除项的完整备份,则必须将属性和元数据标记设置为 true
       
    • 示例 2:如果希望应用使用其自定义 并选择退出完全、符合 Intune 策略的自动备份,则必须将属性和元数据标记设置为 false
       
    • 示例 3:如果希望应用根据 XML 文件中定义的自定义规则进行完整备份,请将属性和元数据标记设置为同一 XML 资源:
       

“键/值备份”选项可用于所有 API 8+,并将应用数据上传到 Android 备份服务。 每个应用的数据量限制为 5 MB。 如果使用键/值备份,则必须使用 BackupAgentHelper 或 BackupAgent。

BackupAgentHelper 在本机 Android 功能和 Intune MAM 集成方面,BackupAgentHelper 比 BackupAgentHelper 更容易实现,开发人员可以将整个文件和共享首选项分别注册到 和 (,) 创建后将其添加到 BackupAgentHelper。 按照以下步骤将 BackupAgentHelper 与 Intune MAM 配合使用:

  1. 若要使用 多标识备份, 请遵循 扩展 BackupAgentHelper 的 Android 指南。
  2. 让类扩展 BackupAgentHelper、FileBackupHelper 和 SharedPreferencesBackupHelper 的 MAM。
Android 类 MAM 等效项 BackupAgentHelper MAMBackupAgentHelper FileBackupHelper MAMFileBackupHelper SharedPreferencesBackupHelper MAMSharedPreferencesBackupHelper

遵循这些准则将导致成功的多标识备份和还原。

借助 BackupAgent,可以更明确地了解备份的数据。 由于开发人员对实现负有公平责任,因此需要执行更多步骤来确保 Intune 提供适当的数据保护。 由于大部分工作都由你(开发人员)完成,因此 Intune 集成会稍微增加一些。

集成 MAM:

  1. 仔细阅读 密钥/值备份 的 Android 指南,特别是 扩展 BackupAgent ,以确保 BackupAgent 实现遵循 Android 指南。
  2. 让类扩展 MAMBackupAgent。

多标识备份:

  1. 在开始备份之前,请检查 IT 管理员是否确实允许 在多标识方案中备份计划备份的文件或数据缓冲区。 在 MAMFileProtectionManager 和 MAMDataProtectionManager 中使用 来确定这一点。 如果不允许备份文件或数据缓冲区,则不应将其包含在备份中。
  2. 在备份过程中的某个时刻,如果要备份在步骤 1 中签入的文件的标识,则必须使用计划从中提取数据的文件进行调用 。 这会自动创建新的备份实体,并将它们写入到 中 。 还原时将自动使用这些实体。

多标识还原: 数据备份指南指定用于还原应用程序数据的常规算法,并在 扩展 BackupAgent 部分提供代码示例。 若要成功还原多标识,必须遵循此代码示例中提供的常规结构,并特别注意以下事项:

  1. 必须使用 * 循环来遍历备份实体。
  2. 如果与在 中编写的密钥不匹配,则必须调用 。 如果不执行此步骤,还原可能无法成功。
  3. 在 * 构造中使用 备份实体时避免返回 ,因为我们自动写入的实体将丢失。
  • 其中 是还原时传递给应用的 MAMBackupDataInput 的本地变量名称。

如果应用包含绕过 Android 级别限制的自定义屏幕捕获功能,则必须在允许完全访问该功能之前检查屏幕截图策略。 例如,如果应用使用自定义呈现引擎将当前视图呈现为 PNG 文件,则必须首先检查 。

应用保护 CA (条件访问) (也称为基于应用的 CA)限制对资源的访问,直到应用程序由 Intune 应用保护策略管理。 Microsoft Entra ID 通过要求应用在授予令牌以访问受 CA 保护的资源之前注册和管理应用来强制实施这一点。

为帐户获取令牌时,MSAL 库可能会返回或引发 , 以指示不符合应用保护策略管理。 可以从异常中提取其他参数以用于修正合规性 (请参阅 MAMComplianceManager) 。 修正成功后,应用可以通过 MSAL 重新尝试获取令牌。

从 MSAL 收到需要策略的错误时,将使用 MAMComplianceManager 接口。 它包含 [remediateCompliance] 方法,应调用该方法以尝试将应用置于合规状态。 可以按如下所示获取对 的引用:

 
  

返回 的实例保证不为 。

 
  

调用 方法以尝试将应用置于管理之下,以满足Microsoft Entra ID 授予所请求令牌的条件。 可以从 MSAL 方法收到的异常中提取前四个参数, (请参阅下面的代码示例) 。 最后一个参数是一个布尔值,用于控制在合规性尝试期间是否显示 UX。

显示一个简单的阻止进度对话框,因此应用不需要在此操作期间显示自定义的 UX。 仅当合规性修正正在进行时,才会显示此对话框;它不会显示最终结果。 你的应用可以为通知注册接收方 ,以处理合规性修正尝试的成功或失败。 有关详细信息 ,请参阅合规性状态通知 。

可以在建立合规性过程中启动 MAM 注册。 如果应用已注册注册通知接收方,则可能会收到注册通知。 已注册 的应用将调用其 方法来获取注册的令牌。 将在应用获取自己的令牌之前调用,因此,应用在成功获取令牌后执行的任何簿记或帐户创建任务可能尚未完成。 在这种情况下,回调必须能够获取令牌。

如果无法从 返回令牌,合规性修正尝试将失败。

如果稍后使用所请求资源的有效令牌调用 ,则会立即使用给定令牌重试符合性修正。

下面是在 方法中 接收需要策略的错误,并调用 MAMComplianceManager 来处理错误的示例。

 
  

如果应用注册了类型的 通知,则会发送 , 以便通知应用合规性修正尝试的最终状态。 有关 注册的详细信息,请参阅从 SDK 注册通知 。

 
  

方法 将符合性修正尝试的结果作为 [MAMCAComplianceStatus] 枚举的值返回。

状态代码 解释 状态未知。 这可能表示意外的失败原因。 可以在公司门户日志中找到其他信息。 合规性修正成功,应用现在符合策略。 应重试 MSAL 令牌获取。 修正符合性尝试失败。 应用不符合要求,在更正错误条件之前,不应重试 MSAL 令牌获取。 其他错误信息随 MAMComplianceNotification 一起发送。 尝试从 Intune 服务检索符合性数据时失败。 可以在公司门户日志中找到其他信息。 连接到 Intune 服务时出错。 恢复网络连接后,应用应再次尝试获取其令牌。 由于与客户端相关的某些原因,尝试修正符合性失败。 例如,没有令牌或错误的用户。 其他错误信息随 MAMComplianceNotification 一起发送。 尝试修正符合性失败,因为超出时间限制时尚未从服务收到状态响应。 应用应稍后再次尝试获取其令牌。 必须在设备上安装公司门户,才能成功进行合规性修正。 如果设备上已安装公司门户,则需要重启应用。 在这种情况下,将显示一个对话框,要求用户重启应用。

如果符合性状态为 ,则应用应为其自己的资源) 重新初始化其原始令牌获取 (。

如果符合性修正尝试失败, 和 方法将返回本地化字符串,如果应用选择,这些字符串可以显示给最终用户。 大多数错误情况无法由应用修复,因此对于一般情况,最好是帐户创建或登录失败,并允许用户稍后重试。

如果故障持续存在,公司门户日志可能有助于确定原因。 最终用户可以提交日志。 有关详细信息,请参阅 上传和电子邮件日志。

下面是使用匿名类注册接收器以实现 MAMNotificationReceiver 接口的示例:

 
  

应用准备好处理应用 CA 修正后,可以告知Microsoft标识应用已准备好应用 CA。 若要在 MSAL 应用程序中执行此操作,请使用“protapp”的客户端功能生成公共客户端

 
  

完成上述操作后,请继续执行下面的 验证应用保护 CA 。

Intune 应用 SDK 指南已经讨论了可能需要应用从 SDK 注册通知的几种方案,例如:

  • 处理 (的多标识应用请参阅 托管标识与非托管标识)
  • 处理 (的多标识应用请参阅 数据缓冲区保护) 。
  • 处理或 (的多标识应用请参阅选择性擦除) 。
  • 实现应用配置处理 的应用 (请参阅 从 SDK) 检索应用配置 。

本部分介绍 SDK 可以发送的每种类型的通知、应用程序何时以及为何要侦听它,以及如何实现通知接收器。

所有 SDK 通知都实现 MAMNotification 接口,该接口具有单个函数 ,返回 MAMNotificationType 枚举。

大多数通知都是 MAMUserNotification,它提供特定于单个标识的信息。 可以通过 函数检索 标识的 OID,并通过 检索 标识的 UPN。

MAMEnrollmentNotification 和 MAMComplianceNotification 进一步扩展 ,分别包含尝试向 MAM 服务注册用户/设备的结果和尝试修正应用保护 CA 符合性的结果。

通知类型 通知类 通知原因 适用性 处理提示 线程信息 返回合规性修正尝试的结果。 实现应用保护 CA 的应用必须处理此问题。 - 不确定性 返回注册尝试的结果。 所有应用都会收到此消息。 - 不确定性 应用即将变为非托管。 利用 的应用必须处理此问题。 请参阅下面的 MANAGEMENT_REMOVED 。 从不在 UI 线程上 应用配置值可能已更改。 实现应用配置和缓存应用配置数据的应用必须处理此问题。 应用必须使任何缓存的应用配置数据失效并更新。 不确定性 应用保护策略可能已更改。 缓存应用保护策略的应用必须处理此问题。 应用必须使任何缓存的应用保护策略数据失效并更新。 不确定性 擦除即将 (*) 进行。 利用 的应用必须处理此 。 请参阅 选择性擦除。 从不在 UI 线程上 擦除即将 (*) 进行。 只有多标识应用才会收到此消息。
利用 的应用必须处理此
请参阅 选择性擦除。 从不在 UI 线程上 擦除已完成。 始终可选。 在 或 之后交付。 *如果应用从处理程序或 报告失败,则不会发送此通知。- 从不在 UI 线程上

(*) 擦除可能出于多种原因,例如:

  • 名为 unregisterAccountForMAM 的应用。
  • IT 管理员启动了远程擦除。
  • 不符合管理员所需的条件访问策略。

通知 通知应用以前由策略管理的帐户即将变为非托管帐户。 帐户不受管理后,应用将无法再读取该帐户的加密文件、读取使用 加密的帐户数据、与加密的剪贴板进行交互,或者无法以其他方式参与托管应用生态系统。

这不需要擦除用户数据或注销用户 (如果需要擦除, 则会) 发送通知。 许多应用可能不需要处理此通知,但使用 的应用必须处理此通知。 有关详细信息 ,请参阅数据缓冲区保护 。

当 SDK 调用应用的 接收器时,以下情况将成立:

  • SDK 已解密以前加密的文件 (但未受保护的数据缓冲区) 属于应用。 sdcard 上公共位置中不直接属于应用的文件 (例如,不会解密) 文档或下载文件夹。
  • 接收方方法创建的新文件或受保护数据缓冲区 (接收方启动后运行的任何其他代码) 不会加密。
  • 应用仍有权访问加密密钥,因此解密数据缓冲区等操作会成功。

应用接收方返回后,将不再有权访问加密密钥。

若要从 SDK 注册通知,应用必须创建 MAMNotificationReceiver 并将其注册到 MAMNotificationReceiverRegistry。

若要注册接收方,请在方法中调用接收方和所需的通知类型:

 
  

应用的 MAMNotificationReceiver 实现必须包含 方法。 对于收到的每个通知,将单独调用此方法,并且必须返回 。 通常,此方法应始终返回 ,除非应用程序在响应通知时遇到失败。

与其他类型的 Android 接收器一样,应用程序在处理通知方面具有灵活性:

  • 它可以为不同的通知类型创建不同的 MAMNotificationReceiver 实现, (如下) 所述。 在这种情况下,请确保分别注册每个实现和每个通知类型。
  • 它可以使用单个 MAMNotificationReceiver 实现,其中包含用于响应多个不同通知类型的逻辑。 在这种情况下,必须为它可以响应的每种类型的通知注册它。
  • 它可能会创建多个 MAMNotificationReceiver 实现,每个实现都响应相同的通知类型。 在这种情况下,两者必须注册到相同的通知类型。

可以向 Intune 应用 SDK 提供自定义主题;此自定义主题将应用于所有 SDK 屏幕和对话框。 如果未提供主题,将使用默认 SDK 主题。

若要提供主题,需要在 方法中添加 以下代码行:

 
  

在上面的示例中,需要将 替换为 想要应用 SDK 的样式主题。

如果应用程序需要本地或专用证书颁发机构颁发的 SSL/TLS 证书来提供对内部网站和应用程序的安全访问,则 Intune 应用 SDK 已使用 API 类 MAMTrustedRootCertsManager 和 MAMCertTrustWebViewClient 添加了对证书信任管理的支持。

受信任的根证书管理支持:

  • SSLContext
  • SSLSocketFactory
  • TrustManager
  • WebView
  • 受信任的根证书管理需要为移动应用程序管理许可证Microsoft隧道。 若要了解详细信息,请访问: 使用移动应用程序管理Microsoft隧道。
  • 配置 Intune 应用配置策略,将受信任的根证书传递到 Android 上的业务线应用和 Edge。 请参阅: 将 Microsoft Tunnel VPN 用于未注册到 Microsoft Intune 的 Android 设备。

受信任的根证书管理允许应用将 Intune 中的受信任的根证书与来自设备的证书结合使用。

如果设备的受信任根证书存储区不包含所需的受信任的根证书,则 MAMTrustEdRootCertsManager 和 MAMCertTrustWebViewClient 使用通过应用配置策略提供的 Intune 受信任的根证书作为回退选项。 这样,应用可以使用设备和 Intune 证书来验证与受信任源的安全连接和通信。

为了增强其网络安全设置,应用可以使用网络安全配置 XML 文件。 受信任的根证书管理通过验证应用的网络安全配置 XML 是否具有以下任一功能来遵守此额外的安全性:

  • 具有其他 CA(例如自签名证书)的自定义信任定位点。
  • 用于限制受信任 CA 的特定于域的规则。
  • 特定域的证书的固定集。

如果其中任何一项适用于正在检查信任的域,则受信任的根证书管理将跳过此域的自定义信任检查,只允许平台的默认信任管理器执行检查。

类 MAMTrustedRootCertsManager

此类提供以下 API:

  • :创建一个 对象,该对象对指定的标识和指定的 SSL/TLS 协议使用受信任的根证书。 此类返回 的对象已使用 来自设备和 MAM 服务的组合受信任的根证书的对象正确初始化。
  • :创建一个 对象,该对象对指定的标识和指定的 SSL/TLS 协议使用受信任的根证书。 返回 的对象是从此类中的同一 对象引用的。
  • :创建一个对象数组 ,这些对象使用来自设备和 MAM 服务的组合受信任的根证书作为指定标识。

下面是使用此类的一些示例。

使用 HttpsUrlConnection 的示例
 
  
使用 OkHttpClient 的示例
 
  

类 MAMCertTrustWebViewClient

此类提供 Android 类的自定义实现,该类提供了一种处理 中的 SSL 错误的方法。 在处理错误时, 类使用在 Intune 中配置并从 MAM 服务接收的受信任根证书来检查中生成 SSL 错误的目标 URL 中的 主机的可信度。 如果自定义实现未处理 SSL 错误,则将调用从超类继承的默认行为。 使用此类时,应创建它的实例,然后调用 以将其注册到 实例。

下面是使用此类的示例。

使用 WebView 的示例
 
  

若要便于测试,请参阅 使用更改策略进行快速 测试。

如果未实施 策略来限制应用与设备或云存储位置之间的数据传输,请跳过。

重新熟悉应用可以将数据保存到云服务或本地数据以及从云服务或本地数据打开数据的每一种方案。

为简单起见,这些测试假定你的应用仅支持从应用中的单个位置保存到 OneDrive for Business 以及从 OneDrive for Business 打开数据。 但是,你必须验证每个组合:针对应用允许保存数据的每个位置的每个受支持的保存位置,以及针对应用允许打开数据的每个位置的每个受支持的打开位置。

对于这些测试,请安装应用和 Intune 公司门户;在开始测试之前,使用托管帐户登录。 此外:

  • 将托管帐户的策略设置为:
    • “将组织数据发送到其他应用”到“策略托管应用”。
    • “从其他应用接收数据”到“策略托管应用”。
应用场景 前提 条件 步骤 保存到,完全允许 将“保存组织数据的副本”策略设置为“允许” - 导航到应用可将数据保存到 OneDrive for Business 的位置。
- 尝试将文档保存到 OneDrive for Business,并将其保存到登录到应用的同一托管帐户。
- 确认是否允许保存。

保存到,豁免 - 将“保存组织数据的副本”策略设置为“阻止”
- “允许用户将副本保存到所选服务”策略设置为仅“OneDrive for Business”
- 导航到应用可将数据保存到 OneDrive for Business 的位置。
- 尝试将文档保存到 OneDrive for Business,并将其保存到登录到应用的同一托管帐户。
- 确认是否允许保存。
- 如果应用允许,请尝试将文件保存到其他云存储位置,并确认它已被阻止。


保存到,已阻止 “保存组织数据的副本”策略设置为“阻止” - 导航到应用可将数据保存到 OneDrive for Business 的位置。
- 尝试将文档保存到 OneDrive for Business,并将其保存到登录到应用的同一托管帐户。
- 确认已阻止保存。
- 如果应用允许,请尝试将文件保存到其他云存储位置,并确认它已被阻止。


打开自,完全允许 “将数据打开到组织文档中”策略设置为“允许” - 导航到应用可从 OneDrive for Business 打开数据的位置。
- 尝试从登录到应用存储的同一托管帐户从 OneDrive for Business 打开文档。
- 确认是否允许打开。

打开自,已免除 - “将数据打开到组织文档中”策略设置为“阻止”
- “允许用户从所选服务打开数据”策略设置为“OneDrive for Business”
- 导航到应用可从 OneDrive for Business 打开数据的位置。
- 尝试从登录到应用存储的同一托管帐户从 OneDrive for Business 打开文档。
- 确认是否允许打开。
- 如果应用允许,请尝试从其他云存储位置打开另一个文件,并确认它已被阻止。


打开自,已阻止 设置为“阻止”的“向组织文档打开数据”策略 - 导航到应用可从 OneDrive for Business 打开数据的位置。
- 尝试从登录到应用存储的同一托管帐户从 OneDrive for Business 打开文档。
- 确认打开已阻止。
- 如果应用允许,请尝试从其他云存储位置打开另一个文件,并确认它已被阻止。






































如果未实现 限制通知内内容的策略,请跳过。

就应用保护策略而言,应用程序可能会触发三种不同类型的通知:

  1. 不包含任何帐户数据的通知。
  2. 包含属于托管帐户的数据的通知。
  3. 包含属于非托管帐户的数据的通知。

如果应用程序是单一标识,则只有前 2 个标识相关,因为如果唯一帐户不受管理,则不会应用任何保护。

可以通过触发配置不同策略值的所有三种类型的通知来验证通知限制。

对于这些测试,请安装应用和 Intune 公司门户;在开始测试之前,使用托管帐户登录。 如果你的应用是多标识的,则还要使用非托管帐户登录到你的应用。

应用场景 前提 条件 步骤 阻止完整内容 “组织数据通知”策略设置为“阻止” - 触发应用以触发没有帐户数据的通知。
- 确认此通知不显示任何内容。
- 触发应用以使用托管帐户的数据触发通知。
- 确认此通知不显示任何内容。
- 触发应用以使用非托管帐户的数据触发通知。
- 确认此通知不显示任何内容。




部分内容被阻止 “组织数据通知”策略设置为“阻止组织数据” - 触发应用以触发没有帐户数据的通知。
- 确认此通知显示其完整内容。
- 触发应用以使用托管帐户的数据触发通知。
- 确认此通知会修订托管帐户的内容。
- 触发应用以使用非托管帐户的数据触发通知。
- 确认此通知显示其完整内容。




未阻止任何内容 “组织数据通知”策略设置为“允许”



















如果未实现 用于保护备份数据的策略,请跳过。

重新熟悉应用已配置备份的内容 (文件和/或键值对) 。 应验证 是否只有 预期的内容是还原的一部分。 还原中的额外内容可能会导致数据泄漏。

对于这些测试,请安装应用和 Intune 公司门户;在开始测试之前,使用托管帐户登录。 如果你的应用是多标识的,则还要使用非托管帐户登录到你的应用。

按照 Android 的官方说明测试备份。 这些说明与自动备份和键/值备份不同,因此请密切遵循。

如果未实现 自定义屏幕捕获限制,请跳过。

如果应用程序具有绕过 Android 级别 的功能,请验证此功能是否被应用保护策略屏幕捕获限制阻止。

对于这些测试,请安装应用和 Intune 公司门户;在开始测试之前,使用托管帐户登录。

应用场景 前提 条件 步骤 屏幕捕获已阻止 “屏幕捕获和 Google 助手”策略设置为“阻止” - 导航到应用中利用自定义FLAG_SECURE代码的位置。
- 尝试利用该功能。
- 确认该功能被阻止。

允许的屏幕捕获 将“屏幕捕获和 Google 助手”策略设置为“允许” - 导航到应用中利用自定义FLAG_SECURE代码的位置。
- 尝试利用该功能。
- 确认是否允许该功能。









如果未实现 支持应用保护 CA,请跳过。

除了创建应用保护策略并将其分配给应用和测试帐户的典型验证步骤外,还必须创建应用保护条件访问策略并将其分配给测试帐户。 有关详细信息 ,请参阅使用 Intune 设置基于应用的条件访问策略 。

测试步骤:

  1. 在开始此测试之前,请卸载 Microsoft Authenticator 和 Intune 公司门户。
  2. 安装应用。
  3. 使用应用保护策略和基于应用的 CA 策略的目标测试帐户登录到应用。
  4. 确认应用提示你安装公司门户。
  5. 再次登录。
  6. 确认应用提示你注册设备。 按照提示操作。 如果应用未在此处提示注册,请首先确认测试设备已卸载其他启用了 SDK 的应用、公司门户和 Authenticator。 如果这仍然没有提示,请重新访问上面的实现说明。
  7. 确认可以在注册后访问所有应用数据。

如果未从 SDK 实现注册通知,请跳过。

验证步骤取决于应用注册的通知类型。 对于所有类型的通知,请添加日志记录,以确保正确调用接收方。

只需先使用具有应用保护策略的帐户登录到应用程序即可触发。

和 可以通过更新针对测试帐户的相应应用配置策略和应用保护策略并等待 SDK 接收更新的策略来触发。

、 、 、 通知都可以通过从 Intune Microsoft 发出选择性擦除 来触发。

如果未实现 自定义主题,请跳过。

可以通过检查 SDK 对话框上的颜色来验证自定义主题支持。 要检查的最简单对话框是 MAM PIN 屏幕。

前提 条件:

  • 将托管帐户的策略设置为:
    • 将“用于访问的 PIN”更改为“必需”。
  • 安装应用和 Intune 公司门户。

测试步骤:

  1. 启动应用程序并使用测试帐户登录。
  2. 确认“MAM PIN”屏幕出现,并根据提供给 SDK 的自定义主题设置主题。

如果你按顺序遵循了本指南并已完成上述所有 退出条件 , 恭喜,你的应用现在已与 Intune 应用 SDK 完全集成,并且可以强制实施应用保护策略! 如果跳过了前面的应用参与部分之一 :阶段 5:多标识 和 阶段 6:应用配置,并且不确定应用是否应支持这些功能,请重新访问 SDK 集成的关键决策。

应用保护现在是应用的核心方案。 继续开发应用时,请继续参考本指南和 附录 。

到此这篇sdk检测工具(sdk测试方法)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • u盘没有安全弹出选项图标(u盘没有安全弹出就拔出来识别不了)2025-10-14 19:00:06
  • ipv6测试网址(ipv6测试网址schzoanzcn)2025-10-14 19:00:06
  • 文本框的测试用例(文本框测试用例设计)2025-10-14 19:00:06
  • ipv4测试(ipv4测试密码)2025-10-14 19:00:06
  • 有网页版的聊天工具(有网页版的聊天工具吗安全吗)2025-10-14 19:00:06
  • 哔哩哔哩二维码登录(哔哩哔哩二维码登录安全吗)2025-10-14 19:00:06
  • 列表的增删改查测试用例(实现对列表的增删改查功能)2025-10-14 19:00:06
  • 浏览器兼容性测试案例怎么写(浏览器兼容测试网站)2025-10-14 19:00:06
  • 自动驾驶信息安全(自动驾驶安全技术)2025-10-14 19:00:06
  • 网络ip测试(测试 ip)2025-10-14 19:00:06
  • 全屏图片