Laravel Passport里的授權類型介紹

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

OAuth2是一個安全框架,控制著程序受保護部分的準入,主要是控制不同的客戶端如何來調取API,保證它們在請求相應資源的時候有相應的權限。

Laravel Passport是一個強大的Oauth2服務實現,使用Passport往往已經足以應對我們日常API開發中的各種需求,甚至說,大部分時候,我們只是用到了Passport的部分功能而已。也正因為其強大,所以理解和使用起來也有一定難度,而這其中,理解和熟悉oauth2相關的各種授權類型是關鍵,授權類型理解了,Passport也就沒什么難的了。話不多說,一起來看看不同的授權類型都是怎么回事吧。

概念理解:

1. 客戶端(Client)

指的是調取你程序API的那個應用,或者說終端,在Passport里創建客戶端可以通過artisan命令來進行

php artisan passport:client

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

2. 資源擁有者(Resource Owner)

這個指的是客戶端請求的那個API,其背后所對應資源(或者說數據)的所有者(user)

3. 資源服務器(Resource Server)

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

4. 權限范圍(Scope)

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

Passport::tokensCan(['read-tweets' => 'Read all tweets','post-tweet' => 'Post new tweet',
]);

5. 準入令牌(Access token)

當客戶端程序想要取得某些受保護的數據時,就要傳遞一個準入令牌(Access token),以此來驗證當前請求(request)。

授權類型(Grant Type)

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

1. 認證碼授權(Authorization Code grant)

這是最常見的一種類型,說白了就是第三方登陸,也即當第三方的程序想著獲取我們這邊的受保護信息,這個第三方程序必須得獲得我們這邊用戶的認證授權。更直白的,當第三方的客戶端想著調用我們這邊的用戶信息,來登陸他們的網站,那么它得獲得這個用戶的認證授權。

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

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

2. 模糊授權(Implicit Grant)

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

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

3. 用戶密碼授權(Resource Owner Password Credentials Grant)

Resource Owner == User

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

4. 客戶端資質授權(Client Credentials Grant)

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

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

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278253.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278253.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278253.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue 開發環境搭建

1.創建vue項目 1.node js 生成項目,編譯項目 2.hbuilder 開發環境 1.下載安裝node js http://nodejs.cn/download/ 確認是否安裝成功 如果安裝不了 代碼錯誤2503 解決方法: 管理員命令運行cmd; cd\ cd C:\Users\Administrator\Desktop msiexec/package n…

iphone視圖放大_如何將iPhone用作放大鏡

iphone視圖放大It’s a common problem: Some things are just too hard to see. Usually, they’re too far away, too dark, or too small. With a feature called Magnifier, your iPhone can function as a magnifying glass and sight aid. Here’s how to use it. 這是一…

chmod權限

本文引用:https://www.cnblogs.com/zhangym/p/5826200.html linux數字權限解釋 644 第一位代表文件所有者的權限,第二位代表同組用戶的權限,第三位代表其他用戶的權限. 讀取權限等于4,用r表示;寫入權限2,用w表示;執行權限1,用x表示. 通過4、2、1組合,得到以下幾種權…

輸出最大值MXNet實現

網絡結構,輸入為2個數,先經過10個節點的全連接層,再經過10個節點的ReLu,再經過10個節點的全連接層,再經過1個節點的全連接層,最后輸出。 #-*-coding:utf-8-*- import logging import math import random im…

discord linux_如何在Discord中應用文本格式

discord linuxDiscord allows for text-and audio-based chatting between gamers and other like-minded individuals. If you want to make a bigger impact on Discord, you can use formatting to jazz up your text-based messages. Here’s how. Discord允許游戲玩家和其…

一張圖看懂阿里云網絡產品[十二]云企業網

2019獨角獸企業重金招聘Python工程師標準>>> 摘要: 阿里云致力于為用戶提供優質、高效、穩定的網絡傳輸環境,云企業網(Cloud Enterprise Network)將提供一種能夠快速構建混合云和分布式業務系統的全球網絡,…

# 2019-2020.3 《java程序設計》第一周學習總結

2019-2020-3 《Java 程序設計》第一周學習總結 在本周的學習中,學習到了好多也收獲了好多,從最基礎的安裝虛擬機開始,根據老師的博客中的教程一步一步的進行,在這過程中也遇到了好多問題,因為是初步接觸Linux系統&…

