博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:一个Restful Api的访问控制方法(简单版)
阅读量:5167 次
发布时间:2019-06-13

本文共 971 字,大约阅读时间需要 3 分钟。

最近在做的两个项目,都需要使用Restful Api,接口的安全性和访问控制便成为一个问题,看了一下别家的API访问控制办法。

新浪的API访问控制使用的是AccessToken,有两种方式来使用该AccessToken:

1、API请求 URL 的后面加上一个AccessToken

2、Http头里面加一个字段AccessToken=xxx

这种AccessToken是写死在程序里面的,在每次请求的时候附带上,对于这种AccessToekn新浪那边有过期时间,过期之后就无法再使用了。

很明显这种方式是不安全的,一旦别人获取到这个AccessToekn 就可以伪装身份使用该API,这个访问控制就形同虚设了。但是新浪也知道这一点,所以利用这种方式使用的接口都是较为基础的接口,高级一点的接口需要使用Oauth 2.0进行二次认证的访问控制。

在我的项目中,没有像新浪微博账号这种的用户管理系统,做OAtuth认证不太合适,通过参考网上大神的资料,大致想了下面这种访问控制的办法。

1、为每个应用颁发一个账号(user)和密码(password),相当于(公钥和私钥)。

2、服务器后台存储该账号和密码(密文存储 MD5加密)

3、应用端在通过HTTP请求该接口的时候,需要在HTTP HEADER 附带下面几个字段

  • 时间date=unix时间戳
  • 签名sign=sign

该sign的生成算法是这样的

String sign = HTTPMETHOD(GET/POST)+ api_uri(API的访问URI)+date(即上面的UNIX时间戳)+length(发送body的数据长度)+password(后台颁发的密码)

sign = MD5(sign)

sign = user+":"+sign

4、后台服务器在接收到请求后

1、比对HTTP头中的时间戳,比对服务器时间,如果超过某个阈值,则拒绝访问,同时返回请校准你的应用时间。

2、如果没有超过时间阈值,则从sign中取出user然后在数据库中查找对应的password,然后同样根据上面的sign生成算法,来生成sign进行身份认证,认证成功则执行API,失败则返回认证失败。

转载于:https://www.cnblogs.com/1995hxt/p/6091024.html

你可能感兴趣的文章
数据结构----prim算法 最小生成树
查看>>
python 数据类型_字典和集合
查看>>
算法笔记_170:历届试题 分糖果(Java)
查看>>
一种并行随机梯度下降法
查看>>
文件方式实现完整的英文词频统计实例
查看>>
ListControl的用法
查看>>
单个SWF文件loading加载详解(转)
查看>>
Python3 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下
查看>>
SQLServer中的CTE通用表表达式
查看>>
ural 1133. Fibonacci Sequence
查看>>
压缩图片
查看>>
SDK登录cognos
查看>>
内存知识整理。
查看>>
redis—Spring中redis缓存的简单使用
查看>>
[VC]关于ocx打包为cab的使用
查看>>
面向对象高级编程(1)-使用__slots__
查看>>
软件测试-HW03
查看>>
linux第1天 fork exec 守护进程
查看>>
Ajax原理学习
查看>>
最新最潮的24段魔尺立体几何玩法(2016版)
查看>>