詳解laravel passport OAuth2.0的4種模式
參考:
1... 熟悉的場(chǎng)景
某個(gè)網(wǎng)站,某用戶(hù)未注冊(cè),注冊(cè)時(shí)提示可微信賬號(hào)登錄(github, google都有類(lèi)似
某網(wǎng)站是第三方(客戶(hù)端), 認(rèn)證服務(wù)器和資源服務(wù)器都在微信,資源是指微信的用戶(hù)名,頭像等
網(wǎng)站目的是獲取改用戶(hù)微信的賬戶(hù),頭像等,方便快速注冊(cè). 前提需要用戶(hù)授權(quán)同意.
laravel用passport搭建OAuth2認(rèn)證服務(wù)
相當(dāng)于基于laravel搭建OAuth2 Server.
資源擁有者: laravel server OAuth2 認(rèn)證服務(wù)器: laravel server 用戶(hù): 在laravel server注冊(cè)過(guò)的用戶(hù) 第三方: 通過(guò)api訪(fǎng)問(wèn)的Web端,目的就是要拿到access_token
準(zhǔn)備
見(jiàn)文檔: https://xueyuanjun.com/post/1...
4種模式
記得用 artisan passport:client
添加對(duì)應(yīng)用戶(hù)
對(duì)應(yīng)不同應(yīng)用場(chǎng)景:
授權(quán)碼模式(authorization_code)
實(shí)現(xiàn)類(lèi)似微信授權(quán)登錄的服務(wù).這個(gè)當(dāng)然是最強(qiáng)大也最復(fù)雜的.
用戶(hù)點(diǎn)擊客戶(hù)端微信登錄按鈕,url跳轉(zhuǎn)到微信的登錄頁(yè)面, (比如微信登錄)
用戶(hù)登錄微信, 微信提示是否允許授權(quán).
實(shí)際是訪(fǎng)問(wèn)認(rèn)證服務(wù)器的 /oauth/authorize
.
允許,redirect到 客戶(hù)端指定的redirect_uri
重定向uri由第三方在步驟1里指定.
后端無(wú)法控制具體重定向的url實(shí)現(xiàn),(每個(gè)第三方都不一樣)只能通過(guò)url添加返回參數(shù)code.
第三方服務(wù)的后端處理該重定向,再次發(fā)起訪(fǎng)問(wèn) /oauth/token
,拿到真正的token
隱式授權(quán)
和code授權(quán)的唯一區(qū)別是返回的redirect_uri沒(méi)有code參數(shù):
http://dev.blog.com:8000/oauth/authorize?client_id=6&response_type=code&scope=&state=SENPYyXJvT0fl4Rnz0Ag&redirect_uri=http%3A%2F%2Fdev.blog.com%3A8000%2Fauth%2Fcallback
密碼授權(quán)模式(password_credentials)
適用移動(dòng)端.
無(wú)認(rèn)證過(guò)程,客戶(hù)端登錄時(shí)直接帶上資源服務(wù)器注冊(cè)過(guò)的賬號(hào)密碼,就像使用同一個(gè)賬戶(hù)系統(tǒng).
客戶(hù)端模式(client_credentials)
類(lèi)似微信等開(kāi)放平臺(tái)的認(rèn)證方式.開(kāi)發(fā)者注冊(cè)后拿到clientid, client_secret,然后認(rèn)證去拿token直接用
比密碼授權(quán)更簡(jiǎn)單,無(wú)需用戶(hù)名密碼,直接用client_id + client_secret.
javascript api
適用spa,不用也行..畢竟還要提交表單登錄.
省掉js api 帶上 Bearer Token +xxx
的認(rèn)證,直接放到cookie里.
需添加middleware: \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
這個(gè) Passport 中間件將會(huì)附加 laravel_token Cookie 到輸出響應(yīng),這個(gè) Cookie 包含加密過(guò)的JWT,Passport 將使用這個(gè) JWT 來(lái)認(rèn)證來(lái)自 JavaScript 應(yīng)用的 API 請(qǐng)求,現(xiàn)在,你可以發(fā)送請(qǐng)求到應(yīng)用的 API,而不必顯示傳遞訪(fǎng)問(wèn)令牌.
其他用法
1 私人令牌 授權(quán)方式在用戶(hù)測(cè)試、體驗(yàn)平臺(tái)提供的認(rèn)證 API 接口時(shí)非常方便 2 scope作用域 更細(xì)顆粒度控制api權(quán)限
總結(jié)
以上所述是小編給大家介紹的laravel passport OAuth2.0的4種模式,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Yii2基于Ajax自動(dòng)獲取表單數(shù)據(jù)的方法
這篇文章主要介紹了Yii2基于Ajax自動(dòng)獲取表單數(shù)據(jù)的方法,涉及Yii結(jié)合ajax調(diào)用鼠標(biāo)事件動(dòng)態(tài)查詢(xún)表單的相關(guān)技巧,需要的朋友可以參考下2016-08-08PHP連接和操作MySQL數(shù)據(jù)庫(kù)基礎(chǔ)教程
這篇文章主要介紹了PHP連接和操作MySQL數(shù)據(jù)庫(kù)基礎(chǔ)教程,本文講解了mysql擴(kuò)展、連接數(shù)據(jù)庫(kù)、與數(shù)據(jù)庫(kù)交互等內(nèi)容,需要的朋友可以參考下2014-09-09Laravel使用memcached緩存對(duì)文章增刪改查進(jìn)行優(yōu)化的方法
這篇文章主要介紹了Laravel使用memcached緩存對(duì)文章增刪改查進(jìn)行優(yōu)化的方法,結(jié)合實(shí)例形式分析了Laravel框架中使用memcached緩存實(shí)現(xiàn)針對(duì)增刪改查等操作的優(yōu)化功能,需要的朋友可以參考下2016-10-10讓whoops幫我們告別ThinkPHP6的異常頁(yè)面
本文給大家分享的是使用whoops接管thinkphp6的異常處理,從而使我們得到新的世界,希望大家能夠喜歡2020-03-03Yii2框架中使用PHPExcel導(dǎo)出Excel文件的示例
本篇文章主要介紹了Yii2框架中使用PHPExcel導(dǎo)出Excel文件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Ajax PHP JavaScript MySQL實(shí)現(xiàn)簡(jiǎn)易無(wú)刷新在線(xiàn)聊天室
這篇文章主要為大家詳細(xì)介紹了Ajax PHP JavaScript MySQL實(shí)現(xiàn)簡(jiǎn)易無(wú)刷新在線(xiàn)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08