Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
916a103e
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
916a103e
编写于
7月 18, 2023
作者:
Z
zengyawen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update permissions docs
Signed-off-by:
N
zengyawen
<
zengyawen1@huawei.com
>
上级
c63300fd
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
164 addition
and
16 deletion
+164
-16
zh-cn/application-dev/security/accesstoken-guidelines.md
zh-cn/application-dev/security/accesstoken-guidelines.md
+57
-8
zh-cn/application-dev/security/accesstoken-overview.md
zh-cn/application-dev/security/accesstoken-overview.md
+16
-8
zh-cn/application-dev/security/permission-group-list.md
zh-cn/application-dev/security/permission-group-list.md
+90
-0
zh-cn/application-dev/security/permission-list.md
zh-cn/application-dev/security/permission-list.md
+1
-0
未找到文件。
zh-cn/application-dev/security/accesstoken-guidelines.md
浏览文件 @
916a103e
...
...
@@ -6,10 +6,18 @@
本文将从如下场景分别介绍:
-
[
配置文件权限声明
](
#配置文件权限声明
)
-
[
ACL方式声明
](
#acl方式声明
)
-
[
向用户申请授权
](
#向用户申请授权
)
-
[
user_grant权限预授权
](
#user_grant权限预授权
)
-
[
访问控制授权申请指导
](
#访问控制授权申请指导
)
-
[
场景介绍
](
#场景介绍
)
-
[
配置文件权限声明
](
#配置文件权限声明
)
-
[
Stage模型
](
#stage模型
)
-
[
FA模型
](
#fa模型
)
-
[
权限使用理由的文案内容规范
](
#权限使用理由的文案内容规范
)
-
[
ACL方式声明
](
#acl方式声明
)
-
[
向用户申请授权
](
#向用户申请授权
)
-
[
Stage模型
](
#stage模型-1
)
-
[
FA模型
](
#fa模型-1
)
-
[
user\_grant权限预授权
](
#user_grant权限预授权
)
-
[
相关实例
](
#相关实例
)
## 配置文件权限声明
...
...
@@ -24,8 +32,8 @@
| 标签 | 是否必填 | 说明 |
| --------- | -------- | ------------------------------------------------------------ |
| name | 是 | 权限名称。 |
| reason | 否 | 描述申请权限的原因。
<br/>
>
**说明**
:当申请的权限为user_grant权限时,此字段必填。 |
| usedScene | 否 | 描述权限使用的场景和时机
。
<br/>
>
**说明**
:当申请的权限为user_grant权限时,此字段必填。 |
| reason | 否 | 描述申请权限的原因。
<br/>
>
**说明**
:当申请的权限为user_grant权限时,此字段必填。 |
| usedScene | 否 | 描述权限使用的场景和时机
,可参考
[
权限使用理由的文案内容规范
](
#权限使用理由的文案内容规范
)
。
<br/>
>
**说明**
:当申请的权限为user_grant权限时,此字段必填。 |
| abilities | 否 | 标识需要使用到该权限的Ability,标签为数组形式。
<br/>
**适用模型**
:Stage模型 |
| ability | 否 | 标识需要使用到该权限的Ability,标签为数组形式。
<br/>
**适用模型**
:FA模型 |
| when | 否 | 标识权限使用的时机,值为
`inuse/always`
。
<br/>
- inuse:表示为仅允许前台使用。
<br/>
- always:表示前后台都可使用。 |
...
...
@@ -98,6 +106,44 @@
}
```
### 权限使用理由的文案内容规范
当申请的权限为user_grant权限时,字段usedScene(权限使用理由和时机)必填。所有的user_grant权限均被归类到某个权限组中,使用时均通过
[
权限组
](
accesstoken-overview.md#权限组和子权限
)
进行申请。当前支持的权限组请查看
[
应用权限组列表
](
permission-group-list.md
)
。
**usedScene字段的内容写作规范及建议如下:**
1.
如果需要申请“电话、信息、日历、通讯录、通话记录”这五个权限组的权限,根据工信部要求,需要展示具体子权限的内容与用途。
**建议句式**
:
中文:包括子权限A和子权限B,用于某事。
英文:Includes: PermissionA and PermissionB. This is used to do/for something.
> **说明:**<br> 中文使用逗号分割,英文使用句点分割。
**示例**
:用于获取通话状态和移动网络信息,用于安全运营和统计计费服务。
2.
如果当前权限组申请不涉及子权限。
**建议句式**
:用于某事。
**示例**
:用于扫码拍照。
> **说明:**<br> 保持句子简洁、不要加入多余的分割符号。
3.
用途描述的字串建议小于72个字符(即36个中文字符,UI界面显示大约为两行)。不能超过256个字符,以免在多语言适配后体验不好。
4.
如果不写,将展示默认的申请理由。
**权限使用理由展示方式:**
向用户申请授权时,弹窗将以权限组维度显示,但在应用权限配置时,需要配置每个需要使用的子权限。
该用途有两个展示途径:授权弹窗界面和“设置(Settings)”界面。“设置”的具体路径:设置-隐私-权限管理-某应用某权限详情
系统将使用权限组内当前被申请的第一个子权限的使用理由,作为该权限组的使用理由进行展示。组内的排序,固定按照权限管理内排列的权限组数组顺序。举例说明:权限组A = {权限A, 权限B, 权限C};申请传入的是{权限C, 权限B},界面将展示权限B中的权限使用理由。
## ACL方式声明
当应用需要申请
`system_basic`
和
`system_core`
等级的权限时,比应用默认权限等级
`normal`
更高。如果需要申请的权限等级高于应用默认的等级,需要使用ACL方式声明使用。
...
...
@@ -120,7 +166,8 @@
当应用需要访问用户的隐私信息或使用系统能力时,例如获取位置信息、访问日历、使用相机拍摄照片或录制视频等,应该向用户请求授权。这需要使用
`user_grant`
类型权限。在此之前,应用需要进行权限校验,以判断当前调用者是否具备所需的权限。如果权限校验结果表明当前应用尚未被授权该权限,则应使用动态弹框授权方式,为用户提供手动授权的入口。示意效果如下图所示。
图1 向用户申请授权
图1 向用户申请授权
![](
figures/permission-read_calendar.png
)
> **说明**:
...
...
@@ -222,6 +269,7 @@
```
在UI中向用户申请授权。
```
typescript
import
abilityAccessCtrl
,
{
Permissions
}
from
'
@ohos.abilityAccessCtrl
'
;
import
common
from
'
@ohos.app.ability.common
'
;
...
...
@@ -300,6 +348,7 @@ reqPermissions() {
});
}
```
## user_grant权限预授权
应用在申请
`user_grant`
类型的权限默认未授权,需要通过拉起弹框由用户确认是否授予该权限。对于一些预制应用,不希望出现弹窗申请
`user_grant`
类型的权限,例如系统相机应用需要使用麦克风
` ohos.permission.MICROPHONE`
等权限,需要对麦克风等权限进行预授权,可以通过预授权的方式完成
`user_grant`
类型权限的授权。
[
预置配置文件
](
https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/preinstall-config/install_list_permissions.json
)
在设备上的路径为
`/system/etc/app/install_list_permission.json`
,设备开机启动时会读取该配置文件,在应用安装会对在文件中配置的
`user_grant`
类型权限授权。预授权配置文件字段内容包括
`bundleName`
、
`app_signature`
和
`permissions`
。
...
...
@@ -308,7 +357,7 @@ reqPermissions() {
-
`permissions`
字段中
`name`
配置为需要预授权的
`user_grant`
类型的权限名;
`permissions`
字段中
`userCancellable`
表示为用户是否能够取消该预授权,配置为true,表示支持用户取消授权,为false则表示不支持用户取消授权。
> **说明**:
>
>
> 当前仅支持预置应用配置该文件。
```
json
...
...
zh-cn/application-dev/security/accesstoken-overview.md
浏览文件 @
916a103e
...
...
@@ -22,7 +22,6 @@ ATM (AccessTokenManager) 是OpenHarmony上基于AccessToken构建的统一的应
-
应用在首次启动时,避免频繁弹窗申请多个权限;权限须在用户使用对应业务功能时动态申请。
-
用户拒绝授予某个权限时,与此权限无关的其他业务功能应能正常使用,不能影响应用的正常注册或登录。
-
业务功能所需要的权限被用户拒绝且禁止后不再提示,当用户主动触发使用此业务功能或为实现业务功能所必须时,应用程序可通过界面内文字引导,让用户主动到“系统设置”中授权。
-
当前不允许应用自行定义权限,应用申请的权限应该从
[
已有的权限列表
](
permission-list.md
)
中选择。
## 权限的工作流程
...
...
@@ -54,6 +53,7 @@ ATM (AccessTokenManager) 是OpenHarmony上基于AccessToken构建的统一的应
3:应用可以通过ACL(访问控制列表)方式申请高级别的权限,具体请参考
[
访问控制列表(ACL)说明
](
#访问控制列表acl说明
)
。
### 权限校验的工作流程
应用在提供对外功能服务接口时,可以根据接口涉数据的敏感程度或所涉能力的安全威胁影响,在
[
权限定义列表
](
permission-list.md
)
选择合适的权限保护当前接口,对访问者进行权限校验。
当且仅当访问者获取当前接口所需权限后,才能通过当前接口的权限校验,并正常使用当前应用提供的目标功能。
...
...
@@ -70,7 +70,7 @@ ATM (AccessTokenManager) 是OpenHarmony上基于AccessToken构建的统一的应
3:应用可以使用权限校验接口对访问者进行鉴权,可参考
[
权限校验说明
](
permission-verify-guidelines.md
)
。
## 权限等级
说明
## 权限等级
根据接口所涉数据的敏感程度或所涉能力的安全威胁影响,ATM模块定义了不同开放范围的权限等级来保护用户隐私。
...
...
@@ -130,7 +130,7 @@ ATM (AccessTokenManager) 是OpenHarmony上基于AccessToken构建的统一的应
-
**system_core权限**
system_core权限涉及到开放操作系统核心资源的访问操作。这部分系统资源是系统最核心的底层服务,如果遭受破坏,操作系统将无法正常运行。
鉴于该类型权限对系统的影响程度非常大,目前暂不向任何三方应用开放。
## 权限类型说明
...
...
@@ -153,6 +153,14 @@ ATM (AccessTokenManager) 是OpenHarmony上基于AccessToken构建的统一的应
应用需要在应用商店的详情页面,向用户展示所申请的user_grant权限列表。
### 权限组和子权限
为了仅可能减少系统弹出的权限弹窗数量,优化交互体验,系统将逻辑紧密相关的user_grant权限组合在一起,形成多个权限组。
当应用请求权限时,同一个权限组的权限将会在一个弹窗内一起请求用户授权。权限组中的某个权限,称之为该权限组的子权限。
权限组和权限的归属关系并不是固定不变的,一个权限所属的权限组有可能发生变化。当前系统支持权限组请查阅
[
应用权限组列表
](
permission-group-list.md
)
。
### 不同权限类型的授权流程
如
[
权限的工作流程
](
#权限的工作流程
)
所示,如果应用需要获取目标权限,那么需要先进行权限申请。
...
...
@@ -163,14 +171,14 @@ ATM (AccessTokenManager) 是OpenHarmony上基于AccessToken构建的统一的应
-
权限授权
-
如果目标权限是system_grant类型,开发者在进行权限申请后,系统会在安装应用时自动为其进行权限预授予,开发者不需要做其他操作即可使用权限。
-
如果目标权限是user_grant类型,开发者在进行权限申请后,在运行时触发动态弹窗,请求用户授权,具体操作见
[
user_grant权限请求授权的步骤详解
](
#user_grant权限请求授权的步骤详解
)
。
-
如果目标权限是system_grant类型,开发者在进行权限申请后,系统会在安装应用时自动为其进行权限预授予,开发者不需要做其他操作即可使用权限。
-
如果目标权限是user_grant类型,开发者在进行权限申请后,在运行时触发动态弹窗,请求用户授权,具体操作见
[
user_grant权限请求授权的步骤详解
](
#user_grant权限请求授权的步骤详解
)
。
### user_grant权限请求授权的步骤详解
在应用需要获取user_grant权限时,请完成以下步骤:
1.
在配置文件中,声明应用需要请求的权限,详见
[
访问控制开发指导
](
accesstoken-guidelines.md
)
。
1.
在配置文件中,声明应用需要请求的权限,详见
[
访问控制开发指导
-配置文件权限声明
](
accesstoken-guidelines.md#配置文件权限声明
)
。
2.
将应用中需要申请权限的目标对象与对应目标权限进行关联,让用户明确地知道,哪些操作需要用户向应用授予指定的权限。
...
...
@@ -178,10 +186,10 @@ ATM (AccessTokenManager) 是OpenHarmony上基于AccessToken构建的统一的应
4.
检查用户的授权结果,确认用户已授权才可以进行下一步操作。
**注意事项:**
**注意事项:**
-
每次执行需要目标权限的操作时,应用都必须检查自己是否已经具有该权限。
-
如需检查用户是否已向您的应用授予特定权限,可以使用
[
checkAccessToken
](
../reference/apis/js-apis-abilityAccessCtrl.md#checkaccesstoken9
)
函数,此方法会返回
[
PERMISSION_GRANTED
](
../reference/apis/js-apis-abilityAccessCtrl.md
)
或
[
PERMISSION_DENIED
](
../reference/apis/js-apis-abilityAccessCtrl.md
)
。具体的示例代码可以查看
[
访问控制开发指导
](
accesstoken-guidelines.md
)
。
-
如需检查用户是否已向您的应用授予特定权限,可以使用
[
checkAccessToken
](
../reference/apis/js-apis-abilityAccessCtrl.md#checkaccesstoken9
)
函数,此方法会返回
[
PERMISSION_GRANTED
](
../reference/apis/js-apis-abilityAccessCtrl.md
)
或
[
PERMISSION_DENIED
](
../reference/apis/js-apis-abilityAccessCtrl.md
)
。具体的示例代码可以查看
[
访问控制开发指导
](
accesstoken-guidelines.md
#向用户申请授权
)
。
-
user_grant权限授权要基于用户可知可控的原则,需要应用在运行时主动调用系统动态申请权限的接口,系统弹框由用户授权,用户结合应用运行场景的上下文,识别出应用申请相应敏感权限的合理性,从而做出正确的选择。
-
即使用户向应用授予过请求的权限,应用在调用受此权限管控的接口前,也应该先检查自己有无此权限,而不能把之前授予的状态持久化,因为用户在动态授予后还可以通过设置取消应用的权限。
...
...
zh-cn/application-dev/security/permission-group-list.md
0 → 100644
浏览文件 @
916a103e
# 应用权限组列表
在申请目标权限前,建议开发者先阅读
[
访问控制开发概述-权限组和子权限
](
accesstoken-overview.md#权限组和子权限
)
,了解权限组和子权限的概念,再合理申请对应的权限组。
当前系统支持权限组如下所示,各子权限的含义请查阅
[
应用权限列表
](
permission-list.md
)
。
## 位置信息
-
ohos.permission.LOCATION_IN_BACKGROUND
-
ohos.permission.LOCATION
-
ohos.permission.APPROXIMATELY_LOCATION
## 相机
-
ohos.permission.CAMERA
## 麦克风
-
ohos.permission.MICROPHONE
## 媒体和文件
-
ohos.permission.MEDIA_LOCATION
-
ohos.permission.READ_MEDIA
-
ohos.permission.WRITE_MEDIA
## 日历
-
ohos.permission.READ_CALENDAR
-
ohos.permission.WRITE_CALENDAR
-
ohos.permission.READ_WHOLE_CALENDAR
-
ohos.permission.WRITE_WHOLE_CALENDAR
## 健身运动
-
ohos.permission.ACTIVITY_MOTION
## 身体传感器
-
ohos.permission.READ_HEALTH_DATA
## 多设备协同
-
ohos.permission.DISTRIBUTED_DATASYNC
## 电话
-
ohos.permission.ANSWER_CALL
-
ohos.permission.MANAGE_VOICEMAIL
## 通讯录
-
ohos.permission.READ_CONTACTS
-
ohos.permission.WRITE_CONTACTS
## 通话记录
-
ohos.permission.READ_CALL_LOG
-
ohos.permission.WRITE_CALL_LOG
## 信息
-
ohos.permission.READ_CELL_MESSAGES
-
ohos.permission.READ_MESSAGES
-
ohos.permission.RECEIVE_MMS
-
ohos.permission.RECEIVE_SMS
-
ohos.permission.RECEIVE_WAP_MESSAGES
-
ohos.permission.SEND_MESSAGES
## 音乐和音频
-
ohos.permission.WRITE_AUDIO
-
ohos.permission.READ_AUDIO
## 文件
-
ohos.permission.READ_DOCUMENT
-
ohos.permission.WRITE_DOCUMENT
-
ohos.permission.READ_MEDIA
-
ohos.permission.WRITE_MEDIA
## 图片和视频
-
ohos.permission.WRITE_IMAGEVIDEO
-
ohos.permission.READ_IMAGEVIDEO
-
ohos.permission.MEDIA_LOCATION
## 广告跟踪
-
ohos.permission.APP_TRACKING_CONSENT
zh-cn/application-dev/security/permission-list.md
浏览文件 @
916a103e
...
...
@@ -593,6 +593,7 @@
**ACL使能**
:TRUE
**起始版本**
:7
## ohos.permission.ACCELEROMETER
允许应用读取加速度传感器的数据。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录