diff --git a/zh-cn/application-dev/security/userauth-guidelines.md b/zh-cn/application-dev/security/userauth-guidelines.md index 2250ecf1901d683c630388bb267737eea0d56dc5..6d0d5e6e72360338e804feac8744e8f1c16c3f51 100644 --- a/zh-cn/application-dev/security/userauth-guidelines.md +++ b/zh-cn/application-dev/security/userauth-guidelines.md @@ -1,26 +1,26 @@ # 用户认证开发指导 +> **说明:** +> 该开发指导需匹配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)。 -在执行认证前,需要检查设备是否支持该认证能力,具体指认证类型、安全级别和是否本地认证。如果不支持,需要考虑使用其他认证能力。 +在执行认证前,需要检查设备是否支持该认证能力,具体指认证类型、认证等级。如果不支持,需要考虑使用其他认证能力。 **表1** 用户认证开放能力列表 | 接口名 | 功能描述 | | ------------------------------------------------------------ | ------------------------------------------------------------ | -| getAuthenticator(): Authenticator | 获取Authenticator对象,用于执行用户身份认证。6+
获取Authenticator对象,用于检测设备身份认证能力、执行和取消用户身份认证,获取认证过程中的提示信息。7+ | -| checkAvailability(type: AuthType, level: SecureLevel): number | 根据指定的认证类型、安全等级,检测当前设备是否支持相应的认证能力。 | -| execute(type: AuthType, level: SecureLevel, callback: AsyncCallback\): void | 执行用户认证,使用callback方式作为异步方法。 | -| execute(type: AuthType, level: SecureLevel): Promise\ | 执行用户认证,使用Promise方式作为异步方法。 | -| cancel(): void | 取消当前的认证流程。 | -| on(type: "tip", callback: Callback\): void | 订阅指定类型的事件。 | -| off(type: "tip", callback?: Callback\): void | 取消订阅指定类型的事件。 | +| getVersion() : number | 获取认证对象的版本信息。 | +| getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number | 根据指定的认证类型、认证等级,检测当前设备是否支持相应的认证能力。 | +| auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array | 执行用户认证,使用callback方式作为异步方法。 | +| cancelAuth(contextID : Uint8Array) : number | 通过contextID取消本次认证操作。 | ## 开发步骤 @@ -34,68 +34,80 @@ userIAM_userAuth模块提供了用户认证的相关方法,包括检测认证 1. 获取Authenticator的单例对象,代码示例如下: ```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 - let authenticator = userIAM_userAuth.getAuthenticator(); - let checkCode = authenticator.checkAvailability("FACE_ONLY", "S2"); - if (checkCode == userIAM_userAuth.CheckAvailabilityResult.SUPPORTED) { + 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); + // 此处添加不支持指定类型认证的逻辑 } ``` -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. 执行认证操作,代码示例如下: ```js - let authenticator = userIAM_userAuth.getAuthenticator(); - authenticator.execute("FACE_ONLY", "S2").then((code)=>{ - authenticator.off("tip", tipCallback); - console.info("auth success"); - }).catch((code)=>{ - authenticator.off("tip", tipCallback); - console.error("auth fail, code = " + code); + 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 == '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 - 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.off("tip", tipCallback); - // 取消订阅所有回调authenticator.off("tip"); - ``` - -6. 认证过程中取消认证,代码示例如下: - - ```js - let authenticator = userIAM_userAuth.getAuthenticator(); - let cancelCode = authenticator.cancel(); - if (cancelCode == userIAM_userAuth.Result.SUCCESS) { + 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"); } - ``` \ No newline at end of file + ```