Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
f8ce7e87
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
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看板
未验证
提交
f8ce7e87
编写于
4月 06, 2022
作者:
Z
zengyawen
提交者:
Gitee
4月 06, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新为适配API 8的文档
Signed-off-by:
N
zengyawen
<
zengyawen1@huawei.com
>
上级
cecacc11
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
63 addition
and
51 deletion
+63
-51
zh-cn/application-dev/security/userauth-guidelines.md
zh-cn/application-dev/security/userauth-guidelines.md
+63
-51
未找到文件。
zh-cn/application-dev/security/userauth-guidelines.md
浏览文件 @
f8ce7e87
# 用户认证开发指导
# 用户认证开发指导
> **说明:**
> 该开发指导需匹配API Version 8或以上版本的SDK使用。
## 场景介绍
## 场景介绍
当前用户认证支持2D人脸识别、3D人脸识别,可应用于设备解锁、应用登录、支付等身份认证场景。
当前用户认证支持2D人脸识别、3D人脸识别,可应用于设备解锁、应用登录、支付等身份认证场景。
## 接口说明
## 接口说明
userIAM_userAuth模块提供了用户认证的相关方法,包括检测认证能力、认证和取消认证等,用户可以
通过
人脸等生物特征信息进行认证操作。具体接口说明可以查阅
[
API参考
](
../reference/apis/js-apis-useriam-userauth.md
)
。
userIAM_userAuth模块提供了用户认证的相关方法,包括检测认证能力、认证和取消认证等,用户可以
使用
人脸等生物特征信息进行认证操作。具体接口说明可以查阅
[
API参考
](
../reference/apis/js-apis-useriam-userauth.md
)
。
在执行认证前,需要检查设备是否支持该认证能力,具体指认证类型、
安全级别和是否本地认证
。如果不支持,需要考虑使用其他认证能力。
在执行认证前,需要检查设备是否支持该认证能力,具体指认证类型、
认证等级
。如果不支持,需要考虑使用其他认证能力。
**表1**
用户认证开放能力列表
**表1**
用户认证开放能力列表
| 接口名 | 功能描述 |
| 接口名 | 功能描述 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| getAuthenticator(): Authenticator | 获取Authenticator对象,用于执行用户身份认证。
<sup>
6+
</sup><br>
获取Authenticator对象,用于检测设备身份认证能力、执行和取消用户身份认证,获取认证过程中的提示信息。
<sup>
7+
</sup>
|
| getVersion() : number | 获取认证对象的版本信息。 |
| checkAvailability(type: AuthType, level: SecureLevel): number | 根据指定的认证类型、安全等级,检测当前设备是否支持相应的认证能力。 |
| getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number | 根据指定的认证类型、认证等级,检测当前设备是否支持相应的认证能力。 |
| execute(type: AuthType, level: SecureLevel, callback: AsyncCallback
\<
number>): void | 执行用户认证,使用callback方式作为异步方法。 |
| auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array | 执行用户认证,使用callback方式作为异步方法。 |
| execute(type: AuthType, level: SecureLevel): Promise
\<
number> | 执行用户认证,使用Promise方式作为异步方法。 |
| cancelAuth(contextID : Uint8Array) : number | 通过contextID取消本次认证操作。 |
| cancel(): void | 取消当前的认证流程。 |
| on(type: "tip", callback: Callback
\<
Tip>): void | 订阅指定类型的事件。 |
| off(type: "tip", callback?: Callback
\<
Tip>): void | 取消订阅指定类型的事件。 |
## 开发步骤
## 开发步骤
...
@@ -34,68 +34,80 @@ userIAM_userAuth模块提供了用户认证的相关方法,包括检测认证
...
@@ -34,68 +34,80 @@ userIAM_userAuth模块提供了用户认证的相关方法,包括检测认证
1.
获取Authenticator的单例对象,代码示例如下:
1.
获取Authenticator的单例对象,代码示例如下:
```
js
```
js
let
auth
=
userIAM_userAuth
.
getAuthenticator
();
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
```
```
2.
检测设备是否具有指定级别的认证能力:
2.
(可选)获取认证对象的版本信息,代码示例如下:
```
js
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
let
version
=
auth
.
getVersion
();
console
.
info
(
"
auth version =
"
+
version
);
```
2D人脸识别支持低于S2级别的认证,3D人脸识别支持低于S3级别的认证。
代码示例如下:
3.
根据指定的认证类型、认证等级,检测当前设备是否支持相应的认证能力,
代码示例如下:
```
js
```
js
let
auth
enticator
=
userIAM_userAuth
.
getAuthenticator
();
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
let
checkCode
=
auth
enticator
.
checkAvailability
(
"
FACE_ONLY
"
,
"
S2
"
);
let
checkCode
=
auth
.
getAvailableStatus
(
userIAM_userAuth
.
UserAuthType
.
FACE
,
userIAM_userAuth
.
AuthTrustLevel
.
ATL1
);
if
(
checkCode
==
userIAM_userAuth
.
CheckAvailabilityResult
.
SUPPORTED
)
{
if
(
checkCode
==
userIAM_userAuth
.
ResultCode
.
SUCCESS
)
{
console
.
info
(
"
check auth support success
"
);
console
.
info
(
"
check auth support success
"
);
// 此处添加支持指定类型认证的逻辑
}
else
{
}
else
{
console
.
error
(
"
check auth support fail, code =
"
+
checkCode
);
console
.
error
(
"
check auth support fail, code =
"
+
checkCode
);
// 此处添加不支持指定类型认证的逻辑
}
}
```
```
3.
(可选)订阅人脸tip信息,代码示例如下:
```
js
let
authenticator
=
userIAM_userAuth
.
getAuthenticator
();
let
tipCallback
=
(
tip
)
=>
{
console
.
info
(
"
receive tip: errorCode(
"
+
tip
.
errorCode
+
"
) code(
"
+
tip
.
tipCode
+
"
) event(
"
+
tip
.
tipEvent
+
"
) info(
"
+
tip
.
tipInfo
+
"
)
"
);
};
authenticator
.
on
(
"
tip
"
,
tipCallback
);
```
4.
执行认证操作,代码示例如下:
4.
执行认证操作,代码示例如下:
```
js
```
js
let
authenticator
=
userIAM_userAuth
.
getAuthenticator
();
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
authenticator
.
execute
(
"
FACE_ONLY
"
,
"
S2
"
).
then
((
code
)
=>
{
auth
.
auth
(
null
,
userIAM_userAuth
.
UserAuthType
.
FACE
,
userIAM_userAuth
.
AuthTrustLevel
.
ATL1
,
{
authenticator
.
off
(
"
tip
"
,
tipCallback
);
onResult
:
(
result
,
extraInfo
)
=>
{
console
.
info
(
"
auth success
"
);
try
{
}).
catch
((
code
)
=>
{
console
.
info
(
"
auth onResult result =
"
+
result
);
authenticator
.
off
(
"
tip
"
,
tipCallback
);
console
.
info
(
"
auth onResult extraInfo =
"
+
JSON
.
stringify
(
extraInfo
));
console
.
error
(
"
auth fail, code =
"
+
code
);
if
(
result
==
'
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.
(仅执行订阅信息后需要)取消订阅人脸tip信息
:
5.
认证过程中取消认证,代码示例如下
:
```
js
```
js
let
authenticator
=
userIAM_userAuth
.
getAuthenticator
();
let
auth
=
new
userIAM_userAuth
.
UserAuth
();
let
tipCallback
=
(
tip
)
=>
{
// contextId通过auth接口获取
console
.
info
(
"
receive tip: errorCode(
"
+
tip
.
errorCode
+
"
) code(
"
+
tip
.
tipCode
+
"
) event(
"
+
let
contextId
=
auth
.
auth
(
null
,
userIAM_userAuth
.
UserAuthType
.
FACE
,
userIAM_userAuth
.
AuthTrustLevel
.
ATL1
,
{
tip
.
tipEvent
+
"
) info(
"
+
tip
.
tipInfo
+
"
)
"
);
onResult
:
(
result
,
extraInfo
)
=>
{
};
console
.
info
(
"
auth onResult result =
"
+
result
);
// 取消订阅指定回调
},
authenticator
.
off
(
"
tip
"
,
tipCallback
);
// 取消订阅所有回调authenticator.off("tip");
onAcquireInfo
:
(
module
,
acquire
,
extraInfo
)
=>
{
```
console
.
info
(
"
auth onAcquireInfo module =
"
+
module
);
}
6.
认证过程中取消认证,代码示例如下:
});
let
cancelCode
=
auth
.
cancel
(
contextId
);
```
js
if
(
cancelCode
==
userIAM_userAuth
.
ResultCode
.
SUCCESS
)
{
let
authenticator
=
userIAM_userAuth
.
getAuthenticator
();
let
cancelCode
=
authenticator
.
cancel
();
if
(
cancelCode
==
userIAM_userAuth
.
Result
.
SUCCESS
)
{
console
.
info
(
"
cancel auth success
"
);
console
.
info
(
"
cancel auth success
"
);
}
else
{
}
else
{
console
.
error
(
"
cancel auth fail
"
);
console
.
error
(
"
cancel auth fail
"
);
}
}
```
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录