问题的出现
当我们设计基于Rest 的Service时,需要对客户端的访问进行权限控制,并不是所有的Client都能访问我Service的资源的。那么就产生了以下需求:
--经过授权的Client可以访问我Service
--Client 和Service之间进行通信时数据该如何加密
情景再现
这是来自StackOverFlow网友的一个例子:
比如医院需要一个基于REST APIs / web services 医药病例管理系统,那么:
- 医生可以Post和Get患者的病历
- 护士可以Update医药信息
- 患者可以Get他们自己的病历
- 一般人不能访问医院的医药库修改数据
可以看出,不同的角色有着不同的访问权限,此时就需要我们对不同的权限进行授权和管理
如何管理
--Http +SSL
--API是统一的,登录状态维护可以使用OAuth
参考资源:
Best Practices for securing a REST API / web service
Understanding REST: Verbs, error codes, and authentication
怎样保证到服务器的 REST 请求是由自己的 APP 发起的?