聊聊Java反射

反射是Java最重要的特性。通過Java反射可以在運行時知道一個類的所有成員和方法,知道一個對象的類類型、成員和方法的所有信息,進而調用對象的方法或生成對象的代理或包裝類。Java是面向對象語言,除了靜態變量或原始數據類型外都是完全面向對…

01. 把存儲過程結果集SELECT INTO到臨時表

原文:01. 把存儲過程結果集SELECT INTO到臨時表在開發過程中,很多時候要把結果集存放到臨時表中,常用的方法有兩種。 一. SELECT INTO 1. 使用select into會自動生成臨時表,不需要事先創建 select * into #temp from sysobjects select * fro…

day5學python 基礎+裝飾器內容

基礎裝飾器內容 遞歸特性# 1.必須有一個明確的結束條件# 2.每次進入更深一層遞歸時,問題規模相比上次遞歸應有所減少# 3.遞歸效率不高 def run(n):print(n)if int(n/2)>0:return run(n / 2)print("-->",n) run(10) 局部變量與全局變量知識 1.全局變…

如何在Windows 10上跳過回收站以刪除文件

Windows 10 normally sends files you delete to the Recycle Bin. They’ll be kept until you empty it—or, in some cases, until Windows 10 automatically empties your Recycle Bin. Here’s how to skip the Recycle Bin and delete files immediately. Windows 10通常…

OSChina 周日亂彈 —— 我叫張一條

2019獨角獸企業重金招聘Python工程師標準>>> Osc亂彈歌單(2018)請戳(這里) 【今日歌曲】 萊布妮子 :分享Lube的單曲《Skoro dembel》 《Skoro dembel》- Lube 手機黨少年們想聽歌,請使勁兒戳&am…

面向對象初識

一. 面向對象初識 1.1 回顧面向過程編程vs函數式編程 # 面向過程編程 測量對象的元素個個數。 s1 fjdsklafsjda count 0 for i in s1:count 1l1 [1,2,3,4] count 0 for i in l1:count 1 面向過程編程def func(s):count 0for i in s:count 1return count …

iOS逆向:在任意app上開啟malloc stack追蹤內存來源

lldb有一個內存調試工具malloc stack,開啟以后就可以查看某個內存地址的malloc和free記錄,追蹤對象是在哪里創建的。 這個工具可以打印出對象創建的堆棧,而在逆向時,也經常需要追蹤某些方法的調用棧,如果可以隨時打印出…

【CH4302】Interval GCD

思路:線段樹維護a的差分數組的gcd, 因為$gcd(a_1,a_2,a_3,...,a_n)gcd(a_1,a_2-a_1,a_3-a_2,...,a_n-a_{n-1})$。 原區間修改可以轉化為差分數組上的兩次單點修改。 因為實際計算時還需要原數,所以用樹狀數組維護b的增減量。 詢問時&#xff…

Vue 的路由實現 Hash模式 和 History模式

Hash 模式: Hash 模式的工作原理是onhashchange事件,Window對象可以監聽這個事件... 可以通過改變路徑的哈希值,來實現歷史記錄的保存,發生變化的hash 都會被瀏覽器給保存下來,所以下次盡管瀏覽器沒有請求服務器,但是還…

我的第一次——網站備案

暫無內容 轉載于:https://my.oschina.net/vright/blog/1784979

使用LiveClick升級您的實時書簽

If you like to subscribe to feeds using Firefox’s Live Bookmarks feature, the LiveClick extension gives you so many upgrades that I can only cover the highlights of how great it is. 如果您想使用Firefox的“實時書簽”功能訂閱供稿,則LiveClick擴展程…

操作系統的概論梳理

轉載于:https://www.cnblogs.com/hclhechunlu/p/10477470.html

win7下如何顯示緬文和使用緬文輸入法?

windows 7 操作系統默認不支持緬文,所以緬文在win7上不能顯示,當然也沒有提供緬文輸入法。 一、顯示緬文 windows系統下顯示緬文字母只需要安裝緬文字體就可以了。目前常見的緬文字體就是Zawgyi-One,Zawgyi-One是一種廣泛使用的緬文字體。Zaw…