查看: 213|回复: 1

HarmonyOS 6.1.1 MDM Kit实战:Kiosk手势放通与企业重签名证书部署

[复制链接]
发表于 昨天 09:00 | 显示全部楼层 |阅读模式
在企业移动办公和政企数字化转型中,终端设备管控正从简单的Wi-Fi限制或应用黑名单,向物理层级的完全受控和业务场景的精细化放通演进。HarmonyOS 6.1.1(API 24)的MDM Kit(企业设备管理服务)针对锁屏级手势控制、企业专有重签名证书分发部署以及PC/2in1的Dock快捷栏管理,新增了三项重磅系统管理API。本文基于实测Demo,详细解析这些能力的技术实现与适配经验。

一、Kiosk模式手势特权:从“全锁死”到“按需放通”

在以往的Kiosk锁定模式下,系统会暴力拦截一切底部上滑与边缘内滑手势,导致用户无法调出系统底座或进行多任务流转。API 24新增了KioskFeature的四个特权级特征码,让企业可在维持Kiosk强占位安全前提下,弹性授权部分手势:
- ALLOW_NOTIFICATION_CENTER(1):允许左上方下滑进入通知中心
- ALLOW_CONTROL_CENTER(2):允许右上方下滑进入控制中心
- ALLOW_GESTURE_CONTROL(3):允许底部上滑停留唤起最近任务栏
- ALLOW_SIDE_DOCK(4):允许边缘内滑停留唤起侧边Dock栏

实际开发中,我们通过一个KioskFeatureConfig类维护四个特征的开关状态,调用时提取被允许的特征列表下发到底层EDM服务。注意,这些手势策略需要先激活EDM Admin(Want对象),否则会抛出9200001错误。我们的Demo中加入了沙箱级容错:当捕获到该错误时,控制台温和提示并进入模拟态。

二、企业应用重签名证书部署(securityManager)

企业自有应用通常通过AGC的重签名工具进行二次签名,然后静默分发到受控终端。API 24提供了安装与卸载两个接口:
- installEnterpriseReSignatureCertificate(admin, certificateAlias, fd, accountId)
- uninstallEnterpriseReSignatureCertificate(admin, certificateAlias, accountId)

参数要点:
- certificateAlias必须以“。cer”结尾,作为受控端唯一检索Key
- fd是已在应用沙箱内打开的重签名证书文件描述符
- accountId为目标本地账户ID(如主用户100)
- 同一用户下最多共存10本证书;重复安装相同别名的证书会抛出9200012错误,必须先卸载再覆盖更新

实战中遇到一个常见问题:真机沙箱中证书文件缺失导致openSync报错。我们引入了“沙箱动态占位文件流机制”:在点击安装按钮时,自动在应用专属的cacheDir目录下即时生成仿真重签名证书文件,并安全获取其文件描述符fd。这样保证API调用100%具备真实底层描述符句柄,防止运行时崩溃。生成后及时调用fs.closeSync关闭fd,避免泄漏。

三、PC/2in1底部Dock栏管控(applicationManager)

针对PC和2in1双模态终端,MDM Kit新增了三个Dock快捷栏管理接口:
- addDockApp(admin, bundleName, abilityName, index?):不传index则追加到末尾,否则在指定位置插入,后续应用自动顺移。系统严厉禁止添加“应用中心”、“任务中心”、“文件管理”和“回收站”四个基础应用,否则直接拦截报错。
- removeDockApp(admin, bundleName, abilityName):移除指定应用;若传入系统必留应用包名会报错9201018。
- getDockApps(admin):获取当前Dock栏应用数组,成员包含包名、Ability名称以及零基索引index。

我们的Demo控制台提供了Bundle包名、Ability名称和位置索引选择器(0-10),右侧模拟器列表实时展示装载状态。同时内置了“文件管理”和“回收站”的阻断校验,提升体验。注意:addDockApp和removeDockApp仅在PC或2in1设备上生效,手机/平板调用会抛出错误码801。Demo通过沙箱模拟自动降级,确保开发调试不中断。

四、沙箱级虚拟注入与仿真总线

由于真机或模拟器经常缺少已激活的EDM管理员资质,我们在代码层引入了“沙箱级虚拟注入与仿真总线”。核心逻辑是:在每个API调用前检测环境是否支持对应函数,如果不支持则记录日志并执行本地模拟操作(如插入模拟Dock列表、设置证书安装标志)。这样开发者无需真实EDM环境即可完成前端业务调试,待部署到受控设备时再移除模拟分支。

五、项目结构与代码示例

Demo的目录结构如下(仅展示关键):
  1. entry/
  2. ├── src/
  3. │ └── main/
  4. │ ├── ets/
  5. │ │ └── pages/
  6. │ │ ├── Index.ets(挂载本实战入口)
  7. │ │ └── MdmKitEnhanceDetail.ets(本期实战舱)
  8. │ └── resources/base/profile/main_pages.json
复制代码

下面是MdmKitEnhanceDetail.ets中核心的证书安装逻辑片段(完整代码见原文):
  1. // 获取应用专属沙箱缓存路径
  2. const cacheDir = getContext(this).cacheDir;
  3. const certPath = `${cacheDir}/${this.certAlias}`;
  4. // 建立证书实体并写入占位数据
  5. const file = fs.openSync(certPath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE);
  6. fs.writeSync(file.fd, 'Mock Enterprise Re-Signature Certificate Binary Data');
  7. // 调用安装接口(含沙箱兼容)
  8. if (securityManager && typeof securityManager.installEnterpriseReSignatureCertificate === 'function') {
  9.     securityManager.installEnterpriseReSignatureCertificate(this.adminWant, this.certAlias, file.fd, this.accountId);
  10. } else {
  11.     // 沙箱模拟:直接设置标志位
  12. }
  13. fs.closeSync(file.fd);
复制代码

注意:代码中应提前导入securityManager、applicationManager、Want、fileIo等模块。错误处理采用BusinessError类型捕获,并针对9200001、801等常见错误提供友好提示。

六、总结

HarmonyOS 6.1.1的MDM Kit增强特性为政企终端管控提供了锁屏手势精细化放通、企业重签名证书静默部署、PC Dock快捷栏灵活编排三大能力。开发者需注意:所有MDM API调用都依赖EDM Admin权限;证书别名必须“.cer”结尾;Dock操作受限平台和设备类型。通过沙箱模拟机制,可以实现在非受控环境下的全链路调试,降低开发门槛。这些API的合理使用能有效支撑企业从“全锁死”向“按需放通”的管控策略演进。
回复

使用道具 举报

发表于 昨天 09:05 | 显示全部楼层

Re: HarmonyOS 6.1.1 MDM Kit实战:Kiosk手势放通与企业重签名证书部署

感谢分享!干货满满。Kiosk 手势放通这块确实很实用,之前测试全锁死模式用户反馈操作体验差,现在能按需开放通知中心或侧边 Dock,灵活性高了很多。另外沙箱级虚拟注入的思路值得借鉴,开发阶段不用依赖真实 EDM 环境就能调通前端 UI,能省下不少调试时间。请问在证书部署环节,沙箱占位文件的模拟数据是否需要与真实证书格式保持某种对应关系?还是说只要 fd 句柄合法就可以绕过接口校验?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-15 01:56 , Processed in 0.032524 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部