使用總結:Laravel 的 passport 密碼授權模式完成 API 認證

gangpula發表於2018-01-23

laravel的passport章節,我看文件沒看懂,因為laravel文件只有安裝步驟,沒有解釋語句,而我當時還停留在古老的mvc世界裡,完全不明白來龍去脈。然後搜了jwt和passport相關資料

部落格:Laravel 使用 JWT 實現 API Auth, 打造使用者授權介面
https://www.cnblogs.com/binyue/p/4812798.h...
http://laravelacademy.org/post/3640.html
部落格:Laravel5.3 Passport API 認證 密碼模式使用

搗鼓了一下,下面是個人使用總結。

以前mvc模式裡是用cookie+session,$session['user_id']來完成使用者登入認證的,
現在流行前後端完全分離,後端程式只提供api,前端呼叫api獲取資料自己去渲染頁面。

而這種前後端分離專案往往是通過jwt,即storage或cookie+token的方式,去完成api認證。

jwt的api使用者認證流程大致是:

  • 客戶端(如前後端分離模式下的前端專案,或者僅僅是個postman)提供使用者帳號密碼請求服務端(前後端分離模式下的後端api應用,如laravel專案)
  • 通過帳號密碼驗證,返回給客戶端token(該token包含有使用者資訊)
  • 客戶端接受,並儲存token在cookie或者storage裡,服務端不需要儲存
  • 在隨後的介面請求中,客戶端都在http請求頭中攜帶上token.
  • 伺服器再驗證這個token,通過就讓客戶端得到訪問的介面的資源,不通過那就報錯。這裡一般用中介軟體實現,正好執行時間在控制器也就是介面前面

而laravel中用passport,去完成api認證,
我的理解是,passport方式的api認證流程上是類似jwt方式的,只不過token改用了oauth2的token令牌,不用jwt那套token生成方法,
換句話說只是得到了一個更安全的token。

passport有幾種模式,對應著oauth2的那幾種模式,
在前端後端分離專案中,是自己的前端應用去取自己的後端api應用的資源,最合適的就是密碼模式,原因見文件:

OAuth2密碼授權機制可以讓自有應用基於郵箱地址(使用者名稱)和密碼獲取訪問令牌,自有應用比如你的手機客戶端。這樣就允許自由應用無需跳轉步驟即可通過整個OAuth2的授權過程。

把oauth2用於這種前後端分離專案的api認證,本來我覺得兩者是風馬牛不相及的。
想了下,兩者類似。
oauth2是“客戶端”這個角色,從“服務端”這個角色比如騰訊,取使用者qq帳號資源,
而前後端分離專案裡,是前端專案(“客戶端”角色)從後端專案(“服務端”角色)取資源。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章