From 2d5eff242994719354deafae82d67bf43c3a84f2 Mon Sep 17 00:00:00 2001 From: zengyawen Date: Mon, 13 Jun 2022 17:40:53 +0800 Subject: [PATCH] update docs Signed-off-by: zengyawen --- .../security/accesstoken-overview.md | 37 ++++++++++-------- .../permission-application-process.png | Bin 0 -> 47709 bytes .../security/permission-list.md | 13 ++++-- 3 files changed, 30 insertions(+), 20 deletions(-) create mode 100644 zh-cn/application-dev/security/figures/permission-application-process.png diff --git a/zh-cn/application-dev/security/accesstoken-overview.md b/zh-cn/application-dev/security/accesstoken-overview.md index f2e661d3c7..94feaa30c1 100644 --- a/zh-cn/application-dev/security/accesstoken-overview.md +++ b/zh-cn/application-dev/security/accesstoken-overview.md @@ -74,8 +74,9 @@ ATM(AccessTokenManager)是OpenHarmony上基于AccessToken构建的统一的应 | system_basic等级 | 该等级的应用服务提供系统基础服务。 | | normal等级 | 普通应用。 | -默认情况下,应用的APL等级都为normal等级,如果应用需要将自身的APL等级声明为system_basic及以上的APL等级,需要进行以下步骤: -- 开发应用安装包时,需要修改应用的[profile文件](../quick-start/app-provision-structure.md),在文件的"apl"字段声明应用的APL等级,并使用profile签名工具生成证书。具体签名流程可以查看页面[Hap包签名工具指导](hapsigntool-guidelines.md)。 +默认情况下,应用的APL等级都为normal等级。 + +如果应用需要将自身的APL等级声明为system_basic及以上的APL等级,在开发应用安装包时,要修改应用的profile文件。在文件的"apl"字段声明应用的APL等级,并使用profile签名工具生成证书。具体签名流程可以查看页面[Hap包签名工具指导](hapsigntool-guidelines.md)。 ### 权限等级说明 @@ -107,9 +108,24 @@ ATM(AccessTokenManager)是OpenHarmony上基于AccessToken构建的统一的应 **场景举例:** -开发者正在开发应用A,该应用的APL等级为normal级别。由于功能场景需要,应用A必须申请到权限B和权限C,其中,权限B的权限等级为system_basic,权限C的权限等级为normal级别。此时,推荐开发者使用ACL方式来申请权限B。 +开发者正在开发应用A,该应用的APL等级为normal级别。由于功能场景需要,应用A必须申请到权限B和权限C,其中,权限B的权限等级为system_basic,权限C的权限等级为normal级别。 + +在权限B的ACL使能为TRUE的情况下,此时,开发者可以使用ACL方式来申请权限B。 ACL方式的工作流程可以参考[ACL方式使用说明](#ACL方式使用说明)。 +权限的ACL使能情况可查阅[权限定义列表](permission-list.md)。 + +### ACL方式使用说明 + +如果应用申请的权限中,存在部分权限的权限等级比应用APL等级高,开发者可以选择通过ACL方式来解决这个等级不匹配的问题。 + +在上述的[授权流程](#不同权限类型的授权流程)的基础上,应用需要进行额外的ACL声明步骤。 + +应用除了需要在config.json文件声明所需申请的权限,还需要在应用的[profile文件中声明](accesstoken-guidelines.md#acl方式声明)不满足申请条件的高等级权限,接下来的授权流程不变。 + +**ACL申请方式须知** + +开发应用安装包时,需要修改应用的profile文件,在文件的"acl"字段声明目标的访问控制列表,并使用profile签名工具生成证书。具体签名流程可以查看页面[Hap包签名工具指导](hapsigntool-guidelines.md)。 ## 权限类型说明 @@ -131,7 +147,7 @@ ACL方式的工作流程可以参考[ACL方式使用说明](#ACL方式使用说 应用需要在应用商店的详情页面,向用户展示所申请的user_grant权限列表。 -## 不同权限类型的授权流程 +### 不同权限类型的授权流程 如[权限的工作流程](#权限的工作流程)所示,如果应用需要获取目标权限,那么需要先进行权限申请。 @@ -160,16 +176,3 @@ ACL方式的工作流程可以参考[ACL方式使用说明](#ACL方式使用说 - 如需检查用户是否已向您的应用授予特定权限,可以使用[verifyAccessToken](../reference/apis/js-apis-abilityAccessCtrl.md)函数,此方法会返回 [PERMISSION_GRANTED](../reference/apis/js-apis-abilityAccessCtrl.md)或[PERMISSION_DENIED](../reference/apis/js-apis-abilityAccessCtrl.md)。具体的示例代码可以查看[访问控制开发指导](accesstoken-guidelines.md)。 - user_grant权限授权要基于用户可知可控的原则,需要应用在运行时主动调用系统动态申请权限的接口,系统弹框由用户授权,用户结合应用运行场景的上下文,识别出应用申请相应敏感权限的合理性,从而做出正确的选择。 - 即使用户向应用授予过请求的权限,应用在调用受此权限管控的接口前,也应该先检查自己有无此权限,而不能把之前授予的状态持久化,因为用户在动态授予后还可以通过设置取消应用的权限。 - -### ACL方式使用说明 - -如果应用申请的权限中,存在部分权限的权限等级比应用APL等级高,开发者可以选择通过ACL方式来解决这个等级不匹配的问题。 - -在上述的[授权流程](#不同权限类型的授权流程)的基础上,应用需要进行额外的ACL声明步骤。 - -应用除了需要在config.json文件声明所需申请的权限,还需要在应用的[profile文件中声明](accesstoken-guidelines.md)不满足申请条件的高等级权限,接下来的授权流程不变。 - -**ACL申请方式须知** - -* 开发应用安装包时,需要修改应用的profile文件,在文件的"acl"字段声明目标的访问控制列表,并使用profile签名工具生成证书。具体签名流程可以查看页面[Hap包签名工具指导](hapsigntool-guidelines.md)。 - diff --git a/zh-cn/application-dev/security/figures/permission-application-process.png b/zh-cn/application-dev/security/figures/permission-application-process.png new file mode 100644 index 0000000000000000000000000000000000000000..85246f199f01c29f13018bc1841470dc20a54f61 GIT binary patch literal 47709 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 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/security/permission-list.md b/zh-cn/application-dev/security/permission-list.md index d9b781f954..1ed3deaf27 100644 --- a/zh-cn/application-dev/security/permission-list.md +++ b/zh-cn/application-dev/security/permission-list.md @@ -1,8 +1,14 @@ # 权限定义列表 -以下给出当前系统定义的权限信息列表。 +在符合[应用申请和使用权限的基本原则](accesstoken-overview.md#基本原则)的基础上,可以根据下图判断应用是否可以申请某权限。 -权限级别、授权方式、ACL使能的说明,请参考[访问控制开发概述](accesstoken-overview.md)。权限的使用示例请参考[访问控制开发指导](accesstoken-guidelines.md)。 +![](D:\doc-gitee\docs\zh-cn\application-dev\security\figures\permission-application-process.png) + +1. 应用APL等级与权限等级的匹配关系请参考[访问控制开发概述-权限等级说明](accesstoken-overview.md#权限等级说明)。 +2. 权限的授权方式分为user_grant(用户授权)和system_grant(系统授权),具体请参考[访问控制开发概述-权限类型说明](accesstoken-overview.md#权限类型说明)。 +3. 应用可以通过ACL(访问控制列表)方式申请高级别的权限,具体请参考[访问控制开发概述-访问控制列表说明](accesstoken-overview.md#访问控制列表acl说明)。 + +以下给出当前系统定义的权限信息列表。权限的使用示例请参考[访问控制开发指导](accesstoken-guidelines.md)。 | 权限名 | 权限级别 | 授权方式 | ACL使能 | 权限说明 | | -------------------------------------------------------- | ------------ | ------------ | ------- | ------------------------------------------------------------ | @@ -128,4 +134,5 @@ | ohos.permission.READ_HEALTH_DATA | normal | user_grant | TRUE | 允许应用读取用户的健康数据。 | | ohos.permission.GET_DEFAULT_APPLICATION | system_core | system_grant | TRUE | 允许应用查询默认应用。 | | ohos.permission.SET_DEFAULT_APPLICATION | system_core | system_grant | TRUE | 允许应用设置、重置默认应用。 | -| ohos.permission.MANAGE_DISPOSED_APP_STATUS | system_core | system_grant | TRUE | 允许设置和查询应用的处置状态。 | \ No newline at end of file +| ohos.permission.MANAGE_DISPOSED_APP_STATUS | system_core | system_grant | TRUE | 允许设置和查询应用的处置状态。 | +| ohos.permission.ACCESS_IDS | system_core | system_grant | TRUE | 允许应用查询设备的唯一标识符信息。 | \ No newline at end of file -- GitLab