Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
e876fcc7
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看板
提交
e876fcc7
编写于
11月 21, 2022
作者:
Y
youliang_1314
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update iam
Signed-off-by:
N
youliang_1314
<
youliang4@huawei.com
>
上级
a572afec
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
333 addition
and
247 deletion
+333
-247
zh-cn/application-dev/reference/apis/js-apis-useriam-faceauth.md
...pplication-dev/reference/apis/js-apis-useriam-faceauth.md
+6
-10
zh-cn/application-dev/reference/apis/js-apis-useriam-userauth.md
...pplication-dev/reference/apis/js-apis-useriam-userauth.md
+198
-135
zh-cn/application-dev/security/userauth-guidelines.md
zh-cn/application-dev/security/userauth-guidelines.md
+120
-93
zh-cn/application-dev/security/userauth-overview.md
zh-cn/application-dev/security/userauth-overview.md
+9
-9
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-useriam-faceauth.md
浏览文件 @
e876fcc7
...
...
@@ -56,6 +56,12 @@ setSurfaceId(surfaceId: string): void;
| -------------- | ---------------------------------- | ---- | -------------------------- |
| surfaceId | string | 是 |
[
XComponent
](
../arkui-ts/ts-basic-components-xcomponent.md#getxcomponentsurfaceid
)
持有 Surface 的 ID。 |
| 错误码ID | 错误信息 |
| -------- | ------- |
| 201 | Permission verification failed. |
| 202 | The caller is not a system application. |
| 12700001 | The operation is failed. |
**示例:**
```
js
...
...
@@ -70,13 +76,3 @@ setSurfaceId(surfaceId: string): void;
console
.
error
(
"
set surface id failed, error =
"
+
e
);
}
```
## ResultCode
表示执行结果的枚举。
**系统能力:**
SystemCapability.UserIAM.UserAuth.FaceAuth
| 名称 | 默认值 | 描述 |
| ----------------------- | ------ | -------------------- |
| FAIL | 12700001 | 执行失败。 |
zh-cn/application-dev/reference/apis/js-apis-useriam-userauth.md
浏览文件 @
e876fcc7
此差异已折叠。
点击以展开。
zh-cn/application-dev/security/userauth-guidelines.md
浏览文件 @
e876fcc7
# 用户认证开发指导
> **说明:**
> 该开发指导需
匹配
API Version 8或以上版本的SDK使用。
> 该开发指导需
配合
API Version 8或以上版本的SDK使用。
## 场景介绍
当前用户认证支持
2D人脸识别、3D人脸
识别,可应用于设备解锁、应用登录、支付等身份认证场景。
当前用户认证支持
人脸识别和指纹
识别,可应用于设备解锁、应用登录、支付等身份认证场景。
## 接口说明
userIAM_userAuth模块提供了用户认证的相关方法,包括检测认证能力、认证和取消认证等,用户可以使用人脸等生物特征信息进行认证操作。具体接口说明可以查阅
[
API参考
](
../reference/apis/js-apis-useriam-userauth.md
)
。
userIAM_userAuth模块提供了用户认证的相关方法,包括检测认证能力、认证和取消认证等,用户可以使用人脸
、指纹
等生物特征信息进行认证操作。具体接口说明可以查阅
[
API参考
](
../reference/apis/js-apis-useriam-userauth.md
)
。
在执行认证前,需要检查设备是否支持该认证能力,具体指认证类型、认证等级。如果不支持,需要考虑使用其他认证能力。
...
...
@@ -19,95 +19,122 @@ userIAM_userAuth模块提供了用户认证的相关方法,包括检测认证
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| getVersion() : number | 获取认证对象的版本信息。 |
| getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number | 根据指定的认证类型、认证等级,检测当前设备是否支持相应的认证能力。 |
| auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array | 执行用户认证,使用callback方式作为异步方法。 |
| auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array | 执行用户认证,使用callback方式作为异步方法
返回结果
。 |
| cancelAuth(contextID : Uint8Array) : number | 通过contextID取消本次认证操作。 |
## 开发步骤
开发前请完成以下准备工作:
1.
在应用配置权限文件中,增加ohos.permission.ACCESS_BIOMETRIC的权限声明。
2.
在使用用户认证能力的代码文件中增加import userIAM_userAuth from '@ohos.userIAM.userAuth'。
开发过程:
1.
获取Authenticator的单例对象,代码示例如下:
```
js
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
```
2.
(可选)获取认证对象的版本信息,代码示例如下:
```
js
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
let
version
=
auth
.
getVersion
();
console
.
info
(
"
auth version =
"
+
version
);
```
3.
根据指定的认证类型、认证等级,检测当前设备是否支持相应的认证能力,代码示例如下:
```
js
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
let
checkCode
=
auth
.
getAvailableStatus
(
userIAM_userAuth
.
UserAuthType
.
FACE
,
userIAM_userAuth
.
AuthTrustLevel
.
ATL1
);
if
(
checkCode
==
userIAM_userAuth
.
ResultCode
.
SUCCESS
)
{
console
.
info
(
"
check auth support success
"
);
// 此处添加支持指定类型认证的逻辑
}
else
{
console
.
error
(
"
check auth support fail, code =
"
+
checkCode
);
// 此处添加不支持指定类型认证的逻辑
}
```
4.
执行认证操作,代码示例如下:
```
js
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
auth
.
auth
(
null
,
userIAM_userAuth
.
UserAuthType
.
FACE
,
userIAM_userAuth
.
AuthTrustLevel
.
ATL1
,
{
onResult
:
(
result
,
extraInfo
)
=>
{
try
{
console
.
info
(
"
auth onResult result =
"
+
result
);
console
.
info
(
"
auth onResult extraInfo =
"
+
JSON
.
stringify
(
extraInfo
));
if
(
result
==
userIAM_userAuth
.
ResultCode
.
SUCCESS
)
{
// 此处添加认证成功逻辑
}
else
{
// 此处添加认证失败逻辑
}
}
catch
(
e
)
{
console
.
info
(
"
auth onResult error =
"
+
e
);
}
},
onAcquireInfo
:
(
module
,
acquire
,
extraInfo
)
=>
{
try
{
console
.
info
(
"
auth onAcquireInfo module =
"
+
module
);
console
.
info
(
"
auth onAcquireInfo acquire =
"
+
acquire
);
console
.
info
(
"
auth onAcquireInfo extraInfo =
"
+
JSON
.
stringify
(
extraInfo
));
}
catch
(
e
)
{
console
.
info
(
"
auth onAcquireInfo error =
"
+
e
);
}
}
});
```
5.
认证过程中取消认证,代码示例如下:
```
js
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
// contextId通过auth接口获取
let
contextId
=
auth
.
auth
(
null
,
userIAM_userAuth
.
UserAuthType
.
FACE
,
userIAM_userAuth
.
AuthTrustLevel
.
ATL1
,
{
onResult
:
(
result
,
extraInfo
)
=>
{
console
.
info
(
"
auth onResult result =
"
+
result
);
},
onAcquireInfo
:
(
module
,
acquire
,
extraInfo
)
=>
{
console
.
info
(
"
auth onAcquireInfo module =
"
+
module
);
}
});
let
cancelCode
=
auth
.
cancel
(
contextId
);
if
(
cancelCode
==
userIAM_userAuth
.
ResultCode
.
SUCCESS
)
{
console
.
info
(
"
cancel auth success
"
);
}
else
{
console
.
error
(
"
cancel auth fail
"
);
}
```
## 获取认证对象的版本信息
### 开发步骤
1.
申请权限。调用getVersion接口,需要在module.json5文件的requestPermissions对象中配置ohos.permission.ACCESS_BIOMETRIC权限。更多配置信息
[
应用包结构配置文件的说明
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/stage-structure.md
)
。
2.
获取认证对象。
3.
调用getVersion接口获取版本信息。
```
js
import
userIAM_userAuth
from
'
@ohos.userIAM.userAuth
'
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
let
version
=
auth
.
getVersion
();
console
.
info
(
"
auth version =
"
+
version
);
```
## 查询当前设备是否支持相应的认证能力
### 开发步骤
1.
申请权限。调用getAvailableStatus接口,需要在module.json5文件的requestPermissions对象中配置ohos.permission.ACCESS_BIOMETRIC权限。更多配置信息
[
应用包结构配置文件的说明
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/stage-structure.md
)
。
2.
获取认证对象。
3.
指定认证类型和认证等级,调用getAvailableStatus接口查询当前的设备是否支持相应的认证能力。
```
js
import
userIAM_userAuth
from
'
@ohos.userIAM.userAuth
'
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
let
checkCode
=
auth
.
getAvailableStatus
(
userIAM_userAuth
.
UserAuthType
.
FACE
,
userIAM_userAuth
.
AuthTrustLevel
.
ATL1
);
if
(
checkCode
==
userIAM_userAuth
.
ResultCode
.
SUCCESS
)
{
console
.
info
(
"
check auth support success
"
);
// 此处添加支持相应认证能力的逻辑
}
else
{
console
.
error
(
"
check auth support fail, code =
"
+
checkCode
);
// 此处添加不支持相应认证能力的逻辑
}
```
## 执行认证操作
### 开发步骤
1.
申请权限。调用auth接口,需要在module.json5文件的requestPermissions对象中配置ohos.permission.ACCESS_BIOMETRIC权限。更多配置信息
[
应用包结构配置文件的说明
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/stage-structure.md
)
。
2.
获取认证对象。
3.
指定认证类型和认证等级,调用auth接口发起认证,通过onResult回调返回认证结果,通过onAcquireInfo回调返回认证过程中的提示信息。
```
js
import
userIAM_userAuth
from
'
@ohos.userIAM.userAuth
'
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
auth
.
auth
(
null
,
userIAM_userAuth
.
UserAuthType
.
FACE
,
userIAM_userAuth
.
AuthTrustLevel
.
ATL1
,
{
onResult
:
(
result
,
extraInfo
)
=>
{
try
{
console
.
info
(
"
auth onResult result =
"
+
result
);
console
.
info
(
"
auth onResult extraInfo =
"
+
JSON
.
stringify
(
extraInfo
));
if
(
result
==
userIAM_userAuth
.
ResultCode
.
SUCCESS
)
{
// 此处添加认证成功逻辑
}
else
{
// 此处添加认证失败逻辑
}
}
catch
(
e
)
{
console
.
info
(
"
auth onResult error =
"
+
e
);
}
},
onAcquireInfo
:
(
module
,
acquire
,
extraInfo
)
=>
{
try
{
console
.
info
(
"
auth onAcquireInfo module =
"
+
module
);
console
.
info
(
"
auth onAcquireInfo acquire =
"
+
acquire
);
console
.
info
(
"
auth onAcquireInfo extraInfo =
"
+
JSON
.
stringify
(
extraInfo
));
}
catch
(
e
)
{
console
.
info
(
"
auth onAcquireInfo error =
"
+
e
);
}
}
});
```
## 认证过程中取消认证
### 开发步骤
1.
申请权限。调用cancelAuth接口,需要在module.json5文件的requestPermissions对象中配置ohos.permission.ACCESS_BIOMETRIC权限。更多配置信息
[
应用包结构配置文件的说明
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/stage-structure.md
)
。
2.
获取认证对象。
3.
指定认证类型和认证等级,调用auth接口发起认证,通过onResult回调返回认证结果,通过onAcquireInfo回调返回认证过程中的提示信息。
4.
通过调用cancelAuth接口取消本次认证。
```
js
import
userIAM_userAuth
from
'
@ohos.userIAM.userAuth
'
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
// contextId通过auth接口获取
let
contextId
=
auth
.
auth
(
null
,
userIAM_userAuth
.
UserAuthType
.
FACE
,
userIAM_userAuth
.
AuthTrustLevel
.
ATL1
,
{
onResult
:
(
result
,
extraInfo
)
=>
{
console
.
info
(
"
auth onResult result =
"
+
result
);
},
onAcquireInfo
:
(
module
,
acquire
,
extraInfo
)
=>
{
console
.
info
(
"
auth onAcquireInfo module =
"
+
module
);
}
});
let
cancelCode
=
auth
.
cancelAuth
(
contextId
);
if
(
cancelCode
==
userIAM_userAuth
.
ResultCode
.
SUCCESS
)
{
console
.
info
(
"
cancel auth success
"
);
}
else
{
console
.
error
(
"
cancel auth fail
"
);
}
```
zh-cn/application-dev/security/userauth-overview.md
浏览文件 @
e876fcc7
...
...
@@ -2,23 +2,23 @@
提供用户认证能力,可应用于设备解锁、支付、应用登录等身份认证场景。
当前用户认证能力提供2D人脸识别、3D人脸识别两种人脸识别能力,设备具备哪种识别能力,取决于设备的硬件能力和技术实现。
3D人脸识别技术识别率、防伪能力都优于2D人脸识别技术,但具有3D人脸能力(比如3D结构光、3D TOF等)的设备才可以使用3D人脸识别技术。
当前用户认证提供人脸识别和指纹识别能力,设备具备哪种识别能力,取决于设备的硬件能力和技术实现。
## 基本概念
人脸识别:基于人的脸部特征信息进行身份识别的一种生物特征识别技术,用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别,通常也叫做人像识别、面部识别、人脸认证。
-
人脸识别:基于人的脸部特征信息进行身份识别的一种生物特征识别技术,用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别,通常也叫做人像识别、面部识别、人脸认证。
-
指纹识别:基于人的指尖皮肤纹路进行身份识别的一种生物识别技术。当用户触摸指纹采集器件时,器件感知并获取到用户的指纹图像,然后传输到指纹识别模块进行一定的处理后与用户预先注册的指纹信息进行比对,从而识别出用户身份。
## 运作机制
人脸
识别会在摄像头和TEE(Trusted Execution Environment)之间建立安全通道,人脸图像信息通过安全通道传递到TEE中,由于人脸图像信息从REE(Rich Execution Environment)侧无法获取,从而避免了恶意软件从REE侧进行攻击。对人脸图像采集、特征提取、活体检测、特征比对等处理完全在TEE中,基于TrustZone进行安全隔离,外部的人脸框架只负责人脸的认证发起和处理认证结果等数据,不涉及人脸
数据本身。
人脸
或指纹识别过程中,特征采集器件和TEE(Trusted Execution Environment)之间会建立安全通道,将采集的生物特征信息直接通过安全通道传递到TEE中,从而避免了恶意软件从REE(Rich Execution Environment)侧进行攻击。传输到TEE中的生物特征数据从活体检测、特征提取、特征存储、特征比对到特征销毁等处理都完全在TEE中完成,基于TrustZone进行安全隔离,提供API的服务框架只负责管理认证请求和处理认证结果等数据,不涉及生物特征
数据本身。
人脸特征数据通过TEE的安全存储区进行存储,采用高强度的密码算法对人脸特征数据进行加密和完整性保护,外部无法获取到加密人脸特征数据的密钥,保证用户的人脸特征数据不会泄露。本能力采集和存储的人脸特征数据不会在用户未授权的情况下被传出TEE,这意味着,用户未授权时,无论是系统应用还是三方应用都无法获得人脸特征数据,也无法将人脸
特征数据传送或备份到任何外部存储介质。
用户注册的生物特征数据在TEE的安全存储区进行存储,采用高强度的密码算法进行加密和完整性保护,外部无法获取到加密生物特征数据的密钥,保证了用户生物特征数据的安全性。本能力采集和存储的生物特征数据不会在用户未授权的情况下被传出TEE。这意味着,用户未授权时,无论是系统应用还是三方应用都无法获得人脸和指纹等特征数据,也无法将这些
特征数据传送或备份到任何外部存储介质。
## 约束与限制
-
当前版本提供的用户认证能力
只包含人脸
识别,且只支持本地认证,不提供认证界面。
-
要求设备上具备
摄像器件,且人脸图像像素
大于100
*
100。
-
要求设备上具有TEE安全环境,人脸特征信息高强度加密保存在TEE中。
-
当前版本提供的用户认证能力
包含人脸识别和指纹
识别,且只支持本地认证,不提供认证界面。
-
要求设备上具备
相应的生物特征采集器,且对于人脸识别要求人脸图像分辨率
大于100
*
100。
-
要求设备上具有TEE安全环境,人脸
和指纹等生物
特征信息高强度加密保存在TEE中。
-
对于面部特征相似的人、面部特征不断发育的儿童,人脸特征匹配率有所不同。如果对此担忧,可考虑其他认证方式。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录