ATM (AccessTokenManager) 是OpenHarmony上基于AccessToken构建的统一的应用权限管理能力。
权限申请使用的工作流程
判断应用能否申请目标权限
应用使用权限校验的工作流程
应用APL等级
APL级别 | 说明 |
system_core等级 | 该等级的应用服务提供操作系统核心能力。 |
system_basic等级 | 该等级的应用服务提供系统基础服务。 |
normal等级 | 普通应用。 |
权限类型说明
根据授权方式的不同,权限类型可分为system_grant(系统授权)和user_grant(用户授权)。
- system_grant
system_grant指的是系统授权类型,在该类型的权限许可下,应用被允许访问的数据不会涉及到用户或设备的敏感信息,应用被允许执行的操作不会对系统或者其他应用产生大的不利影响。
如果在应用中申请了system_grant权限,那么系统会在用户安装应用时,自动把相应权限授予给应用。应用需要在应用商店的详情页面,向用户展示所申请的system_grant权限列表。 - user_grant
user_grant指的是用户授权类型,在该类型的权限许可下,应用被允许访问的数据将会涉及到用户或设备的敏感信息,应用被允许执行的操作可能对系统或者其他应用产生严重的影响。
该类型权限不仅需要在安装包中申请权限,还需要在应用动态运行时,通过发送弹窗的方式请求用户授权。在用户手动允许授权后,应用才会真正获取相应权限,从而成功访问操作目标对象。比如说,在权限定义列表中,麦克风和摄像头对应的权限都是属于用户授权权限,列表中给出了详细的权限使用理由。应用需要在应用商店的详情页面,向用户展示所申请的user_grant权限列表。
访问控制列表(ACL)使用说明
CL申请方式须知
开发应用安装包时,需要修改应用的Profile文件,在文件的"acl"字段声明目标的访问控制列表。然后使用hap包签名工具生成证书。
注意:
直接修改应用Profile文件的方式,仅用于应用/服务调试阶段使用,不可用于发布上架应用市场。如果需要开发商用版本的应用,请在对应的应用市场进行发布证书和Profile文件的申请。
{
"acls": {
"allowed-acls": [
"ohos.permission.PERMISSION"
]
},
}
HarmonyAppProvision配置文件的说明(profile文件)
HarmonyAppProvision文件包含version-code对象、version-name对象、uuid对象、type对象、issuer对象、validity对象、bundle-info对象、acls对象、permissions对象、debug-info对象等部分组成。
表1 配置文件内部结构说明
属性名称 | 含义 | 数据类型 | 是否必选 | 是否可缺省 |
version-code | 表示HarmonyAppProvision文件格式的版本号,取值范围为二进制32位以内的正整数。 | 数值 | 必选 | 不可缺省 |
version-name | 表示版本号的文字描述,推荐使用三段数字版本号,如A.B.C。 | 字符串 | 必选 | 不可缺省 |
uuid | 表示文件的唯一ID号,用于OEM厂商标识HarmonyAppProvision文件,开源社区版本该属性不做强制要求。 | 字符串 | 必选 | 不可缺省 |
type | 表示HarmonyAppProvision文件的类型, 系统预定义的文件类型包括:debug(用于应用调试场景)和release(用于应用发布场景) ,开源社区版本该属性值建议为debug。 | 字符串 | 必选 | 不可缺省 |
issuer | 表示HarmonyAppProvision签发者。 | 字符串 | 必选 | 不可缺省 |
validity | 表示HarmonyAppProvision文件有效期的信息。参考validity对象内部结构。 | 对象 | 必选 | 不可缺省 |
bundle-info | 表示应用包以及开发者的信息。参考bundle-info对象内部结构。 | 对象 | 必选 | 不可缺省 |
acls | 表示授权的acl权限信息。参考acls对象内部结构。 | 对象 | 可选 | 不可缺省 |
permissions | 表示允许使用的受限敏感权限信息。参考permissions对象内部结构。 | 对象 | 可选 | 不可缺省 |
debug-info | 表示应用调试场景下的额外信息。参考debug-info对象内部结构。 | 对象 | 可选 | 不可缺省 |
HarmonyAppProvision文件示例:
{
"version-code": 1,
"version-name": "1.0.0",
"uuid": "string",
"type": "debug",
"validity": {
"not-before": 1586422743,
"not-after": 1617958743
},
"bundle-info" : {
"developer-id": "OpenHarmony",
"development-certificate": "Base64 string",
"distribution-certificate": "Base64 string",
"bundle-name": "com.OpenHarmony.app.test",
"apl": "normal",
"app-feature": "hos_normal_app"
},
"acls": {
"allowed-acls": ["string"]
},
"permissions": {
"restricted-permissions": ["string"]
},
"debug-info" : {
"device-id-type": "udid",
"device-ids": ["string"]
},
"issuer": "OpenHarmony"
}