oauth2是乙個安全框架,控制著程式受保護部分的准入,主要是控制不同的客戶端如何來調取api,保證它們在請求相應資源的時候有相應的許可權。
1. 客戶端(client)
指的是調取你程式api的那個應用,或者說終端,在passport裡建立客戶端可以通過artisan命令來進行
php artisan passport:client
複製**
每乙個客戶端(client)都要有乙個key, name, secret, redirect uri, user(程式建立者/所有者)
2. 資源擁有者(resource owner)
這個指的是客戶端請求的那個api,其背後所對應資源(或者說資料)的所有者(user)
3. 資源伺服器(resource server)
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),說白了就是從資源伺服器獲取准入令牌(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)幹啥?
3. 使用者密碼授權(resource owner password credentials grant)
resource owner == user
複製**
4. 客戶端資質授權(client credentials grant)
5. 令牌重新整理授權(refresh token grant)
當伺服器生成乙個令牌(token)的時候,同時也會設定乙個token的有效期,或者說失效期。令牌重新整理授權(refresh token grant)就是當我們的token過期了,我們得需要將其重新整理一下,重新生成乙個。這種情況下,驗證伺服器會在生成准入token的同時傳送乙個refresh token(重新整理令牌),好後期用來生成乙個新的token。需要注意的是,這個流程並不適合於模糊授權(implicit grant)。
遊戲測試裡的缺陷型別
今天抽出時間,整理總結了一下,遊戲測試過程中,常遇到的幾種缺陷型別 缺陷型別 功能 賦值 檢查 時間控制 構造 包裝 合併 演算法 文件 介面 1 功能 功能錯誤是一種影響遊戲功能及使用者體驗的錯誤。該錯誤可能是由提供這一功能的 丟失或不正確造成的。2 賦值 當程式所使用的值被錯誤地初始化或設定,或...
oracle裡long型別的總結
oracle裡long型別的總結,閱讀oracle裡long型別的總結,1 long 資料型別中儲存的是可變長字串,最大長度限制是2gb。2 對於超出一定長度的文字,基本只能用long型別來儲存,資料字典中很多物件的定義就是用long來儲存的。1 long 資料型別中儲存的是可變長字 1 long ...
C語言裡的型別提公升
一 型別的提公升 把char unsigned char short unsigned short轉換成int型別稱為型別提公升 promotion 1.如果short的位元組長度小於int的位元組長度 char轉換成 int unsigned char轉換成 int short轉換成 int un...