美文网首页Api设计
API接口安全性验证方案设计

API接口安全性验证方案设计

作者: FX_SKY | 来源:发表于2017-06-01 17:46 被阅读140次

Http协议是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的。但是对我们的应用而言,它是需要有状态管理的,以便服务端能够准确的知道Http请求是哪个用户发起的,从而判断他是否有权限继续这个请求。这个过程就是常说的会话管理。

本文总结了3种常见的实现web应用会话管理的方式:

  1. 基于session
  2. 基于公钥/私钥
  3. 基于token

一、基于Session

Session就不用多说了,至于分布式Session实现方案 Java中通过Spring Session可以很方便的实现分布式Session管理。

二、基于公钥/私钥

事先给客户端分配一个app_id和app_secret,客户端调用接口的时候将业务参数按字母排序,首尾加app_secret再RSA2(推荐使用SHA256,MD5和SHA1已被攻破)生成前面sign,然后再将业务参数和sign发送给服务器,服务器端用相同的方式生成sign,如果sign相等则路由到业务方法,否则返回鉴权失败。

示例代码如下:

    private static final String UTF_8 = "UTF-8";

    public static String encode(Map<String, String> param, String secret, boolean encode) {
        Set<String> keysSet = param.keySet();
        Object[] keys = keysSet.toArray();
        Arrays.sort(keys);  //按参数名字典顺序排序

        StringBuilder sb = new StringBuilder(1024);
        for(int i=0; i<keys.length; i++) {
            if(i!=0){
                sb.append("&");
            }
            sb.append(keys[i]).append("=");
            String value = param.get(keys[i]);
            String valueString = "";
            if (null != value) {
                valueString = value;
            }
            if (encode) {
                sb.append(urlEncode(valueString));
            } else {
                sb.append(valueString);
            }
        }
        sb.append(secret);
        return DigestUtils.sha256Hex(sb.toString());
    }

    private static String urlEncode(String str) {
        try {
            return URLEncoder.encode(str, UTF_8);
        } catch (UnsupportedEncodingException e) {
            throw new IllegalArgumentException("unsupported encoding:"+UTF_8, e);
        }
    }

三、基于token

服务端动态生成token,客户端调用的时候需要回传token,参考 微信公共平台 access_token

3.1 JWT

JWT

参考资料

蚂蚁金服开发平台 签名与验签


微信公共平台 access_token


通过Spring Session实现新一代的Session管理

相关文章

  • API接口安全性验证方案设计

    Http协议是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的。但是对...

  • API接口安全性设计

    API接口安全性设计 接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据...

  • 邮件发送注册验证码

    如何实现网站注册验证码邮件自动发送功能?如何接入邮件API接口?免费使用 网站通过接入邮件验证码接口(邮件api接...

  • WebApi安全性 使用TOKEN+签名验证

    首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中...

  • 接口安全方法

    服务端对外开放API接口,尤其对移动应用开放接口的时候,更需要关注接口安全性的问题,要确保应用APP与API之间的...

  • 浅谈接口安全那些事

    服务端对外开放API接口,尤其对移动应用开放接口的时候,更需要关注接口安全性的问题,要确保应用APP与API之间的...

  • 开放接口API安全性

    服务端对外开放API接口,尤其对移动应用开放接口的时候,更需要关注接口安全性的问题,要确保应用APP与API之间的...

  • 答题吧API验证码识别接口

    答题吧API验证码识别接口介绍: 答题吧验证码识别接口API是答题吧开放给易语言软件开发者的程序接口,开发者可以通...

  • 分析RESTful API安全性及如何采取保护措施

    本文中讨论了API安全性和采用安全措施的重要性,如身份验证,API密钥,访问控制和输入验证。 API设计的第一步是...

  • app接口设计之安全性

    1. 什么是接口 2. 接口的作用 3. API接口保障安全性原则 4. 接口安全需求 5. signature签...

网友评论

    本文标题:API接口安全性验证方案设计

    本文链接:https://www.haomeiwen.com/subject/etvefxtx.html