访问控制开发指导,有谁知道吗?

访问控制开发指导


HarmonyOS
2024-05-22 22:22:52
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
hflame

ATM(AccessTokenManager)是OpenHarmony上基于AccessToken构建的统一的应用权限管理能力。默认情况下,应用只能访问有限的系统资源;但某些情况下,应用为了扩展功能的诉求,需要访问额外的系统或其他应用的数据(包括用户个人数据)、功能;系统或应用也必须以明确的方式对外提供接口来共享其数据或功能。

当应用访问操作目标对象时,目标对象会对应用进行权限检查,如果没有对应权限,则访问操作将被拒绝。

权限等级说明

应用权限等级包括应用APL等级和访问控制列表(ACL)两部分。

应用APL等级可以分为三个等级,分别是:

APL级别

说明

system_core

该等级的应用服务提供操作系统核心能力。

system_basic

该等级的应用服务提供系统基础服务。

normal

普通应用。


默认情况下,应用的APL等级都为normal等级,APL等级级别:normal < system_basic < system_core。原则上,拥有低APL等级的应用默认无法申请更高等级的权限。访问控制列表ACL(Access Control List)提供了解决低等级应用访问高等级权限问题的特殊渠道。

权限类型说明

根据授权方式的不同,权限类型可分为system_grant(系统授权)和user_grant(用户授权)。

典型场景

开发者正在开发应用A,该应用的APL等级为normal级别。由于功能场景需要,应用A必须申请到权限B和权限C,其中,权限B的权限等级为system_basic,权限C的权限等级为normal级别。假如应用没有提升访问控制权限等级,就会报错:install failed due to grant request permissions failed。遇到该报错,首先检查module.json5文件申请权限是否全是必需权限,如果无法进一步删减,则需要手动签名提升应用权限。

签名前准备

安装python3.5以上

安装JDK1.8以上

IDE自动签名

1. 下载Hap包签名工具。

2. 拷贝developtools_hapsigner/dist下的hap-sign-tool.jar文件到developtools_hapsigner/autosign目录。

3. 修改developtools_hapsigner/autosign目录下的UnsgnedReleasedProfileTemplate.json文件。

4. 图中1的位置bundle-name修改为自己应用的bundleName,图中2的位置填写自己应用需要申请的所有权限。

5. 修改developtools_hapsigner/autosign目录下的autosign.py文件,把标记的两个去掉。

6. developtools_hapsigner/autosign目录下的createAppCertAndProfile.config文件第一行config.signtool修改为:config.signtool=./hap-sign-tool.jar。

7. 执行developtools_hapsigner/autosign目录下的create_appcert_sign_profile.bat脚本,会在developtools_hapsigner\autosign\result目录下生成app1.pem、app1-profile.p7b、OpenHarmony.p12三个文件。

8. 通过DevEco编译Hap包,拷贝unsigned后缀的文件到developtools_hapsigner\autosign目录下。

9. 修改developtools_hapsigner/autosign目录下的signHap.config文件。

10. 图中1的位置config.signtool修改为config.signtool=./hap-sign-tool.jar,图中2的位置填写第7步拷贝过来的unsigned的Hap包文件名,图中3的位置可以自定义签名后的Hap包文件名。

11. 运行developtools_hapsigner/autosign目录下的sign_hap.bat,签名成功后会在developtools_hapsigner\autosign\result目录下生成签名好的Hap包。

12. 执行hdc_std install -r 签名Hap包文件路径可以将签名好的Hap包安装到设备上。

分享
微博
QQ
微信
回复
2024-05-23 15:52:52
相关问题
有谁知道常用AppFreeze使用指导
269浏览 • 1回复 待解决
JSVM使用示例,有谁知道吗
473浏览 • 1回复 待解决
动态页面跳转方案,有谁知道吗
797浏览 • 1回复 待解决
同进程多Hap问题 ,有谁知道吗
610浏览 • 1回复 待解决
有谁知道常用hdc命令使用指导
1125浏览 • 1回复 待解决
有谁知道如何访问沙盒路径
24浏览 • 1回复 待解决
有谁知道ArkTS支持隐式跳转
745浏览 • 1回复 待解决
有谁知道ArkTS支持定时器
1166浏览 • 1回复 待解决
有谁知道flexBasis使用问题
464浏览 • 1回复 待解决
有谁知道如何生成UUID
648浏览 • 1回复 待解决
有谁知道如何创建 JSONObject
38浏览 • 1回复 待解决
有谁知道可以直接使用so库
526浏览 • 1回复 待解决
有谁知道如何主动关闭应用
800浏览 • 1回复 待解决
有谁知道沙箱目录怎么获取
1041浏览 • 1回复 待解决
有谁知道Image图片取反色
931浏览 • 1回复 待解决
有谁知道应用升级的方式
863浏览 • 1回复 待解决
有谁知道如何获取IMEI码
839浏览 • 1回复 待解决
有谁知道如何屏蔽触摸事件
639浏览 • 1回复 待解决
有谁知道是否支持帧动画
940浏览 • 1回复 待解决
有谁知道an\ai文件是什么
723浏览 • 1回复 待解决
有谁知道如何监听屏幕旋转
846浏览 • 1回复 待解决
有谁知道如何强制退出app?
26浏览 • 1回复 待解决