You need to sign in or sign up before continuing.
提交 03914c7b 编写于 作者: Y youliang_1314

update iam

Signed-off-by: Nyouliang_1314 <youliang4@huawei.com>
上级 e876fcc7
...@@ -34,11 +34,11 @@ constructor() ...@@ -34,11 +34,11 @@ constructor()
**示例:** **示例:**
```js ```js
import userIAM_faceAuth from '@ohos.userIAM.faceAuth'; import userIAM_faceAuth from '@ohos.userIAM.faceAuth';
let faceAuthManager = new userIAM_faceAuth.FaceAuthManager(); let faceAuthManager = new userIAM_faceAuth.FaceAuthManager();
``` ```
### setSurfaceId ### setSurfaceId
...@@ -56,6 +56,10 @@ setSurfaceId(surfaceId: string): void; ...@@ -56,6 +56,10 @@ setSurfaceId(surfaceId: string): void;
| -------------- | ---------------------------------- | ---- | -------------------------- | | -------------- | ---------------------------------- | ---- | -------------------------- |
| surfaceId | string | 是 | [XComponent](../arkui-ts/ts-basic-components-xcomponent.md#getxcomponentsurfaceid) 持有 Surface 的 ID。 | | surfaceId | string | 是 | [XComponent](../arkui-ts/ts-basic-components-xcomponent.md#getxcomponentsurfaceid) 持有 Surface 的 ID。 |
以下错误码的详细介绍请参见[用户认证错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errcode-useriam.md)
**错误码:**
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ------- | | -------- | ------- |
| 201 | Permission verification failed. | | 201 | Permission verification failed. |
...@@ -64,15 +68,15 @@ setSurfaceId(surfaceId: string): void; ...@@ -64,15 +68,15 @@ setSurfaceId(surfaceId: string): void;
**示例:** **示例:**
```js ```js
import faceAuth from '@ohos.userIAM.faceAuth'; import faceAuth from '@ohos.userIAM.faceAuth';
let surfaceId = "123456"; let surfaceId = "123456";
let manager = new faceAuth.FaceAuthManager(); let manager = new faceAuth.FaceAuthManager();
try { try {
manager.setSurfaceId(surfaceId); manager.setSurfaceId(surfaceId);
console.info("set surface id success"); console.info("set surface id success");
} catch (e) { } catch (e) {
console.error("set surface id failed, error = " + e); console.error("set surface id failed, error = " + e);
} }
``` ```
...@@ -12,181 +12,6 @@ ...@@ -12,181 +12,6 @@
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
``` ```
## 完整示例
```js
// API version 9
import userIAM_userAuth from '@ohos.userIAM.userAuth';
export default {
getVersion() {
try {
let version = userIAM_userAuth.getVersion();
console.info("auth version = " + version);
} catch (error) {
console.info("get version failed, error = " + error);
}
},
start() {
console.info("start auth");
let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
try {
let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
auth.on("result", {
callback: (result: userIAM_userAuth.AuthResultInfo) => {
console.log("authV9 result " + result.result);
console.log("authV9 token " + result.token);
console.log("authV9 remainAttempts " + result.remainAttempts);
console.log("authV9 lockoutDuration " + result.lockoutDuration);
}
});
// if need tip
auth.on("tip", {
callback : (result : userIAM_userAuth.TipInfo) => {
switch (result.tip) {
case userIAM_userAuth.FaceTips.FACE_AUTH_TIP_TOO_BRIGHT:
// do something;
case userIAM_userAuth.FaceTips.FACE_AUTH_TIP_TOO_DARK:
// do something;
// ...
default:
// do others
}
}
});
auth.start();
console.log("authV9 start success");
} catch (error) {
console.log("authV9 error = " + error);
// do error
}
},
getAvailableStatus() {
console.info("start check auth support");
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);
}
},
cancel() {
console.info("start cancel auth");
let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
try {
let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
auth.start();
auth.cancel();
console.info("cancel auth success");
} catch (error) {
console.info("cancel auth failed, error = " + error);
}
}
}
```
```js
// API version 8
import userIAM_userAuth from '@ohos.userIAM.userAuth';
let auth = new userIAM_userAuth.UserAuth();
export default {
getVersion() {
console.info("start get version");
let version = auth.getVersion();
console.info("auth version = " + version);
},
startAuth() {
console.info("start auth");
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);
}
}
});
},
checkAuthSupport() {
console.info("start check auth support");
let checkCode = this.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);
// 此处添加不支持指定类型认证的逻辑
}
},
cancelAuth() {
console.info("start cancel auth");
// 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 = this.auth.cancel(contextId);
if (cancelCode == userIAM_userAuth.ResultCode.SUCCESS) {
console.info("cancel auth success");
} else {
console.error("cancel auth fail");
}
}
}
```
```js
// API version 6
import userIAM_userAuth from '@ohos.userIAM.userAuth';
export default {
startAuth() {
console.info("start auth");
let auth = userIAM_userAuth.getAuthenticator();
auth.execute("FACE_ONLY", "S2").then((code)=>{
console.info("auth success");
// 此处添加认证成功逻辑
}).catch((code)=>{
console.error("auth fail, code = " + code);
// 此处添加认证失败逻辑
});
}
}
```
## AuthResultInfo<sup>9+</sup> ## AuthResultInfo<sup>9+</sup>
表示认证结果信息。 表示认证结果信息。
...@@ -251,14 +76,14 @@ callback: (result : EventInfo) => void ...@@ -251,14 +76,14 @@ callback: (result : EventInfo) => void
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE; let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1; let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
// 通过callback获取认证结果 // 通过callback获取认证结果
try { try {
let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel); let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
auth.on("result", { auth.on("result", {
callback: (result: userIAM_userAuth.AuthResultInfo) => { callback: (result: userIAM_userAuth.AuthResultInfo) => {
...@@ -270,12 +95,12 @@ callback: (result : EventInfo) => void ...@@ -270,12 +95,12 @@ callback: (result : EventInfo) => void
}); });
auth.start(); auth.start();
console.log("authV9 start success"); console.log("authV9 start success");
} catch (error) { } catch (error) {
console.log("authV9 error = " + error); console.log("authV9 error = " + error);
// do error // do error
} }
// 通过callback获取认证过程中的提示信息 // 通过callback获取认证过程中的提示信息
try { try {
let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel); let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
auth.on("tip", { auth.on("tip", {
callback : (result : userIAM_userAuth.TipInfo) => { callback : (result : userIAM_userAuth.TipInfo) => {
...@@ -291,11 +116,11 @@ callback: (result : EventInfo) => void ...@@ -291,11 +116,11 @@ callback: (result : EventInfo) => void
}); });
auth.start(); auth.start();
console.log("authV9 start success"); console.log("authV9 start success");
} catch (error) { } catch (error) {
console.log("authV9 error = " + error); console.log("authV9 error = " + error);
// do error // do error
} }
``` ```
## AuthInstance<sup>9+</sup> ## AuthInstance<sup>9+</sup>
...@@ -316,6 +141,8 @@ on(name : AuthEventKey, callback : AuthEvent) : void ...@@ -316,6 +141,8 @@ on(name : AuthEventKey, callback : AuthEvent) : void
| name | [AuthEventKey](#autheventkey9) | 是 | 表示认证事件类型,取值为"result"时,回调函数返回认证结果;取值为"tip"时,回调函数返回认证过程中的提示信息。 | | name | [AuthEventKey](#autheventkey9) | 是 | 表示认证事件类型,取值为"result"时,回调函数返回认证结果;取值为"tip"时,回调函数返回认证过程中的提示信息。 |
| callback | [AuthEvent](#authevent9) | 是 | 认证接口的回调函数,用于返回认证结果或认证过程中的提示信息。 | | callback | [AuthEvent](#authevent9) | 是 | 认证接口的回调函数,用于返回认证结果或认证过程中的提示信息。 |
以下错误码的详细介绍请参见[用户认证错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errcode-useriam.md)
**错误码:** **错误码:**
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
...@@ -325,13 +152,13 @@ on(name : AuthEventKey, callback : AuthEvent) : void ...@@ -325,13 +152,13 @@ on(name : AuthEventKey, callback : AuthEvent) : void
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE; let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1; let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
try { try {
let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel); let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
// 订阅认证结果 // 订阅认证结果
auth.on("result", { auth.on("result", {
...@@ -357,11 +184,11 @@ on(name : AuthEventKey, callback : AuthEvent) : void ...@@ -357,11 +184,11 @@ on(name : AuthEventKey, callback : AuthEvent) : void
}); });
auth.start(); auth.start();
console.log("authV9 start success"); console.log("authV9 start success");
} catch (error) { } catch (error) {
console.log("authV9 error = " + error); console.log("authV9 error = " + error);
// do error // do error
} }
``` ```
### off<sup>9+</sup> ### off<sup>9+</sup>
...@@ -375,6 +202,8 @@ off(name : AuthEventKey) : void ...@@ -375,6 +202,8 @@ off(name : AuthEventKey) : void
| --------- | -------------------------- | ---- | ------------------------- | | --------- | -------------------------- | ---- | ------------------------- |
| name | [AuthEventKey](#autheventkey9) | 是 | 表示认证事件类型,取值为"result"时,取消订阅认证结果;取值为"tip"时,取消订阅认证过程中的提示信息。 | | name | [AuthEventKey](#autheventkey9) | 是 | 表示认证事件类型,取值为"result"时,取消订阅认证结果;取值为"tip"时,取消订阅认证过程中的提示信息。 |
以下错误码的详细介绍请参见[用户认证错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errcode-useriam.md)
**错误码:** **错误码:**
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
...@@ -384,21 +213,21 @@ off(name : AuthEventKey) : void ...@@ -384,21 +213,21 @@ off(name : AuthEventKey) : void
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE; let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1; let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
let auth; let auth;
try { try {
auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel); auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
console.log("get auth instance success"); console.log("get auth instance success");
} catch (error) { } catch (error) {
console.log("get auth instance failed" + error); console.log("get auth instance failed" + error);
} }
try { try {
// 订阅认证结果 // 订阅认证结果
auth.on("result", { auth.on("result", {
callback: (result: userIAM_userAuth.AuthResultInfo) => { callback: (result: userIAM_userAuth.AuthResultInfo) => {
...@@ -409,17 +238,17 @@ off(name : AuthEventKey) : void ...@@ -409,17 +238,17 @@ off(name : AuthEventKey) : void
} }
}); });
console.log("subscribe authentication event success"); console.log("subscribe authentication event success");
} catch (error) { } catch (error) {
console.log("subscribe authentication event failed " + error); console.log("subscribe authentication event failed " + error);
} }
// 取消订阅认证结果 // 取消订阅认证结果
try { try {
auth.off("result"); auth.off("result");
console.info("cancel subscribe authentication event success"); console.info("cancel subscribe authentication event success");
} catch (error) { } catch (error) {
console.info("cancel subscribe authentication event failed, error = " + error); console.info("cancel subscribe authentication event failed, error = " + error);
} }
``` ```
### start<sup>9+</sup> ### start<sup>9+</sup>
...@@ -434,6 +263,8 @@ start() : void ...@@ -434,6 +263,8 @@ start() : void
**系统能力**:SystemCapability.UserIAM.UserAuth.Core **系统能力**:SystemCapability.UserIAM.UserAuth.Core
以下错误码的详细介绍请参见[用户认证错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errcode-useriam.md)
**错误码:** **错误码:**
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
...@@ -447,21 +278,21 @@ start() : void ...@@ -447,21 +278,21 @@ start() : void
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE; let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1; let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
try { try {
let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel); let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
auth.start(); auth.start();
console.info("authV9 start auth success"); console.info("authV9 start auth success");
} catch (error) { } catch (error) {
console.info("authV9 start auth failed, error = " + error); console.info("authV9 start auth failed, error = " + error);
} }
``` ```
### cancel<sup>9+</sup> ### cancel<sup>9+</sup>
...@@ -476,6 +307,8 @@ cancel(): void ...@@ -476,6 +307,8 @@ cancel(): void
**系统能力**:SystemCapability.UserIAM.UserAuth.Core **系统能力**:SystemCapability.UserIAM.UserAuth.Core
以下错误码的详细介绍请参见[用户认证错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errcode-useriam.md)
**错误码:** **错误码:**
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
...@@ -486,21 +319,21 @@ cancel(): void ...@@ -486,21 +319,21 @@ cancel(): void
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE; let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1; let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
try { try {
let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel); let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
auth.cancel(); auth.cancel();
console.info("cancel auth success"); console.info("cancel auth success");
} catch (error) { } catch (error) {
console.info("cancel auth failed, error = " + error); console.info("cancel auth failed, error = " + error);
} }
``` ```
## userIAM_userAuth.getAuthInstance<sup>9+</sup> ## userIAM_userAuth.getAuthInstance<sup>9+</sup>
...@@ -527,6 +360,8 @@ getAuthInstance(challenge : Uint8Array, authType : UserAuthType, authTrustLevel ...@@ -527,6 +360,8 @@ getAuthInstance(challenge : Uint8Array, authType : UserAuthType, authTrustLevel
| ----------------------------------------- | ------------ | | ----------------------------------------- | ------------ |
| [AuthInstance](#authinstance9) | 认证器对象。 | | [AuthInstance](#authinstance9) | 认证器对象。 |
以下错误码的详细介绍请参见[用户认证错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errcode-useriam.md)
**错误码:** **错误码:**
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
...@@ -537,20 +372,21 @@ getAuthInstance(challenge : Uint8Array, authType : UserAuthType, authTrustLevel ...@@ -537,20 +372,21 @@ getAuthInstance(challenge : Uint8Array, authType : UserAuthType, authTrustLevel
| 12500006 | The authentication trust level is not supported. | | 12500006 | The authentication trust level is not supported. |
**示例:** **示例:**
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]); ```js
let authType = userIAM_userAuth.UserAuthType.FACE; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
try { let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
try {
let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel); let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
console.info("get auth instance success"); console.info("get auth instance success");
} catch (error) { } catch (error) {
console.info("get auth instance success failed, error = " + error); console.info("get auth instance success failed, error = " + error);
} }
``` ```
## userIAM_userAuth.getVersion<sup>9+</sup> ## userIAM_userAuth.getVersion<sup>9+</sup>
...@@ -568,6 +404,8 @@ getVersion(): number ...@@ -568,6 +404,8 @@ getVersion(): number
| ------ | ---------------------- | | ------ | ---------------------- |
| number | 认证器版本信息。 | | number | 认证器版本信息。 |
以下错误码的详细介绍请参见[用户认证错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errcode-useriam.md)
**错误码:** **错误码:**
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
...@@ -577,16 +415,16 @@ getVersion(): number ...@@ -577,16 +415,16 @@ getVersion(): number
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
try { try {
let version = userIAM_userAuth.getVersion(); let version = userIAM_userAuth.getVersion();
console.info("auth version = " + version); console.info("auth version = " + version);
} catch (error) { } catch (error) {
console.info("get version failed, error = " + error); console.info("get version failed, error = " + error);
} }
``` ```
## userIAM_userAuth.getAvailableStatus<sup>9+</sup> ## userIAM_userAuth.getAvailableStatus<sup>9+</sup>
...@@ -605,6 +443,8 @@ getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel): vo ...@@ -605,6 +443,8 @@ getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel): vo
| authType | [UserAuthType](#userauthtype8) | 是 | 认证类型,当前只支持FACE。 | | authType | [UserAuthType](#userauthtype8) | 是 | 认证类型,当前只支持FACE。 |
| authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是 | 认证信任等级。 | | authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是 | 认证信任等级。 |
以下错误码的详细介绍请参见[用户认证错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errcode-useriam.md)
**错误码:** **错误码:**
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
...@@ -618,16 +458,16 @@ getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel): vo ...@@ -618,16 +458,16 @@ getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel): vo
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
try { try {
userIAM_userAuth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1); userIAM_userAuth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1);
console.info("current auth trust level is supported"); console.info("current auth trust level is supported");
} catch (error) { } catch (error) {
console.info("current auth trust level is not supported, error = " + error); console.info("current auth trust level is not supported, error = " + error);
} }
``` ```
## ResultCodeV9<sup>9+</sup> ## ResultCodeV9<sup>9+</sup>
...@@ -672,11 +512,11 @@ constructor() ...@@ -672,11 +512,11 @@ constructor()
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let auth = new userIAM_userAuth.UserAuth(); let auth = new userIAM_userAuth.UserAuth();
``` ```
### getVersion<sup>(deprecated)</sup> ### getVersion<sup>(deprecated)</sup>
...@@ -700,13 +540,13 @@ getVersion() : number ...@@ -700,13 +540,13 @@ getVersion() : number
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let auth = new userIAM_userAuth.UserAuth(); let auth = new userIAM_userAuth.UserAuth();
let version = auth.getVersion(); let version = auth.getVersion();
console.info("auth version = " + version); console.info("auth version = " + version);
``` ```
### getAvailableStatus<sup>(deprecated)</sup> ### getAvailableStatus<sup>(deprecated)</sup>
...@@ -737,17 +577,17 @@ getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : n ...@@ -737,17 +577,17 @@ getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : n
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let auth = new userIAM_userAuth.UserAuth(); let auth = new userIAM_userAuth.UserAuth();
let checkCode = auth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1); let checkCode = auth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1);
if (checkCode == userIAM_userAuth.ResultCode.SUCCESS) { 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);
} }
``` ```
### auth<sup>(deprecated)</sup> ### auth<sup>(deprecated)</sup>
...@@ -780,11 +620,11 @@ auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLev ...@@ -780,11 +620,11 @@ auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLev
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let auth = new userIAM_userAuth.UserAuth(); let auth = new userIAM_userAuth.UserAuth();
auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, { auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
onResult: (result, extraInfo) => { onResult: (result, extraInfo) => {
try { try {
console.info("auth onResult result = " + result); console.info("auth onResult result = " + result);
...@@ -798,8 +638,8 @@ auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLev ...@@ -798,8 +638,8 @@ auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLev
console.info("auth onResult error = " + e); console.info("auth onResult error = " + e);
} }
} }
}); });
``` ```
### cancelAuth<sup>(deprecated)</sup> ### cancelAuth<sup>(deprecated)</sup>
...@@ -829,19 +669,19 @@ cancelAuth(contextID : Uint8Array) : number ...@@ -829,19 +669,19 @@ cancelAuth(contextID : Uint8Array) : number
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
// contextId可通过auth接口获取,此处直接定义 // contextId可通过auth接口获取,此处直接定义
let contextId = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7]); let contextId = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7]);
let auth = new userIAM_userAuth.UserAuth(); let auth = new userIAM_userAuth.UserAuth();
let cancelCode = auth.cancelAuth(contextId); let cancelCode = auth.cancelAuth(contextId);
if (cancelCode == userIAM_userAuth.ResultCode.SUCCESS) { if (cancelCode == userIAM_userAuth.ResultCode.SUCCESS) {
console.info("cancel auth success"); console.info("cancel auth success");
} else { } else {
console.error("cancel auth fail"); console.error("cancel auth fail");
} }
``` ```
## IUserAuthCallback<sup>(deprecated)</sup> ## IUserAuthCallback<sup>(deprecated)</sup>
...@@ -873,11 +713,11 @@ onResult: (result : number, extraInfo : AuthResult) => void ...@@ -873,11 +713,11 @@ onResult: (result : number, extraInfo : AuthResult) => void
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let auth = new userIAM_userAuth.UserAuth(); let auth = new userIAM_userAuth.UserAuth();
auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, { auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
onResult: (result, extraInfo) => { onResult: (result, extraInfo) => {
try { try {
console.info("auth onResult result = " + result); console.info("auth onResult result = " + result);
...@@ -891,8 +731,8 @@ onResult: (result : number, extraInfo : AuthResult) => void ...@@ -891,8 +731,8 @@ onResult: (result : number, extraInfo : AuthResult) => void
console.info("auth onResult error = " + e); console.info("auth onResult error = " + e);
} }
} }
}); });
``` ```
### onAcquireInfo<sup>(deprecated)</sup> ### onAcquireInfo<sup>(deprecated)</sup>
...@@ -916,11 +756,11 @@ onAcquireInfo ?: (module : number, acquire : number, extraInfo : any) => void ...@@ -916,11 +756,11 @@ onAcquireInfo ?: (module : number, acquire : number, extraInfo : any) => void
**示例:** **示例:**
```js ```js
import userIAM_userAuth from '@ohos.userIAM.userAuth'; import userIAM_userAuth from '@ohos.userIAM.userAuth';
let auth = new userIAM_userAuth.UserAuth(); let auth = new userIAM_userAuth.UserAuth();
auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, { auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
onAcquireInfo: (module, acquire, extraInfo) => { onAcquireInfo: (module, acquire, extraInfo) => {
try { try {
console.info("auth onAcquireInfo module = " + module); console.info("auth onAcquireInfo module = " + module);
...@@ -930,8 +770,8 @@ onAcquireInfo ?: (module : number, acquire : number, extraInfo : any) => void ...@@ -930,8 +770,8 @@ onAcquireInfo ?: (module : number, acquire : number, extraInfo : any) => void
console.info("auth onAcquireInfo error = " + e); console.info("auth onAcquireInfo error = " + e);
} }
} }
}); });
``` ```
## AuthResult<sup>(deprecated)</sup> ## AuthResult<sup>(deprecated)</sup>
...@@ -1090,16 +930,17 @@ execute(type: AuthType, level: SecureLevel, callback: AsyncCallback&lt;number&gt ...@@ -1090,16 +930,17 @@ execute(type: AuthType, level: SecureLevel, callback: AsyncCallback&lt;number&gt
| number | 表示认证结果,参见[AuthenticationResult](#authenticationresultdeprecated)。 | | number | 表示认证结果,参见[AuthenticationResult](#authenticationresultdeprecated)。 |
**示例:** **示例:**
```js
let authenticator = userIAM_userAuth.getAuthenticator(); ```js
authenticator.execute("FACE_ONLY", "S2", (error, code)=>{ let authenticator = userIAM_userAuth.getAuthenticator();
authenticator.execute("FACE_ONLY", "S2", (error, code)=>{
if (code === userIAM_userAuth.ResultCode.SUCCESS) { if (code === userIAM_userAuth.ResultCode.SUCCESS) {
console.info("auth success"); console.info("auth success");
return; return;
} }
console.error("auth fail, code = " + code); console.error("auth fail, code = " + code);
}); });
``` ```
### execute<sup>(deprecated)</sup> ### execute<sup>(deprecated)</sup>
...@@ -1130,14 +971,14 @@ execute(type : AuthType, level : SecureLevel): Promise&lt;number&gt; ...@@ -1130,14 +971,14 @@ execute(type : AuthType, level : SecureLevel): Promise&lt;number&gt;
**示例:** **示例:**
```js ```js
let authenticator = userIAM_userAuth.getAuthenticator(); let authenticator = userIAM_userAuth.getAuthenticator();
authenticator.execute("FACE_ONLY", "S2").then((code)=>{ authenticator.execute("FACE_ONLY", "S2").then((code)=>{
console.info("auth success"); console.info("auth success");
}).catch((error)=>{ }).catch((error)=>{
console.error("auth fail, code = " + error); console.error("auth fail, code = " + error);
}); });
``` ```
## AuthenticationResult<sup>(deprecated)</sup> ## AuthenticationResult<sup>(deprecated)</sup>
......
# 用户认证错误码
## 201 权限验证失败
**错误信息**
Permission verification failed.
**可能原因**
该应用没有调用相关接口的权限:
调用userAuth模块的getVersion、getAvailableStatus、start和cancel接口都需要ohos.permission.ACCESS_BIOMETRIC权限。
**处理步骤**
申请权限。在module.json5文件的requestPermissions对象中配置ohos.permission.ACCESS_BIOMETRIC权限。更多配置信息[应用包结构配置文件的说明](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/stage-structure.md)
## 202 调用方不是一个系统应用
**错误信息**
The caller is not a system application.
**可能原因**
faceAuth模块的setSurfaceId当前只允许系统应用进行调用,非系统应用调用则会返回202错误码。
**处理步骤**
应用需要更改签名配置文件中的app-feature字段值为hos_system_app,使其成为系统应用才可以调用setSurfaceId接口。
## 401 参数不正确
**错误信息**
Incorrect parameters.
**可能原因**
该错误码表示调用接口时传入的参数不正确(包括参数个数和参数的取值)
例如调用userAuth模块的getAvailableStatus接口时,如果只传入1个参数,或者authTrustLevel的取值不在[ATL1, ATL2, ATL3, ATL4]范围,则会返回401错误码。
**处理步骤**
请检查传入的参数个数和参数取值等信息。
## 12500002 一般的操作错误
**错误信息**
General operation error.
**可能原因**
NAPI层解析参数出错。
用户认证服务的进程没有启动。
IPC通信的proxy客户端写数据出错。
IPC通信的stub服务端解析数据出错。
获取driver服务出错。
**处理步骤**
重启设备,重新调用接口。
## 12500005 认证类型不支持
**错误信息**
The authentication type is not supported.
**可能原因**
传入的认证类型参数不支持,例如调用userAuth模块的getAvailableStatus接口时传入的参数不是FACE或FINGERPRINT类型,则会返回12500005错误码。
**处理步骤**
请检查传入的认证类型参数,重新调用接口。
## 12500006 认证信任等级不支持
**错误信息**
The authentication trust level is not supported.
**可能原因**
调用userAuth模块的getAvailableStatus或getAuthInstance接口时,传入的authTrustLevel参数不在[ATL1, ATL2, ATL3, ATL4]范围内。
当前的设备的确不支持该认证信任等级。
**处理步骤**
检查传入的authTrustLevel是否在合理范围,如果在合理范围,则是当前的设备不支持该认证信任等级。
## 12500010 该类型的凭据没有录入
**错误信息**
The type of credential has not been enrolled.
**可能原因**
例如调用userAuth模块的getAvailableStatus接口,传入的authType参数为FACE,但是当前的设备没有录入人脸凭据,则会返回12500010错误码。
调用start接口发起人脸认证,但是目前的设备没有录入人脸凭据,则会返回12500010错误码。
**处理步骤**
检查是否录入该类型的凭据,如果没有录入,则需要成功录入该类型凭据后再调用相关接口。
## 12700001 人脸录入过程中的操作失败
**错误信息**
The operation is failed.
**可能原因**
例如调用faceAuth模块的setSurfaceId接口时,人脸认证服务未启动,则会返回12700001错误码。
IPC通信的proxy客户端写数据出错。
IPC通信的stub服务端解析数据出错。
人脸driver层调用出错。
**处理步骤**
一般主要检查人脸认证服务的进程是否启动。
...@@ -9,13 +9,13 @@ ...@@ -9,13 +9,13 @@
## 接口说明 ## 接口说明
userIAM_userAuth模块提供了用户认证的相关方法,包括检测认证能力、认证和取消认证等,用户可以使用人脸、指纹等生物特征信息进行认证操作。具体接口说明可以查阅[API参考](../reference/apis/js-apis-useriam-userauth.md) userIAM_userAuth模块提供了用户认证的相关方法,包括查询认证能力、发起认证和取消认证等,用户可以使用人脸、指纹等生物特征信息进行认证操作。具体接口说明可以查阅[API参考](../reference/apis/js-apis-useriam-userauth.md)
在执行认证前,需要检查设备是否支持该认证能力,具体指认证类型、认证等级。如果不支持,需要考虑使用其他认证能力。 在执行认证前,需要指认证类型和认证等级,查询设备是否支持该认证能力。如果不支持,需要考虑使用其他认证能力。
**表1** 用户认证开放能力列表 **表1** 用户认证开放能力列表
| 接口名 | 功能描述 | | 接口名 | 功能描述 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | | ------------------------------------------------------------ | ------------------------------------------------------------ |
| getVersion() : number | 获取认证对象的版本信息。 | | getVersion() : number | 获取认证对象的版本信息。 |
| getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number | 根据指定的认证类型、认证等级,检测当前设备是否支持相应的认证能力。 | | getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number | 根据指定的认证类型、认证等级,检测当前设备是否支持相应的认证能力。 |
......
...@@ -61,7 +61,7 @@ Pin_auth驱动的主要工作是为上层用户认证框架和Pin_auth服务提 ...@@ -61,7 +61,7 @@ Pin_auth驱动的主要工作是为上层用户认证框架和Pin_auth服务提
![image](figures/pin_auth服务与驱动交互.png "pin_auth服务与驱动交互") ![image](figures/pin_auth服务与驱动交互.png "pin_auth服务与驱动交互")
### 约束与限制 ### 约束与限制
口令认证的实现需要在TEE安全环境中实现,口令凭据等数据的密信息需要在安全环境中存储。 口令认证的实现需要在TEE安全环境中实现,口令凭据等数据的密信息需要在安全环境中存储。
## 开发指导 ## 开发指导
### 场景介绍 ### 场景介绍
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
- 用户认证框架公钥 & 执行器公钥 - 用户认证框架公钥 & 执行器公钥
用户身份认证处理需要保证用户数据安全以及认证结果的准确性,用户认证框架与基础认证服务间的关键交互信息需要做数据完整性保护,各基础认证服务将提供的执行器能力对接到用户认证框架时,需要交各自的公钥,其中: 用户身份认证处理需要保证用户数据安全以及认证结果的准确性,用户认证框架与基础认证服务间的关键交互信息需要做数据完整性保护,各基础认证服务将提供的执行器能力对接到用户认证框架时,需要交各自的公钥,其中:
- 执行器通过用户认证框架公钥校验调度指令的准确性,如锁定一个人脸模板,这种情况导致无法使用人脸功能,属于敏感操作,需要确保指令准确,才可处理。 - 执行器通过用户认证框架公钥校验调度指令的准确性,如锁定一个人脸模板,这种情况导致无法使用人脸功能,属于敏感操作,需要确保指令准确,才可处理。
...@@ -121,7 +121,7 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据 ...@@ -121,7 +121,7 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
| UpdateIdentificationResult(uint64_t contextId, const std::vector<uint8_t>& scheduleResult,<br/> IdentifyResultInfo& info) | 更新识别结果,进行此次识别方案结果的评估。 | | UpdateIdentificationResult(uint64_t contextId, const std::vector<uint8_t>& scheduleResult,<br/> IdentifyResultInfo& info) | 更新识别结果,进行此次识别方案结果的评估。 |
| CancelIdentification(uint64_t contextId) | 取消此次识别。 | | CancelIdentification(uint64_t contextId) | 取消此次识别。 |
| GetAuthTrustLevel(int32_t userId, AuthType authType, uint32_t& authTrustLevel) | 获取此用户当前认证类型的认证可信等级。 | | GetAuthTrustLevel(int32_t userId, AuthType authType, uint32_t& authTrustLevel) | 获取此用户当前认证类型的认证可信等级。 |
| GetValidSolution(int32_t userId, const std::vector<AuthType>& authTypes, uint32_t authTrustLevel,<br/> std::vector<AuthType>& validTypes) | 筛选此用户当前认证可信等级下可用认证方式。 | | GetValidSolution(int32_t userId, const std::vector<AuthType>& authTypes, uint32_t authTrustLevel,<br/> std::vector<AuthType>& validTypes) | 筛选此用户当前认证可信等级下可用认证方式。 |
### 开发步骤 ### 开发步骤
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
## 简介 ## 简介
用户身份和访问管理子系统,下称用户IAM(Identity and Access Management),旨在为OpenHarmony提供统一用户身份凭据信息管理和用户身份认证框架能力,支持多用户分别设置认证凭据信息,并根据用户设置的认证凭据信息提供用户身份认证功能,支撑锁屏等安全场景。同时,用户IAM子系统也提供API,支持三方开发者调用系统提供的身份认证能力来实现业务对用户的访问控制要求。 用户身份和访问管理子系统,下称用户IAM(Identity and Access Management),旨在为OpenHarmony提供统一用户身份凭据管理和身份认证的能力,支持多用户分别设置凭据信息,并根据用户设置的凭据信息提供用户身份认证功能,支撑锁屏和支付等安全场景。同时,用户IAM子系统也提供对外的接口供三方应用调用,实现业务对用户的访问控制要求。
**图1** 子系统架构图 **图1** 子系统架构图
...@@ -14,15 +14,14 @@ ...@@ -14,15 +14,14 @@
- **用户身份凭据管理:** 向上提供系统内统一的用户身份凭据信息管理接口,向下通过认证执行器管理模块,调用系统内的认证资源,完成用户身份凭据的生命周期管理和安全存储。 - **用户身份凭据管理:** 向上提供系统内统一的用户身份凭据信息管理接口,向下通过认证执行器管理模块,调用系统内的认证资源,完成用户身份凭据的生命周期管理和安全存储。
- **认证执行器管理:** 提供认证资源管理和认证会话管理功能,支持系统内身份认证相关**执行器**<sup></sup>统一管理和协同调度,支持不同类型的身份认证执行器灵活对接。 - **认证执行器管理:** 提供认证资源管理和认证会话管理功能,支持系统内身份认证相关**执行器**<sup></sup>统一管理和协同调度,支持不同类型的身份认证执行器灵活对接。
基于统一用户认证框架,系统可以扩展支持多种认证能力。OpenHarmony框架当前已经支持的**认证执行器**包含口令认证和人脸认证,开发者如果想实现新的认证执行器,只需要在新的部件内实现认证相关功能,并且按照执行器管理模块定义的接口与统一用户认证框架对接即可。 基于统一用户认证框架,系统可以扩展支持多种认证能力。OpenHarmony框架当前已经支持的**认证执行器**包含口令执行器和人脸执行器,开发者如果想实现新的认证执行器,只需要在新的部件内实现认证相关功能,并且按照执行器管理模块定义的接口与统一用户认证框架对接即可。
*注:在用户IAM子系统内,将一个用户身份认证操作的最小执行单元称为**执行器**,如一个口令认证模块,处理口令采集、口令处理和比对、口令安全存储的全过程,因此可以抽象为一个口令认证的全功能执行器。* *注:在用户IAM子系统内,将一个用户身份认证操作的最小执行单元称为**执行器**,如一个口令认证模块,包含口令采集、处理、安全存储和口令比对的全过程,因此可以抽象为一个口令认证的全功能执行器。*
## 目录 ## 目录
```undefined ```undefined
//base/user_iam //base/useriam
├── user_auth_framework # 用户认证框架,包括用户认证、凭据管理和执行器管理 ├── user_auth_framework # 用户认证框架,包括用户认证、凭据管理和执行器管理
├── face_auth # 人脸认证部件,与认证执行器管理对接,支持人脸录入、删除和人脸认证功能 ├── face_auth # 人脸认证部件,与认证执行器管理对接,支持人脸录入、删除和人脸认证功能
├── pin_auth # 口令认证部件,与认证执行器管理对接,支持口令录入、删除和口令认证功能 ├── pin_auth # 口令认证部件,与认证执行器管理对接,支持口令录入、删除和口令认证功能
...@@ -31,7 +30,7 @@ ...@@ -31,7 +30,7 @@
## 约束 ## 约束
1. 用户身份凭据信息管理类操作,是系统内的关键操作,相关接口只支持系统基础应用调用。 1. 用户身份凭据信息管理类操作,是系统内的关键操作,相关接口只支持系统基础应用调用。
2. 执行器内部真正完成用户凭据信息的处理,因此只支持系统服务实现执行器的功能,与认证执行器管理模块对接。 2. 执行器内部真正完成用户凭据信息的处理,因此只支持系统服务实现执行器的功能,与认证执行器管理模块对接。
## 说明 ## 说明
...@@ -39,7 +38,7 @@ ...@@ -39,7 +38,7 @@
### 使用说明 ### 使用说明
1. 统一用户认证框架必须配合一个认证执行器才可以使用。 1. 统一用户认证框架必须配合一个认证执行器才可以使用。
2. 系统内默认存在的第一个认证执行器应该是口令执行器。 2. 系统内默认存在的第一个认证执行器是口令执行器。
## 相关仓 ## 相关仓
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册