Laravel 5.1 + OAuth2 PasswordGrant(密碼受權模式)

背景簡述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

使用: https://github.com/lucadegasperi/oauth2-server-laravel/wiki/Implementing-an-Authorization-Server-with-the-Password-Grant

本文重點:

官網只說明瞭如何配置以及添加使用代碼, 但未說明如何調用, 這可能會攔住很多菜鳥.

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

相關文章
相關標籤/搜索