成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel Passport里的授權(quán)類型介紹

RobinTang / 419人閱讀

摘要:模糊授權(quán),跟上面的認(rèn)證碼授權(quán)類似,不同的是,我們的資源服務(wù)器,返回的直接就是準(zhǔn)入令牌,而不是認(rèn)證碼。

本文來自pilishen.com----原文鏈接; 歡迎來和pilishen一起學(xué)習(xí)php&Laravel;學(xué)習(xí)群:109256050

OAuth2是一個(gè)安全框架,控制著程序受保護(hù)部分的準(zhǔn)入,主要是控制不同的客戶端如何來調(diào)取API,保證它們在請求相應(yīng)資源的時(shí)候有相應(yīng)的權(quán)限。

Laravel Passport是一個(gè)強(qiáng)大的Oauth2服務(wù)實(shí)現(xiàn),使用Passport往往已經(jīng)足以應(yīng)對我們?nèi)粘PI開發(fā)中的各種需求,甚至說,大部分時(shí)候,我們只是用到了Passport的部分功能而已。也正因?yàn)槠鋸?qiáng)大,所以理解和使用起來也有一定難度,而這其中,理解和熟悉oauth2相關(guān)的各種授權(quán)類型是關(guān)鍵,授權(quán)類型理解了,Passport也就沒什么難的了。話不多說,一起來看看不同的授權(quán)類型都是怎么回事吧。

概念理解: 1. 客戶端(Client)

指的是調(diào)取你程序API的那個(gè)應(yīng)用,或者說終端,在Passport里創(chuàng)建客戶端可以通過artisan命令來進(jìn)行

php artisan passport:client

每一個(gè)客戶端(client)都要有一個(gè)key, name, secret, redirect URI, user(程序創(chuàng)建者/所有者)

2. 資源擁有者(Resource Owner)

這個(gè)指的是客戶端請求的那個(gè)API,其背后所對應(yīng)資源(或者說數(shù)據(jù))的所有者(user)

3. 資源服務(wù)器(Resource Server)

這個(gè)也就是我們的API,可以是不需要讀取權(quán)限的公共數(shù)據(jù),也可以是需要驗(yàn)證權(quán)限的私有數(shù)據(jù)。公共數(shù)據(jù),或者說公開節(jié)點(diǎn)(endpoints),舉個(gè)例子就是比如說搜索所有的tweets消息,或者說搜索微信文章,這不需要特別的權(quán)限,誰都可以搜。另一方面,假設(shè)說以某個(gè)用戶的名義去發(fā)布(post)一個(gè)推特消息,發(fā)一個(gè)朋友圈,就需要來自這個(gè)用戶的權(quán)限認(rèn)證了。

4. 權(quán)限范圍(Scope)

指的是獲取特定數(shù)據(jù),或者進(jìn)行特定操作的權(quán)限(permission),可以在AuthServiceProvider使用Passport::tokensCan()方法來具體定義權(quán)限(scope)

Passport::tokensCan([
    "read-tweets" => "Read all tweets",
    "post-tweet" => "Post new tweet",
]);
5. 準(zhǔn)入令牌(Access token)

當(dāng)客戶端程序想要取得某些受保護(hù)的數(shù)據(jù)時(shí),就要傳遞一個(gè)準(zhǔn)入令牌(Access token),以此來驗(yàn)證當(dāng)前請求(request)。

授權(quán)類型(Grant Type)

授權(quán)(Grant),說白了就是從資源服務(wù)器獲取準(zhǔn)入令牌(Access token)的方式,也可以更通俗地說成頒發(fā)令牌(token)的方式。一共有五種授權(quán)方式,其中四種是用來獲取令牌(Access token)的,另一個(gè)是用來刷新、或者說重新創(chuàng)建一個(gè)已有令牌(token)的。

1. 認(rèn)證碼授權(quán)(Authorization Code grant)

