問題的出現(xiàn)
當(dāng)我們設(shè)計(jì)基于Rest 的Service時(shí),需要對客戶端的訪問進(jìn)行權(quán)限控制咐蚯,并不是所有的Client都能訪問我Service的資源的童漩。那么就產(chǎn)生了以下需求:
--經(jīng)過授權(quán)的Client可以訪問我Service
--Client 和Service之間進(jìn)行通信時(shí)數(shù)據(jù)該如何加密
情景再現(xiàn)
這是來自StackOverFlow網(wǎng)友的一個(gè)例子:
比如醫(yī)院需要一個(gè)基于REST APIs / web services 醫(yī)藥病例管理系統(tǒng),那么:
- 醫(yī)生可以Post和Get患者的病歷
- 護(hù)士可以Update醫(yī)藥信息
- 患者可以Get他們自己的病歷
- 一般人不能訪問醫(yī)院的醫(yī)藥庫修改數(shù)據(jù)
可以看出春锋,不同的角色有著不同的訪問權(quán)限矫膨,此時(shí)就需要我們對不同的權(quán)限進(jìn)行授權(quán)和管理
如何管理
--Http +SSL
--API是統(tǒng)一的,登錄狀態(tài)維護(hù)可以使用OAuth
參考資源:
Best Practices for securing a REST API / web service
Understanding REST: Verbs, error codes, and authentication
怎樣保證到服務(wù)器的 REST 請求是由自己的 APP 發(fā)起的?