mirror of
https://github.com/openharmony/useriam_auth_executor_mgr.git
synced 2026-07-01 21:04:00 -04:00
bbb77b5d66c82cd0a7138f899605fb878b229812
Signed-off-by: 韩震 <hanzhen10@huawei.com> Change-Id: I569b7f18aeb1d0e9031752b1f06d903ffe54842b
useriam_coauth
简介
**协同认证(coauth)**是用户IAM子系统的基础部件之一,提供系统内认证相关资源的统一管理和协同调度能力,当前支持口令认证和人脸认证的对接。
我们将设备上的一个用户身份认证单元,称为认证执行器。
协同认证定义了一套资源管理接口,新增的认证执行器在实现了认证资源管理定义的接口后,可以对接到协同认证框架上,从而为系统提供相关身份认证能力。
图1 协同认证架构图
如图所示,OpenHarmony框架已经实现了协同认证的系统服务,并对上封装了协同调度和资源管理的接口。协同认证部件内部分功能需要厂商适配来达到更高的安全性要求。需要南向厂商适配的接口,在用户IAM Common HDI中有定义。
目录
//base/user_iam/coauth
├── coauth.gni # 构建配置
├── ohos.build # 组件描述文件
├── frameworks # 框架代码
├── interfaces # 对外接口存放目录
│ └── innerkits # 对内部子系统暴露的头文件,供系统服务使用
├── sa_profile # Service Ability 配置文件
├── services # Service Ability 服务实现
├── test # 测试代码存入目录
└── utils # 工具代码存放目录
编译构建
准备
开发者需要在Linux上搭建编译环境:
- Ubuntu编译环境准备
- Hi3518EV300单板:参考环境搭建
- Hi3516DV300单板:参考环境搭建
获取源码
在Linux服务器上下载并解压一套源代码,源码获取方式参考源码获取。
编译构建
开发者开发第一个应用程序可参考:
说明
接口说明
表1 资源管理接口
| 接口名 | 描述 |
|---|---|
| uint64_t Register(std::shared_ptr executorInfo, std::shared_ptr callback); | 注册接口,执行器传入基本信息和实现的回调函数 |
| void QueryStatus(AuthExecutor &executorInfo, std::shared_ptr callback); | 状态查询接口,查询当前执行器是否已经注册 |
表2 执行器需要实现的回调接口
| 接口名 | 描述 |
|---|---|
| virtual void OnMessengerReady(const sptr<IExecutorMessenger> &messenger); | 通知执行器信使可用,传入信使(用于后续协同认证与执行器通信) |
| virtual int32_t OnBeginExecute(uint64_t scheduleId, std::vector<uint8_t> &publicKey, std::shared_ptr commandAttrs); | 通知执行器开始执行认证相关操作,commandAttrs中传入本次操作的属性 |
| virtual int32_t OnEndExecute(uint64_t scheduleId, std::shared_ptr consumerAttr); | 通知执行器结束本次操作 |
| virtual int32_t OnSetProperty(std::shared_ptr properties); | 设置属性信息 |
| virtual int32_t OnGetProperty(std::shared_ptr conditions, std::shared_ptr values); | 获取属性信息 |
表3 信使函数
| 接口名 | 描述 |
|---|---|
| virtual int32_t SendData(uint64_t scheduleId, uint64_t transNum, int32_t srcType, int32_t dstType, std::shared_ptr<AuthMessage> msg) override; | 发送消息,消息源为执行器,目的端为协同认证框架,消息内容由执行器指定,比如返回人脸认证过程中的提示信息(光线过暗) |
| virtual int32_t Finish(uint64_t scheduleId, int32_t srcType, int32_t resultCode, std::shared_ptr finalResult) override; | 操作结束,消息源为执行器,目的端为协同认证框架,消息内容为本次操作的最终结果 |
使用说明
- 协同认证SA提供执行器对接接口,各身份认证执行器调用资源管理接口完成认证执行器的注册
- 需在可信执行环境内实现头文件
common\hal\interface\coauth_interface.h中定义的接口,保证认证执行器信息不可篡改,并在可信执行环境内校验认证执行器返回的结果
相关仓
Description
Languages
C++
56.4%
C
43.6%