# 阿里云身份认证服务集成说明

## 功能概述

本项目已成功集成阿里云身份认证服务（CloudAuth）的身份证二要素核验功能，实现用户实名认证。

**✅ 当前状态：已启用真实的阿里云身份认证API调用（新版SDK）**

**🔧 最新更新：** 已修复 `MissingFaceImageUrl` 错误，更新为官方推荐的新版SDK和正确的API接口。

## 实现的功能

### 1. 实名认证接口
- **端点**: `POST /user/identity/verify`
- **功能**: 用户提交身份证号码和真实姓名进行实名认证
- **认证流程**: 
  - 验证身份证号码和姓名格式
  - 调用阿里云身份认证服务验证信息匹配性
  - 验证通过后更新用户认证状态

### 2. 认证状态查询
- **端点**: `GET /user/identity/status` 
- **功能**: 查询当前用户的实名认证状态和相关信息（脱敏后）

### 3. 认证状态检查
- **端点**: `GET /user/identity/check`
- **功能**: 简单检查当前用户是否已完成实名认证

## 数据库字段说明

用户表（`user`）中实名认证相关字段：

| 字段名 | 类型 | 说明 |
|--------|------|------|
| `real_username` | varchar(64) | 真实用户名 |
| `id_number` | varchar(18) | 身份证号码 |
| `is_verified` | tinyint | 是否实名认证 (0-未认证, 1-已认证) |

## 配置信息

### application.yml 配置

```yaml
aliyun:
  cloudauth:
    region: cn-hangzhou
    endpoint: cloudauth.aliyuncs.com
    # 直接从配置文件读取认证信息
    access-key-id: LTAI5t68do3qVXx5Rufugt3X
    access-key-secret: 2vD9ToIff49Vph4JQXsn0Cy8nXQfzA
    connection-timeout: 10000
    response-timeout: 10000
    # 身份认证配置
    biz-type: ID_2META
    param-type: normal
```

### 配置说明

**直接配置文件读取方式**：
- ✅ 所有配置直接在application.yml中管理
- ✅ 无需设置环境变量
- ✅ 配置集中统一，便于管理

## 当前实现状态

### 已实现
✅ 配置文件集成  
✅ 数据库字段支持  
✅ API接口完整实现  
✅ DTO类和响应封装  
✅ 用户认证状态管理  
✅ 输入验证和异常处理  
✅ 日志记录和监控  
✅ **真实阿里云CloudAuth SDK集成**  
✅ **真实身份证二要素验证**  
✅ **完整的错误处理和权限检查**  

### 当前实现状态

**✅ 已完成真实阿里云API集成**: 

1. **✅ 已启用阿里云SDK**: `pom.xml`中的阿里云CloudAuth依赖已启用
2. **✅ 已实现真实API调用**: `IdentityVerifyServiceImpl`中已集成真实的阿里云身份认证API
3. **✅ 已配置访问凭证**: 支持环境变量和配置文件两种方式配置AccessKey

### 重要提醒

**⚠️ 生产环境部署前请确认：**
1. **配置有效的阿里云AccessKey**: 确保具有CloudAuth服务权限
2. **验证网络连接**: 确保服务器能够访问阿里云API
3. **监控API调用**: 关注API调用成功率和响应时间

## API使用示例

### 提交实名认证

```bash
curl -X POST http://localhost:8081/user/identity/verify \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your_jwt_token" \
  -d '{
    "realName": "张三",
    "idNumber": "110101199003077777"
  }'
```

### 查询认证状态

```bash
curl -X GET http://localhost:8081/user/identity/status \
  -H "Authorization: Bearer your_jwt_token"
```

## 安全特性

1. **JWT认证**: 所有接口都需要有效的JWT令牌
2. **数据脱敏**: 查询接口返回脱敏后的用户信息
3. **输入验证**: 严格的身份证号码和姓名格式验证
4. **异常处理**: 完善的错误处理和日志记录
5. **事务保证**: 认证过程使用数据库事务保证数据一致性

## 业务逻辑保护

- 已实名认证的用户不能重复认证
- 完整的输入参数验证
- 用户状态检查和权限控制
- 不破坏现有的用户管理和业务逻辑

## 扩展计划

1. 集成真实的阿里云CloudAuth SDK
2. 添加认证历史记录
3. 支持企业用户认证
4. 添加认证失败重试机制
5. 集成短信/邮件通知功能

---

*文档最后更新: 2024年8月31日*
