关于REST中做简单验证的思考

4 篇文章 0 订阅
2 篇文章 0 订阅

之前有位朋友留言问我是否对REST的验证有过研究,当时,我之前是用JBOSS来做基本的验证管理,每次请求都要带上验证信息。

对于WEB,这样做似乎有点不太优雅。

传统的http连接下,简单的web验证,是靠Session来做的。而Session其实是代表状态的,客户端的状态。REST是无状态的,服务资源无状态。

但是在访问的时候,由于Session的存在,就把客户的状态跟资源访问结合到一起了,有状态&无状态 == 有状态。

所以,Session其实是跟REST背道而驰的。

而关于REST的安全问题,全世界都在讨论。高级验证似乎已经有比较成熟的方法了,https+cache或者OAUTH。

而简单验证,怎么办呢?

个人的想法是,既然Session是有状态的,在解决安全问题中,其根本用途是保存用户信息,那么,我们是不是可以用如下的方法来解决呢?

1. 一个用户连接时,根据该用户唯一标示字段(例如数据库主键)加上当前时间,生成one-way hash,写入一个内存cache,并返回该token;如果cache中已存在该token,拒绝该链接。(每个token基本上都是唯一的,不可能产生两个一样的。如果是一样,必然是伪造的)

2. 页面在传递的时候同时传递该token,把该token带入URL或者请求中去;

3. 对于需要验证的资源,后面REST服务在接收到Request后,判断该token(读cache)。如果没有token或不对,返回登陆页面。


如果是分布式,那么使用分布式cache就OK了。


这是暂时的想法,后面如果有时间再去细想。如果写个POC出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值