From 1d203e3b56a38ad216fd821ea1b9cdfc1aa3bce7 Mon Sep 17 00:00:00 2001 From: XiaoshuangMa Date: Fri, 14 Jan 2022 21:14:01 +0800 Subject: [PATCH] add useriam readme. Signed-off-by: XiaoshuangMa --- ...3\350\276\221\346\236\266\346\236\204.png" | Bin 0 -> 30725 bytes ...AM\345\255\220\347\263\273\347\273\237.md" | 79 ++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 "zh-cn/readme/figures/\347\224\250\346\210\267IAM\345\255\220\347\263\273\347\273\237\351\200\273\350\276\221\346\236\266\346\236\204.png" create mode 100644 "zh-cn/readme/\347\224\250\346\210\267IAM\345\255\220\347\263\273\347\273\237.md" diff --git "a/zh-cn/readme/figures/\347\224\250\346\210\267IAM\345\255\220\347\263\273\347\273\237\351\200\273\350\276\221\346\236\266\346\236\204.png" "b/zh-cn/readme/figures/\347\224\250\346\210\267IAM\345\255\220\347\263\273\347\273\237\351\200\273\350\276\221\346\236\266\346\236\204.png" new file mode 100644 index 0000000000000000000000000000000000000000..efd3c80bb7e2a4ca60275b83e06b6b153b6ba817 GIT binary patch literal 30725 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 literal 0 HcmV?d00001 diff --git "a/zh-cn/readme/\347\224\250\346\210\267IAM\345\255\220\347\263\273\347\273\237.md" "b/zh-cn/readme/\347\224\250\346\210\267IAM\345\255\220\347\263\273\347\273\237.md" new file mode 100644 index 0000000000..ea0779ae8f --- /dev/null +++ "b/zh-cn/readme/\347\224\250\346\210\267IAM\345\255\220\347\263\273\347\273\237.md" @@ -0,0 +1,79 @@ +# 用户IAM子系统 + +- [简介](#简介) +- [目录](#目录) +- [约束](#约束) +- [说明](#说明) + - [使用说明](#使用说明) +- [相关仓](#相关仓) + + +## 简介 + +用户IAM子系统旨在为OpenHarmony提供的统一用户身份凭据信息管理和用户身份认证框架能力,支持多用户分别设置认证凭据信息,并根据用户设置的认证凭据信息提供用户身份认证功能,支撑锁屏等安全场景。同时,用户IAM子系统也提供北向接口,支持三方开发者调用系统提供的身份认证能力来实现业务对用户的访问控制要求。 + +**图1** 子系统架构图 + +coauth架构图 + +用户IAM子系统分为基础框架和动态扩展两个部分,其中**基础框架**部分包含: + +- **协同认证:** 提供认证资源管理和认证会话管理功能,支持系统内身份认证相关执行器统一管理和协同调度,支持不同类型的身份认证执行器灵活对接。 + +- **用户身份凭据管理:** 向上提供系统内统一的用户身份凭据信息管理接口,向下通过协同认证模块,调用系统内的认证资源,完成用户身份凭据的生命周期管理和安全存储 + +- **统一用户认证:** 对外提供统一用户身份认证功能,并且北向开放生物特征认证相关功能。 + +**动态扩展**部分包含OpenHarmony框架本次默认支持的口令认证和人脸认证功能,并支持开发者按协同认证模块定义好的接口扩展新的认证能力。 + + + +## 目录 + + +```undefined +//base/user_iam +├── coauth # 协同认证部件,支持系统内统一的认证资源管理和调度 +├── face_auth # 人脸认证部件,与协同认证对接,支持人脸录入、删除和人脸认证功能 +├── pin_auth # 口令认证部件,与口令认证对接,支持口令录入、删除和口令认证功能 +├── user_auth # 统一用户认证部件,提供统一用户身份认证功能 +└── user_idm # 用户身份凭据管理部件,提供系统内统一的用户身份凭据信息管理功能 + +``` + + + +## 约束 + + +| 要求项 | 内容要求 | +| -------- | -------- | +| D.1.1 | 用户身份凭据信息管理是系统内的关键操作,只允许系统应用调用 | +| D.1.2 | 用户身份认证执行器内真正完成用户身份认证凭据信息的处理,只系统服务实现对应能力 | + + + +## 说明 + +### 使用说明 + +1. 用户IAM子系统基础框架必须配合一个认证执行器才可以使用 +2. 系统内默认存在的第一个认证执行器应该是口令认证 + + + +## 相关仓 + + +[useriam_coauth](https://gitee.com/openharmonys/useriam_coauth) + +[useriam_useridm](https://gitee.com/openharmony/useriam_useridm) + +[useriam_userauth](https://gitee.com/openharmony/useriam_userauth) + +[useriam_pinauth](https://gitee.com/openharmony/useriam_pinauth) + +[useriam_faceauth](https://gitee.com/openharmony/useriam_faceauth) + + + -- GitLab