這是最常見的一種類型,說白了就是第三方登陸,也即當(dāng)?shù)谌降某绦蛳胫@取我們這邊的受保護(hù)信息,這個(gè)第三方程序必須得獲得我們這邊用戶的認(rèn)證授權(quán)。更直白的,當(dāng)?shù)谌降目蛻舳讼胫{(diào)用我們這邊的用戶信息,來登陸他們的網(wǎng)站,那么它得獲得這個(gè)用戶的認(rèn)證授權(quán)。

大部分的流行API都會實(shí)現(xiàn)這一種授權(quán)類型。比如說Facebook,當(dāng)用戶想著登陸我們的網(wǎng)站,我們可以先把用戶重定向到Facebook,讓他先登陸Facebook,然后Facebook會詢問這個(gè)用戶,是否同意我們的這個(gè)網(wǎng)站獲取他在Facebook網(wǎng)站上的用戶信息呢?用戶點(diǎn)了授權(quán)以后,就又會被重定向回我們的網(wǎng)站,同時(shí)呢會附上一條認(rèn)證碼(Authorization Code),然后呢我們的網(wǎng)站要利用這個(gè)認(rèn)證碼(Authorization Code),再去向Facebook換取準(zhǔn)入令牌(access token),有了準(zhǔn)入令牌以后,我們才可以進(jìn)一步獲取該用戶的詳細(xì)信息。

這整個(gè)過程,又通常被叫做“三條腿的Oauth”(3-Legged OAuth),當(dāng)然了,還有“兩條腿的Oauth”(2-Legged OAuth),也就是接下來的這一種。

2. 模糊授權(quán)(Implicit Grant)

Implicit,是模糊、含蓄、不具體指明的意思,這里呢譯作模糊。模糊授權(quán)(Implicit Grant),跟上面的認(rèn)證碼授權(quán)(Authorization Code)類似,不同的是,我們的資源服務(wù)器,返回的直接就是準(zhǔn)入令牌(access token),而不是認(rèn)證碼(authorization code)。因此呢,就不是需要三步才能獲得token。“三條腿的Oauth”被證明是更好的,可能你會納悶,既然更好,還要這個(gè)“兩條腿”的模糊授權(quán)(Implicit Grant)干啥?

認(rèn)證碼(authorization code)授權(quán),需要的是一個(gè)服務(wù)器向另一個(gè)服務(wù)器(Facebook)發(fā)起請求,獲取認(rèn)證碼,然后交換準(zhǔn)入令牌。但如果我們面前是一個(gè)JS的APP,它只是一個(gè)瀏覽器端,那么就很難獲取了認(rèn)證碼再交換準(zhǔn)入token了,這種情況下,我們就需要用到這種模糊授權(quán)(Implicit Grant)

3. 用戶密碼授權(quán)(Resource Owner Password Credentials Grant)
Resource Owner == User

這種類型適合于我們信任的客戶端,比如我們自己的手機(jī)APP來訪問網(wǎng)站數(shù)據(jù),這個(gè)時(shí)候,客戶端直接使用用戶的登陸密碼信息請求資源服務(wù)器,服務(wù)器直接返回準(zhǔn)入令牌(access token)。

4. 客戶端資質(zhì)授權(quán)(Client Credentials Grant)

這個(gè)適合于訪問API的這個(gè)客戶端,本身就是相應(yīng)數(shù)據(jù)的所有者的時(shí)候,這期間不涉及到用戶的互動,說白了就是純粹的機(jī)器與機(jī)器之間的溝通。比如說一個(gè)App想著向用戶顯示一個(gè)對話框,或者儲存一些跟這個(gè)App相關(guān)的數(shù)據(jù)到我們的資源服務(wù)器上。

5. 令牌刷新授權(quán)(Refresh token grant)

當(dāng)服務(wù)器生成一個(gè)令牌(token)的時(shí)候,同時(shí)也會設(shè)置一個(gè)token的有效期,或者說失效期。令牌刷新授權(quán)(Refresh token grant)就是當(dāng)我們的token過期了,我們得需要將其刷新一下,重新生成一個(gè)。這種情況下,驗(yàn)證服務(wù)器會在生成準(zhǔn)入token的同時(shí)發(fā)送一個(gè)refresh token(刷新令牌),好后期用來生成一個(gè)新的token。需要注意的是,這個(gè)流程并不適合于模糊授權(quán)(Implicit Grant)。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28447.html

相關(guān)文章

  • Laravel Passport API 認(rèn)證使用小結(jié)

    摘要:看到社區(qū)常有人問用于密碼驗(yàn)證方式來獲取的問題,剛好我最近一個(gè)項(xiàng)目使用,也是使用的密碼授權(quán)來做驗(yàn)證,對于如何做登錄登出,以及多賬號系統(tǒng)的認(rèn)證等常用場景做一下簡單的使用小總結(jié)。 看到Laravel-China社區(qū)常有人問Laravel Passport用于密碼驗(yàn)證方式來獲取Token的問題,剛好我最近一個(gè)API項(xiàng)目使用Laravel Dingo Api+Passport,也是使用Oauth...

    Panda 評論0 收藏0
  • Laravel 5.3 預(yù)熱:10 個(gè)你需要知道的變更

    摘要:本文經(jīng)授權(quán)轉(zhuǎn)自社區(qū)說明發(fā)布臨近,大體構(gòu)建已經(jīng)完成,文檔整理完成后即可發(fā)布。附帶了一個(gè)響應(yīng)式郵件模板,通知類中唯一需要做的就是像下面這樣發(fā)送消息錯(cuò)誤處理是一個(gè)可選的擴(kuò)展包,提供了完整可用的服務(wù)。 本文經(jīng)授權(quán)轉(zhuǎn)自 PHPHub 社區(qū) 說明 Laravel 5.3 發(fā)布臨近,大體構(gòu)建已經(jīng)完成,文檔整理完成后即可發(fā)布。 下面是對 Laravel 5.3 新特性的整理,不完整列表。 1、全文搜...

    沈建明 評論0 收藏0
  • laravel/passport實(shí)現(xiàn)API認(rèn)證(Laravel5.6)

    摘要:第一部分安裝第一步使用安裝第二步服務(wù)提供器使用框架注冊自己的數(shù)據(jù)庫遷移目錄,因此在注冊提供器后,就應(yīng)該運(yùn)行的遷移命令來自動創(chuàng)建存儲客戶端和令牌的數(shù)據(jù)表第三步接下來,運(yùn)行命令來創(chuàng)建生成安全訪問令牌時(shí)所需的加密密鑰,同時(shí),這條命令也會創(chuàng)建用于生 第一部分 安裝Passport(laravel/passport) 第一步. 使用 Composer 安裝 Passport :composer...

    huayeluoliuhen 評論0 收藏0
  • Laravel 5.5 使用 Passport 實(shí)現(xiàn) Auth 認(rèn)證

    摘要:最近在寫一個(gè)前后端分離項(xiàng)目,本來想用開發(fā)的,但是略感笨重,于是想到了的和新出的。更改看守器驅(qū)動將配置文件中授權(quán)看守器的的選項(xiàng)改為。然后在你的前端請求里需要加入一個(gè)參數(shù)然后在你需要使用到認(rèn)證的路由里使用中間件,一切就大功告成啦 最近在寫一個(gè)前后端分離項(xiàng)目,本來想用 Jwt-auth + Dingo 開發(fā)的,但是略感笨重,于是想到了 Laravel 的 Passport 和 5.5 新出的...

    miguel.jiang 評論0 收藏0
  • 使用 laravel Passport 做 API 認(rèn)證

    摘要:使用進(jìn)行測試注冊接口,注冊成功后返回與用戶名登錄接口詳情接口參考了簡書浪來了的認(rèn)證應(yīng)用實(shí)戰(zhàn) 安裝larave laravel new passport_demo cd passport_demo && composer install 將 .env 中數(shù)據(jù)庫配置修改為自己的數(shù)據(jù)庫配置 DB_DATABASE=homestead DB_USERNAME=homestead DB_P...

    whinc 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<