userauth-guidelines.md 6.8 KB
Newer Older
H
https://gitee.com/WALL_EYE 已提交
1 2
# 用户认证开发指导

H
https://gitee.com/WALL_EYE 已提交
3
> **说明:**
L
liuziweicom 已提交
4
> 该开发指导需配合API version 10版本的SDK使用。
H
https://gitee.com/WALL_EYE 已提交
5

H
https://gitee.com/WALL_EYE 已提交
6 7
## 场景介绍

L
liuziweicom 已提交
8
当前用户认证支持Pin码认证、人脸识别和指纹识别,可应用于设备解锁、应用登录、支付等身份认证场景。
H
https://gitee.com/WALL_EYE 已提交
9 10 11

## 接口说明

12
userIAM_userAuth模块提供了用户认证的相关方法,包括查询认证能力、发起认证和取消认证等,用户可以使用人脸、指纹等生物特征信息进行认证操作。具体接口说明可以查阅[API参考文档](../reference/apis/js-apis-useriam-userauth.md)
H
https://gitee.com/WALL_EYE 已提交
13

14
在执行认证前,需要指定[认证类型](../reference/apis/js-apis-useriam-userauth.md#userauthtype8)[认证等级](../reference/apis/js-apis-useriam-userauth.md#authtrustlevel8),查询设备是否支持该认证能力。
H
https://gitee.com/WALL_EYE 已提交
15 16 17

**表1** 用户认证开放能力列表

18 19 20
| 接口名称    | 功能描述                |
| ---------- | ----------------------- |
| getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel): void | 根据指定的认证类型、认证等级,检测当前设备是否支持相应的认证能力。 |
L
liuziweicom 已提交
21 22 23 24 25
| getUserAuthInstance(authParam: AuthParam, widgetParam: WidgetParam): UserAuthInstance | 获取UserAuthInstance对象,用于执行用户身份认证,并支持使用统一用户身份认证组件。 |
| on(type: 'result', callback: IAuthCallback): void | 订阅用户身份认证结果。 |
| off(type: 'result', callback?: IAuthCallback): void | 取消订阅用户身份认证结果。 |
| start(): void | 执行用户认证。        |
| cancel(): void | 取消本次认证操作。    |
H
https://gitee.com/WALL_EYE 已提交
26

Y
youliang_1314 已提交
27 28 29 30
## 查询当前设备是否支持相应的认证能力

### 开发步骤

