基于口令和证书认证(TrueLicense)的接口调用工具库的封装设计 By 嗡汤圆

本文介绍了基于TrueLicense的接口调用工具库设计,通过口令和证书认证确保安全性。用户只需引入工具库,隐藏接口细节,证书验证在调用之初进行,支持额外认证如MAC地址绑定,服务端可实时变更认证策略。同时,文章讨论了本地代码的安全性措施。
摘要由CSDN通过智能技术生成

安全性

  1. 用户名、口令认证
  2. 用户名、口令泄露,没有证书也无法完成认证
  3. 用户名、口令与证书绑定,用户、证书与硬件MAC地址绑定。
  4. 用户名、口令、证书均泄露后,若硬件MAC地址不在认证范围,则仍无法使用服务。
  5. 用户名、口令、证书泄露,盗用者通过解密获取MAC地址并伪造后,服务端仍可以通过修改配置实时变更认证MAC地址,甚至使证书失效。

需求&优点

需求

  1. 接口使用者无需知道接口地址和传输实现,仅需知道传入参数和传出传出数据的结构。
  2. 接口使用者必须拥有合法的用户名、口令以及证书。
  3. 接口使用者的项目中必须包含颁发给该使用者的证书,才能正常使用接口。
  4. 接口使用者通过口令和证书认证后获取到Token,然后通过Token调用其它功能接口。

优点

  1. 对接口使用者隐藏了接口的真实地址和实际调用传参规范。
  2. 使用证书认证,即使用户名和口令泄露,无证书的用户仍然无法使用接口功能。
  3. 证书可以限制接口使用者的使用权限有效时间。一旦证书过期,使用者将无法使用接口。
  4. 证书可以包含加密的额外认证信息,比如设备MAC地址认证信息等,这样即使证书和口令一起泄露,使用者仍然无法使用未经认证的机器来调用接口。服务端也可及时修改配置使泄露的证书失效。

使用者用法说明

对于使用者的个人项目而言,仅需引入接口调用工具库(假设为:dev-tool.jar)后即可使用。假设工具库中约定了如下元素:
1. 接口调用类HttpsClient。
2. 接口地址字典Endpoints。
2. 接口返回通用结构RespResult。
3. 错误码字典ResultState。
那么,用户仅需知道接口的名称即可通过类似如下的代码获取接口信息:

HashMap<String, Object>paramMap = new HashMap<String, Object>();
paramMap.put("paramName", "paramVale");
try {
    RespResult res = HttpsClient.invoke(Endpoints.get("interfaceName"), paramMap);
    if(res.statusId == ResultState.SUCCESS)
        Object actualData = res.getData();
    else 
        logger.error("interface return error:"+res.errMsg);
} catch (Exception e){
    logger.error("httpsclient error:"+e)
}

整个调用过程中的接口地址、调用实现、调用传参的具体细节用户可以一概不管。

接口工具库设计

概述

接口工具是和接口服务对应的,因此又写代码应该与接口服务公用,比如接口返回的数据结构RespResult 以及错误字典ResultState 。其次,接口工具库不应该对外暴露太多方法,比如此处仅需暴露用户会使用到的invoke(String url, HashMap<String, Object> param) 方法即可。

证书验证

我们使用trueLicense来实现证书的验

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值