diff --git a/zh-cn/application-dev/security/Readme-CN.md b/zh-cn/application-dev/security/Readme-CN.md index 57303b1522c8b35de1e69bb73abcb5bfc482e56b..37cd1817e37ebba14d1f6692269355dabe02523b 100644 --- a/zh-cn/application-dev/security/Readme-CN.md +++ b/zh-cn/application-dev/security/Readme-CN.md @@ -10,3 +10,7 @@ - Hap包签名工具 - [Hap包签名工具开发指导](hapsigntool-guidelines.md) + +- 访问控制 + - [访问控制开发概述](accesstoken-overview.md) + - [访问控制开发指导](accesstoken-guidelines.md) diff --git a/zh-cn/application-dev/security/accesstoken-guidelines.md b/zh-cn/application-dev/security/accesstoken-guidelines.md new file mode 100644 index 0000000000000000000000000000000000000000..398795358ba49a54922a6caad8ba4b245b5294b4 --- /dev/null +++ b/zh-cn/application-dev/security/accesstoken-guidelines.md @@ -0,0 +1,45 @@ +# 访问控制开发指导 + +## 场景介绍 + +当应用申请的权限需要用户授权,即申请的权限为user_grant权限时,可以通过权限校验,判断当前调用者是否具备相应权限。 + +## 接口说明 +接口的具体说明可以查阅[API参考](../reference/apis/js-apis-abilityAccessCtrl.md) +| 接口名 | 描述 | +| ------------------------------------------------------------ | ---------------- | +| verifyAccessToken(tokenID: number, permissionName: string): Promise<GrantStatus> | 校验应用是否授予权限,使用Promise方式异步返回结果。 | + +## 开发步骤 +对访问者进行权限校验的开发步骤为: + +1. 获取调用者的身份标识: tokenId +2. 识别需要校验的权限: permissionNameUser +3. 对当前调用者进行权限校验 + +代码示例如下: + +```js + import {describe, beforeEach, afterEach, it, expect} from 'deccjsunit/index' + import abilityAccessCtrl from '@ohos.abilityAccessCtrl' + import bundle from '@ohos.bundle' + + var permissionNameUser = "ohos.permission.ALPHA"; + var bundleFlag = 0; + var tokenID = undefined; + var userID = 100; + var appInfo = await bundle.getApplicationInfo('ohos.acts.security.access_token.normal', bundleFlag, userID); + tokenID = appInfo.accessTokenId; + console.log("AccessTokenTest accessTokenId:" + appInfo.accessTokenId + ", name:" + appInfo.name + + ", bundleName:" + appInfo.bundleName) + var atManager = abilityAccessCtrl.createAtManager(); + var result = await atManager.verifyAccessToken(tokenID, permissionNameUser); + if (result == abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) { + // 执行操作 + } else { + // 申请动态授权,使用接口:requestPermissionsFromUser + } + +``` +> **说明:** +动态授权申请接口的使用详见[API参考](../reference/apis/js-apis-ability-context.md) \ No newline at end of file diff --git a/zh-cn/application-dev/security/accesstoken-overview.md b/zh-cn/application-dev/security/accesstoken-overview.md new file mode 100644 index 0000000000000000000000000000000000000000..4488ab090a75f12a588f4cd1a5f23977485cc141 --- /dev/null +++ b/zh-cn/application-dev/security/accesstoken-overview.md @@ -0,0 +1,18 @@ +# 访问控制开发指南 + +## 功能简介 +ATM(AccessTokenManager)是OpenHarmony上基于AccessToken构建的统一的应用权限管理能力。 + +当前,ATM模块对三方应用提供了权限校验功能,三方应用可以检查当前访问者是否具有所需的权限。 + + +## 基本概念 + +当前,ATM提供的应用权限校验功能是基于统一管理的TokenID(Token identity)。 + +- TokenID:32bits的设备内唯一标识符,用于标识每个应用的Accestoken信息。 +- Accestoken信息:主要包括应用身份标识APPID、用户ID、应用分身索引、应用APL(Ability Privilege Level)、应用权限信息等。 + +## 约束与限制 + + - 三方应用不允许自定义权限,系统权限定义信息详见[权限定义信息](https://gitee.com/openharmony/resources/blob/master/systemres/main/config.json) \ No newline at end of file