背景簡述laravel
本文意在搭建一個通用的應用後端服務環境, 帳號驗證是應用的基礎環境之一. git
OAuth2可提供安全的驗證環境, 以access_token做爲訪問安全資源的令牌, 做爲單一的應用端與後端的交互方式, 採用password類型會更簡潔一點, 如果要實現相似Google, Facebook或新浪微博的第三方登陸平臺模式, 請選用Authorisation code grant. github
OAuth類型參考說明: https://github.com/lucadegasperi/oauth2-server-laravel/wiki/Choosing-a-Grant後端
本文選用的OAuth2受權方式爲: password, 需搭配 refresh_token使用, 在access_token過時後, 使用refresh_token申請新的access_token, 無需從新登陸, 達到應用端登陸一次,一直有效的效果. 安全
若refresh_token失效, 則需用戶從新登陸, 這對對應着用戶長期沒有使用應用, 需讓用戶從新登陸受權的場景. 通常時間能夠設成一個月, 根據實際需求設置.app
環境:測試
Laravel 5.1 安裝請參考博文: http://my.oschina.net/u/2485194/blog/518803 spa
專爲Laravel定製的OAuth2實現 oauth2-server-laravel : https://github.com/lucadegasperi/oauth2-server-laravel/wiki .net
oauth2-server-laravel PasswordGrant安裝及配置請參考官網文檔, 已經很清楚了:code
安裝配置: https://github.com/lucadegasperi/oauth2-server-laravel/wiki/Laravel-5-Installation
本文重點:
官網只說明瞭如何配置以及添加使用代碼, 但未說明如何調用, 這可能會攔住很多菜鳥.
ps: 這裏糾正一下官網文檔的一個"手誤":
'\App\PasswordVerifier@verify' 改爲 '\App\PasswordGrantVerifier@verify' 與後面的類定義一致
測試數據準備
測試前,須要有一個AppID和AppSecret, 和第三方平臺同樣, 這是爲了能識別是某一個應用的訪問
操做以下: 在oauth_clients表中加入一條app信息, 如:
模擬HTTP請求
這裏模擬一下HTTP請求的過程, 直接貼圖, 你們懂的
受權獲取access_token, 注意參數中的 client_id及client_secret需與oath_clients裏的一致.
access_token過時後, 用refresh_token進行更新, 返回新的 access_token 及 refresh_token