Z
zengyawen 已提交
31
1. 申请权限。调用[getAvailableStatus](../reference/apis/js-apis-useriam-userauth.md#useriam_userauthgetavailablestatus9)接口,需要在module.json5文件的requestPermissions对象中配置ohos.permission.ACCESS_BIOMETRIC权限。更多配置信息请参考[Stage模型应用程序包结构](../quick-start/module-configuration-file.md)
Y
youliang_1314 已提交
32

Y
youliang_1314 已提交
33
2. 指定[认证类型](../reference/apis/js-apis-useriam-userauth.md#userauthtype8)[认证等级](../reference/apis/js-apis-useriam-userauth.md#authtrustlevel8),调用[getAvailableStatus](../reference/apis/js-apis-useriam-userauth.md#useriam_userauthgetavailablestatus9)接口查询当前的设备是否支持相应的认证能力。
34

Y
youliang_1314 已提交
35 36
    ```js
    import userIAM_userAuth from '@ohos.userIAM.userAuth';
L
liuziweicom 已提交
37
    
Y
youliang_1314 已提交
38 39 40 41 42 43 44 45
    // 查询认证能力是否支持
    try {
        userIAM_userAuth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1);
        console.info("current auth trust level is supported");
    } catch (error) {
        console.info("current auth trust level is not supported, error = " + error);
    }
    ```
46

Y
youliang_1314 已提交
47
## 执行认证操作并订阅认证结果
48 49 50

### 开发步骤

L
liuziweicom 已提交
51
1. 申请权限。调用[start](../reference/apis/js-apis-useriam-userauth.md#start10)接口,需要在module.json5文件的requestPermissions对象中配置ohos.permission.ACCESS_BIOMETRIC权限。更多配置信息请参考[Stage模型应用程序包结构](../quick-start/module-configuration-file.md)
52

Y
youliang_1314 已提交
53
2. 指定challenge、[认证类型](../reference/apis/js-apis-useriam-userauth.md#userauthtype8)[认证等级](../reference/apis/js-apis-useriam-userauth.md#authtrustlevel8),获取认证对象。
54

L
liuziweicom 已提交
55
3. 调用[on](../reference/apis/js-apis-useriam-userauth.md#on10)接口订阅认证结果。
Y
youliang_1314 已提交
56

L
liuziweicom 已提交
57
4. 调用[start](../reference/apis/js-apis-useriam-userauth.md#start10)接口发起认证,通过[callback](../reference/apis/js-apis-useriam-userauth.md#callback10)回调返回认证结果。
58

L
liuziweicom 已提交
59
5. 调用[off](../reference/apis/js-apis-useriam-userauth.md#off10)接口取消订阅认证结果。
Y
youliang_1314 已提交
60

Y
youliang_1314 已提交
61 62
    ```js
    import userIAM_userAuth from '@ohos.userIAM.userAuth';
L
liuziweicom 已提交
63 64 65 66 67 68 69 70 71 72 73 74
    
    const authParam = {
        challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),
        authType: [userAuth.UserAuthType.PIN],
        authTrustLevel: 10000,
    };
    const widgetParam = {
    	title: '请输入密码',
    	navigationButtonText: '返回',
        windowMode: userAuth.WindowModeType.DIALOG_BOX,
    };
    let userAuthInstance;
Y
youliang_1314 已提交
75
    try {
L
liuziweicom 已提交
76 77 78 79 80 81 82
        //获取认证对象
        userAuthInstance = userIAM_userAuth.getUserAuthInstance(authParam, widgetParam);
        console.log('get userAuth instance success');
        //订阅认证结果
        userAuthInstance.on('result', {
            onResult (result) {
                console.log('userAuthInstance callback result = ' + JSON.stringify(result));
Y
youliang_1314 已提交
83 84
            }
        });
L
liuziweicom 已提交
85 86 87
        console.log('auth on success');
        userAuthInstance.start();
        console.log('auth start success');
Y
youliang_1314 已提交
88
    } catch (error) {
L
liuziweicom 已提交
89
        console.log('auth on catch error: ' + JSON.stringify(error));
Y
youliang_1314 已提交
90
    }
L
liuziweicom 已提交
91
    //取消订阅认证结果
Y
youliang_1314 已提交
92
    try {
L
liuziweicom 已提交
93 94 95
    	userAuthInstance.off('result', {
            onResult (result) {
                console.log('auth off result: ' + JSON.stringify(result));
Y
youliang_1314 已提交
96
            }
Y
youliang_1314 已提交
97
        });
L
liuziweicom 已提交
98
        console.log('auth off success');
Y
youliang_1314 已提交
99
    } catch (error) {
L
liuziweicom 已提交
100
        console.log('auth catch error: ' + JSON.stringify(error));
Y
youliang_1314 已提交
101 102
    }
    ```
Y
youliang_1314 已提交
103 104 105 106 107

## 认证过程中取消认证

### 开发步骤

L
liuziweicom 已提交
108
1. 申请权限。调用[cancel](../reference/apis/js-apis-useriam-userauth.md#cancel10)接口,需要在module.json5文件的requestPermissions对象中配置ohos.permission.ACCESS_BIOMETRIC权限。更多配置信息请参考[Stage模型应用程序包结构](../quick-start/module-configuration-file.md)
Y
youliang_1314 已提交
109 110 111

2. 指定challenge、[认证类型](../reference/apis/js-apis-useriam-userauth.md#userauthtype8)[认证等级](../reference/apis/js-apis-useriam-userauth.md#authtrustlevel8),获取认证对象。

L
liuziweicom 已提交
112
3. 调用[start](../reference/apis/js-apis-useriam-userauth.md#start10)接口发起认证。
Y
youliang_1314 已提交
113

L
liuziweicom 已提交
114
4. 通过调用[cancel](../reference/apis/js-apis-useriam-userauth.md#cancel10)接口取消本次认证。
Y
youliang_1314 已提交
115 116 117

    ```js
    import userIAM_userAuth from '@ohos.userIAM.userAuth';
L
liuziweicom 已提交
118 119 120 121 122 123 124 125 126 127 128 129
    
    const authParam = {
        challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),
        authType: [userAuth.UserAuthType.PIN],
        authTrustLevel: 10000,
    };
    const widgetParam = {
    	title: '请输入密码',
    	navigationButtonText: '返回',
        windowMode: userAuth.WindowModeType.DIALOG_BOX,
    };
    let userAuthInstance;
Y
youliang_1314 已提交
130
    try {
L
liuziweicom 已提交
131 132 133 134 135 136
        //获取认证对象
        userAuthInstance = userIAM_userAuth.getUserAuthInstance(authParam, widgetParam);
        console.log('get userAuth instance success');
        //开始认证
        userAuthInstance.start();
        console.log('auth start success');
Y
youliang_1314 已提交
137
    } catch (error) {
L
liuziweicom 已提交
138
        console.log('auth catch error: ' + JSON.stringify(error));
Y
youliang_1314 已提交
139
    }
L
liuziweicom 已提交
140
    
Y
youliang_1314 已提交
141 142
    // 取消认证
    try {
L
liuziweicom 已提交
143 144
        userAuthInstance.cancel();
        console.log('auth cancel success');
Y
youliang_1314 已提交
145
    } catch (error) {
L
liuziweicom 已提交
146
        console.log('auth catch error: ' + JSON.stringify(error));
Y
youliang_1314 已提交
147 148
    }
    ```