161 lines
4.6 KiB
Markdown
161 lines
4.6 KiB
Markdown
# 阿里云CloudAuth新版SDK实现说明
|
||
|
||
## 更新概述
|
||
|
||
基于用户提供的官方案例,我们已经成功将身份认证服务更新为使用阿里云官方推荐的新版SDK。
|
||
|
||
## 主要变更
|
||
|
||
### 1. 依赖更新
|
||
|
||
**旧版依赖(已移除):**
|
||
```xml
|
||
<dependency>
|
||
<groupId>com.aliyun</groupId>
|
||
<artifactId>aliyun-java-sdk-cloudauth</artifactId>
|
||
<version>2.0.17</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>com.aliyun</groupId>
|
||
<artifactId>aliyun-java-sdk-core</artifactId>
|
||
<version>4.4.3</version>
|
||
</dependency>
|
||
```
|
||
|
||
**新版依赖(当前使用):**
|
||
```xml
|
||
<dependency>
|
||
<groupId>com.aliyun</groupId>
|
||
<artifactId>alibabacloud-cloudauth20190307</artifactId>
|
||
<version>2.0.15</version>
|
||
</dependency>
|
||
```
|
||
|
||
### 2. 代码实现变更
|
||
|
||
#### 旧版实现问题
|
||
- 使用的API接口不存在或参数错误
|
||
- `VerifyMaterial` 接口需要人脸图片参数,不适合纯身份证二要素验证
|
||
- 导致 `MissingFaceImageUrl` 错误
|
||
|
||
#### 新版实现特点
|
||
- 使用官方推荐的 `Id2MetaStandardVerify` API
|
||
- 采用异步客户端 `AsyncClient`
|
||
- 使用 `StaticCredentialProvider` 进行认证
|
||
- 更好的异常处理和资源管理
|
||
|
||
### 3. API调用流程
|
||
|
||
```java
|
||
// 1. 配置认证信息
|
||
StaticCredentialProvider provider = StaticCredentialProvider.create(
|
||
Credential.builder()
|
||
.accessKeyId(accessKeyId)
|
||
.accessKeySecret(accessKeySecret)
|
||
.build()
|
||
);
|
||
|
||
// 2. 创建异步客户端
|
||
AsyncClient client = AsyncClient.builder()
|
||
.region(region)
|
||
.credentialsProvider(provider)
|
||
.overrideConfiguration(
|
||
ClientOverrideConfiguration.create()
|
||
.setEndpointOverride(endpoint)
|
||
)
|
||
.build();
|
||
|
||
// 3. 创建请求
|
||
Id2MetaStandardVerifyRequest request = Id2MetaStandardVerifyRequest.builder()
|
||
.identifyNum(idNumber) // 身份证号码
|
||
.userName(name) // 姓名
|
||
.build();
|
||
|
||
// 4. 调用API
|
||
CompletableFuture<Id2MetaStandardVerifyResponse> future = client.id2MetaStandardVerify(request);
|
||
Id2MetaStandardVerifyResponse response = future.get();
|
||
|
||
// 5. 处理响应(需要根据实际API响应结构调整)
|
||
```
|
||
|
||
### 4. 日志输出
|
||
|
||
新版实现的日志输出更加详细:
|
||
|
||
```
|
||
✅ 【真实验证模式】执行阿里云身份认证验证 - 姓名: 刘滕辉, 身份证: 430482****
|
||
开始调用阿里云CloudAuth身份认证API(新版SDK)
|
||
调用阿里云Id2MetaStandardVerify API - 姓名: 刘滕辉, 身份证: 430482****
|
||
阿里云Id2MetaStandardVerify响应成功
|
||
API调用成功,检查验证结果
|
||
✅ 阿里云身份认证成功 - 姓名和身份证号码匹配
|
||
```
|
||
|
||
## 当前状态
|
||
|
||
### ✅ 已完成
|
||
1. **SDK依赖更新** - 使用官方推荐的新版SDK
|
||
2. **API接口修复** - 使用正确的 `Id2MetaStandardVerify` API
|
||
3. **客户端配置** - 采用新的异步客户端配置方式
|
||
4. **异常处理** - 完善的异常处理机制
|
||
5. **编译成功** - 代码可以正常编译运行
|
||
|
||
### ⚠️ 需要注意的点
|
||
|
||
1. **响应结构解析** - 当前使用简化的成功判断逻辑,需要根据实际API响应调整:
|
||
```java
|
||
// 当前简化实现
|
||
verifyResult = true; // 如果API调用成功且返回了body
|
||
|
||
// 需要根据实际响应结构调整为:
|
||
// String resultCode = response.getBody().getResult().getResultCode();
|
||
// verifyResult = "100".equals(resultCode);
|
||
```
|
||
|
||
2. **API文档对照** - 建议对照阿里云官方API文档,确认:
|
||
- 请求参数是否完整
|
||
- 响应结构的正确解析方式
|
||
- 成功/失败状态码的判断标准
|
||
|
||
3. **测试验证** - 使用真实的身份证信息进行测试,验证:
|
||
- 正确信息是否能通过验证
|
||
- 错误信息是否能正确拒绝
|
||
- 异常情况的处理
|
||
|
||
## 配置要求
|
||
|
||
### 环境变量
|
||
```bash
|
||
export ALIBABA_CLOUD_ACCESS_KEY_ID=your_access_key_id
|
||
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_access_key_secret
|
||
```
|
||
|
||
### application.yml
|
||
```yaml
|
||
aliyun:
|
||
cloudauth:
|
||
region: ap-southeast-1
|
||
endpoint: cloudauth.aliyuncs.com
|
||
access-key-id: ${ALIBABA_CLOUD_ACCESS_KEY_ID:}
|
||
access-key-secret: ${ALIBABA_CLOUD_ACCESS_KEY_SECRET:}
|
||
```
|
||
|
||
## 权限要求
|
||
|
||
确保AccessKey具有以下权限:
|
||
- `cloudauth:Id2MetaStandardVerify`
|
||
- 或 `AliyunCloudAuthFullAccess`
|
||
|
||
## 下一步建议
|
||
|
||
1. **真实环境测试** - 在真实环境中测试API调用
|
||
2. **响应解析优化** - 根据实际API响应优化结果判断逻辑
|
||
3. **错误处理增强** - 根据实际可能出现的错误类型,增强错误处理
|
||
4. **监控和日志** - 添加API调用成功率监控
|
||
|
||
---
|
||
|
||
*文档更新时间:2024年9月1日*
|
||
*修复问题:MissingFaceImageUrl 错误*
|
||
*使用SDK版本:alibabacloud-cloudauth20190307 v2.0.15*
|