设备认证API
引用文件
目录
简介
本文件面向设备侧SDK与集成方,系统性梳理设备认证API的设计与实现,覆盖以下能力:
- 设备登录/激活认证接口
- MAC地址认证接口
- CPU序列号认证接口
- 设备状态查询接口
- 认证流程、安全机制、设备标识符格式、失败处理策略
- 设备SDK集成要点、认证参数说明与故障排除
项目结构
设备认证相关能力由“API接口定义 + 业务实现 + 控制器 + DTO/VO + 常量/枚举”构成,采用分层架构:
- API层:通过Feign声明远程RPC接口,统一服务名与前缀
- 控制器层:对外暴露REST接口,处理设备认证与心跳
- 业务层:实现认证逻辑、设备创建/更新、入网凭证生成
- 数据访问层:MyBatis Mapper与DO对象
- DTO/VO:传输对象与请求体对象
- 常量/枚举:服务名、API前缀、错误码、版本控制
图表来源
章节来源
核心组件
- 设备认证控制器:提供新旧两条认证接口,分别处理带CPU+多字段的新版与仅传MAC的旧版
- 认证服务实现:负责MAC/CPU匹配 、设备不存在时创建、已激活设备的重激活、入网凭证生成与落库
- 设备服务接口:提供按MAC+CPU查询设备、创建/更新设备等能力
- 区域/渠道服务:解析IP归属地、默认渠道选择
- DTO/VO:认证请求体、设备响应体、认证记录DO
- 常量/枚举:服务名、API前缀、错误码、API版本控制
章节来源
- AppDeviceCertificationController.java
- DeviceCertificationImpl.java
- AppDeviceCertificationReqVO.java
- DeviceCertification.java
架构总览
设备认证API采用“控制 器-服务-数据访问”的分层设计,结合RPC接口与本地服务协同工作。认证流程围绕“MAC+CPU”进行设备匹配,若设备不存在则自动创建并生成入网凭证;若已激活则按需更新设备信息并刷新凭证。
图表来源
详细组件分析
设备认证接口族
- 新版设备激活认证
- 方法:POST /task/newNetworkAccessCertification
- 请求体:AppDeviceCertificationReqVO(包含MAC、CPU、设备信息、SDK版本等)
- 响应:包含入网凭证certification_code
- 适用场景:SDK版本较新,携带CPU与完整设备信息
- 旧版设备激活认证
- 方法:POST /task/networkAccessCertification/
{deviceMac} - 请求体:仅MAC字符串
- 响应:包含入网凭证certification_code
- 适用场景:兼容老SDK或仅能提供MAC的场景
- 方法:POST /task/networkAccessCertification/
章节来源
MAC地址认证接口
- RPC接口:/device/get-by-mac
- 功能:根据MAC查询设备信息
- 参数:mac(必填)
- 返回:CommonResult
<DeviceRespDTO>
章节来源
CPU序列号认证接口
- RPC接口:/device/get-by-mac-by-cpu
- 功能:根据MAC+CPU联合查询设备
- 参数:mac(必填)、cpu(可选)
- 返回:CommonResult
<DeviceRespDTO>
章节来源
设备状态查询接口
- RPC接口:/device/get-by-id、/device/get-count-by-channelIds、/device/get-count-by-modelIds、/device/batch-get-count-by-modelIds、/device/batch-get-count-by-channelIds
- 功能:按ID查询设备、按渠道/型号统计设备数量、批量统计
- 返回:CommonResult
<Long>或 CommonResult<Map<Integer, Long>>
章节来源
设备状态查询(心跳/活跃)
- 控制器:AppDeviceHeartBeatController
- 版本控制:通过HTTP头api-version区分心跳 接口行为
- 功能:设备心跳上报、任务下发检查、活跃度统计等
章节来源
认证流程与安全机制
- 设备唯一性:以MAC+CPU作为匹配依据,若设备不存在则创建
- 入网凭证:每次激活/重激活均生成新的certification随机串,用于后续鉴权/对账
- IP归属:解析请求IP归属地,填充regionId与ipAddress
- 默认渠道:根据平台选择默认渠道ID
- 重激活保护:若设备已激活且字段不全或版本变化,则更新字段并刷新凭证
- 异步入网记录:认证请求异步缓存,定时批量入库,降低写放大
图表来源
章节来源
设备标识符格式与参数说明
- MAC地址:必填,格式校验通过后方可创建/激活
- CPU序列号:建议提供,用于更精确的设备匹配
- 设备信息:设备型号、品牌、系统版本、构建号、内存规格、UI包名、序列号等
- SDK版本:用于识别设备SDK能力,触发字段更新策略
- 平台:用于默认渠道选择
章节来源
错误处理与返回规范
- 常见错误码(节选):设备不存在、MAC格式异常、导入失败、时间范围非法等
- 控制器层:对空请求体、MAC为空、MAC格式异常进行显式校验并返回错误
- 业务层:对异常进行捕获并记录日志,返回通用错误提示
章节来源
设备SDK集成示例(步骤指引)
- 步骤1:准备认证参数
- 必填:mac
- 建议:cpu、deviceModel、brand、systemVersion、build、ddr、ui、sdkVersionName、platform
- 步骤2:调用新版认证接口
- URL:POST /task/newNetworkAccessCertification
- Content-Type:application/json
- 成功后从响应中提取certification_code
- 步骤3:后续请求携带入网凭证
- 将certification_code用于后续接口鉴权(具体取决于业务接口要求)
- 步骤4:心跳与任务检查
- 使用心跳接口上报状态,并根据api-version头选择对应行为
章节来源
依赖关系分析
- 控制器依赖认证服务与租户上下文
- 认证服务依赖设备服务、区域服务、渠道服务、Mapper与配置
- 设备服务与Mapper依赖数据库
- API常量统一服务名与前缀,便于跨模块协作
图表来源
章节来源
性能考虑
- 异步入网记录:认证请求先缓存,定时批量入库,降低写放大
- 缓存队列:环形队列限制最大容量,避免内存膨胀
- 字段更新策略:仅在必要时更新字段,减少数据库写操作
- IP解析与默认渠道:建议在服务端缓存常用映射,减少重复计算
故障排除指南
- MAC格式错误
- 现象:返回MAC格式异常
- 处理:确保mac符合标准格式后再调用
- 设备不存在
- 现象:首次激活成功但后续仍报设备不存在
- 处理:确认MAC+CPU组合是否正确,检查设备是否被正确创建
- IP解析失败
- 现象:regionId/ipAddress为空
- 处理:检查网络环境与IP解析服务可用性
- 入网凭证缺失
- 现象:certification_code为空
- 处理:确认认证流程已完成,检查异步入网记录是否成功入库
- 版本兼容问题
- 现象:心跳接口行为异常
- 处理:检查api-version头是否正确设置
章节来源
结论
设备认证API以“MAC+CPU”为核心匹配条件,提供新旧双通道认证能力,并通过入网凭证实现后续鉴权。整体设计具备良好的扩展性与容错能力,建议在集成时严格遵循参数格式与版本控制要求,确保认证流程稳定可靠。
附录
API清单与说明
- 新版设备激活认证
- 方法:POST /task/newNetworkAccessCertification
- 请求体:AppDeviceCertificationReqVO
- 响应:包含certification_code
- 旧版设备激活认证
- 方法:POST /task/networkAccessCertification/
{deviceMac} - 请求体:无(仅路径参数MAC)
- 响应:包含certification_code
- 方法:POST /task/networkAccessCertification/
- 设备查询RPC
- GET /device/get-by-mac
- GET /device/get-by-mac-by-cpu
- GET /device/get-by-id
- GET /device/get-count-by-channelIds
- GET /device/get-count-by-modelIds
- GET /device/batch-get-count-by-modelIds
- GET /device/batch-get-count-by-channelIds
章节来源