前言
在app開放接口api的設計中,避免不了的就是安全性問題,由於大多數接口涉及到用戶的我的信息以及一些敏感的數據,因此對這些接口須要進行身份的認證,html
那麼這就須要用戶提供一些信息,好比用戶名密碼等,可是爲了安全起見讓用戶暴露的明文密碼次數越少越好,咱們通常在web項目中,大多數採用保存的session中,python
而後在存一份到cookie中,來保持用戶的回話有效性。可是在app提供的開放接口中,後端服務器在用戶登陸後如何去驗證和維護用戶的登錄有效性呢?web
回到目錄後端
設計
對於敏感的api接口,需使用https協議api
https是在http超文本傳輸協議加入SSL層,它在網絡間通訊是加密的,因此須要加密證書。https協議須要ca證書,通常須要交費。緩存
回到目錄安全
一、原理
用戶登陸後向服務器提供用戶認證信息(如帳戶和密碼),服務器認證完後給客戶端返回一個PID令牌,用戶再次獲取信息時,服務器
帶上此令牌,若是令牌正取,則返回數據。對於獲取Token信息後,訪問用戶相關接口,客戶端請求的url須要帶上以下參數:cookie
|
而後將全部用戶請求的參數(包括timestamp,pid),而後更具MD5加密(能夠加點鹽),生成動態的url。
而後登錄後每次調用用戶信息時,帶上timestamp,pid參數。
加上時間戳和pid後的URL:http://127.0.0.1:8888/index?pid=d073dae99f70b0cda2fa1ef8d25c527f|1475117419.5424652|0
就變成一個動態的並且相對的具備高安全的,保證數據安全的訪問。
二、具體實現
1. api請求客戶端想服務器端一次發送用用戶認證信息(用戶名和密碼),服務器端請求到改請求後,驗證用戶信息是否正確。
若是正確:則返回一個惟一不重複的字符串,而後在Redis(任意緩存服務器)中維護這個用戶信息關係,以便其餘api對pid的校驗。
若是錯誤:則返回錯誤碼。
2.服務器設計一個url請求攔截規則
|
3.按期處理保存下來的動態請求URL
代碼實現
服務端規定的規則
|
客戶端按規則生成符合的
|
測試效果代碼
|
這是比較粗超的API認證機制,能夠初步瞭解。