ATM (AccessTokenManager) 是OpenHarmony上基于AccessToken构建的统一的应用权限管理能力。

权限申请使用的工作流程

opentelemetry collector 部署模式 open system approach_字符串

判断应用能否申请目标权限 

opentelemetry collector 部署模式 open system approach_用户授权_02

 应用使用权限校验的工作流程

opentelemetry collector 部署模式 open system approach_bundle_03

 应用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"
}