# 阿里云身份认证配置文件设置指南

## 配置方式说明

根据用户需求，系统已配置为**直接从配置文件读取**阿里云身份认证信息，不使用环境变量。

## 配置文件结构

### application.yml 配置
```yaml
aliyun:
  # --- 阿里云身份认证服务配置 ---
  cloudauth:
    region: cn-hangzhou                      # 区域配置
    endpoint: cloudauth.aliyuncs.com         # API端点
    # 直接从配置文件读取认证信息
    access-key-id: LTAI5t68do3qVXx5Rufugt3X    # AccessKey ID
    access-key-secret: 2vD9ToIff49Vph4JQXsn0Cy8nXQfzA  # AccessKey Secret
    connection-timeout: 10000                # 连接超时时间(ms)
    response-timeout: 10000                  # 响应超时时间(ms)
    # 身份认证配置
    biz-type: ID_2META                       # 业务类型：身份证二要素验证
    param-type: normal                       # 参数类型：normal表示不加密
```

## 代码配置读取

### Java 配置注入
```java
@Value("${aliyun.cloudauth.access-key-id}")
private String accessKeyId;

@Value("${aliyun.cloudauth.access-key-secret}")
private String accessKeySecret;

@Value("${aliyun.cloudauth.region}")
private String region;

@Value("${aliyun.cloudauth.endpoint}")
private String endpoint;

@Value("${aliyun.cloudauth.param-type}")
private String paramType;
```

### 特点说明
- ✅ **直接读取**: 无默认值，直接从配置文件读取
- ✅ **无环境变量依赖**: 完全不依赖环境变量
- ✅ **配置集中**: 所有配置在application.yml中统一管理
- ✅ **类型安全**: Spring会自动进行类型转换和验证

## 配置参数说明

| 参数 | 说明 | 示例值 | 必需 |
|------|------|--------|------|
| `region` | 阿里云区域 | cn-hangzhou | ✅ |
| `endpoint` | API端点 | cloudauth.aliyuncs.com | ✅ |
| `access-key-id` | 阿里云AccessKey ID | LTAI5t68... | ✅ |
| `access-key-secret` | 阿里云AccessKey Secret | 2vD9ToIf... | ✅ |
| `connection-timeout` | 连接超时时间(毫秒) | 10000 | ✅ |
| `response-timeout` | 响应超时时间(毫秒) | 10000 | ✅ |
| `biz-type` | 业务类型 | ID_2META | ✅ |
| `param-type` | 参数类型 | normal | ✅ |

## 配置验证

### 启动时验证
应用启动时会自动验证配置：
```
2024-09-01 10:30:00 INFO  - 阿里云身份认证配置加载成功
2024-09-01 10:30:00 INFO  - Region: cn-hangzhou
2024-09-01 10:30:00 INFO  - Endpoint: cloudauth.aliyuncs.com
2024-09-01 10:30:00 INFO  - ParamType: normal
```

### 运行时日志
API调用时会显示配置信息：
```
调用阿里云Id2MetaStandardVerify API - 姓名: 张三, 身份证: 110101****, ParamType: normal
```

## 安全配置建议

### 1. 生产环境配置
```yaml
aliyun:
  cloudauth:
    region: cn-hangzhou
    endpoint: cloudauth.aliyuncs.com
    access-key-id: [生产环境AccessKey ID]
    access-key-secret: [生产环境AccessKey Secret]
    param-type: normal
```

### 2. 测试环境配置
```yaml
aliyun:
  cloudauth:
    region: cn-hangzhou
    endpoint: cloudauth.aliyuncs.com
    access-key-id: [测试环境AccessKey ID]
    access-key-secret: [测试环境AccessKey Secret]
    param-type: normal
```

### 3. 权限要求
确保AccessKey具有以下权限：
- `AliyunCloudAuthFullAccess` (推荐)
- 或最小权限：`cloudauth:Id2MetaStandardVerify`

## 配置修改步骤

### 1. 更新AccessKey
```yaml
# 修改application.yml
aliyun:
  cloudauth:
    access-key-id: [新的AccessKey ID]
    access-key-secret: [新的AccessKey Secret]
```

### 2. 重启应用
```bash
# 重启Spring Boot应用
mvn spring-boot:run
# 或
java -jar target/1818_user_server-1.0-SNAPSHOT.jar
```

### 3. 验证配置
查看启动日志确认配置加载成功

## 故障排除

### 配置缺失错误
```
Error: Could not resolve placeholder 'aliyun.cloudauth.access-key-id'
```
**解决方案**: 检查application.yml中是否正确配置了所有必需参数

### 权限错误
```
API响应Code: 440, Message: 无权限调用
```
**解决方案**: 
1. 检查AccessKey权限
2. 确认实人认证服务已开通
3. 验证区域配置正确

### 网络连接错误
```
调用阿里云身份认证API失败: Connect timeout
```
**解决方案**:
1. 检查网络连接
2. 验证endpoint配置
3. 检查防火墙设置

## 配置文件示例

### 完整配置示例
```yaml
# application.yml
server:
  port: 8081

spring:
  application:
    name: 1818-user-server

# 其他配置...

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
```

---

*配置方式：直接配置文件读取*  
*更新时间：2024年9月1日*  
*状态：✅ 已实施并验证*
