API认证方式

来源:互联网 发布:最火淘宝店铺 编辑:程序博客网 时间:2024/06/05 10:13

前言

APP和后端进行交互的时候,我们都是需要考虑数据的安全性。APP想后端发起一个请求(http/https),如果别人知道这个请求的url,那如果我直接放在浏览器上请求,能不能获取到数据?

在这里我们就需要对api进行一个认证。不是什么地方的请求的都是能请求到数据的,我们只让符合我们规则的请求获取到相应的数据。

当然这种认证方式有很多,有非常简单的,也有非常复杂的。这里介绍一种相对简单并且轻量的API认证方式。

认证方式

服务端生成 App-KeyApp-Secret,并给到前端。

前端每次发起请求都需要在请求头中带以下四个HTTP Request Header,具体如下:

名称 类型 说明 App-Key string 应用密钥 App-Nonce string 随机数:位数前端自定义 App-Timestamp string 时间戳 App-Signature string 数据签名

App-Signature生成方式:SHA1(App-Secret + App-Nonce + App-Timestamp);

即将App-SecretApp-NonceApp-Timestamp这三个字符串按先后顺序(也可以是其他顺序)进行SHA1摘要算法的加密。

服务端从请求头中获取相应的数据:

  1. 验证App-Key的准确性。
  2. 根据规则也生成一个Signature,用后端生成的和前端传输过来的相比较,如果一致就表示认证通过。

在传输过程中,这些数据都是能被外界获取的,但是App-Secret是没有在传输过程当中的。

总结

这种方式只能说在某种程度上防止了API被乱调用,如果抓包或者稍微懂点技术的人,还是很容易攻击的。但是如果我加上https,再加上双向认证,这样就很安全了。

以上只是一种简单的方案,如果你有其他更简单或者更安全的方案,欢迎指教。

原创粉丝点击