grant_type為client_credentials和password二者的區別
最近工作中需要使用到oauth,注意到oauth客戶端的grant_type值可以指定為client_credentials和password兩種,很好奇所以網上搜尋了一下,發現stackoverflow上一個帖子:
這位網友注意到一個有趣的點:
grant_type=client_credentials時,請求的響應中不包含refresh_token:
而grant_type為password則包含refresh_token:
什麼時候用client_credentials(客戶端模式)作為grant_type?
下面這個網站有介紹:
https:///api/authentication/oauth2/
例如Account creation這個API,從業務上說我們期望它可以透過一個未認證過的使用者呼叫,因為在Account建立之前,不存在authenticated user,這種場景下用grant_type=credentails比較合適。
grant_type=password的情況下,請求access token時,需要在HTTP請求里加上client_id和client_secret兩個引數。
grant_type = password
客戶端需要使用者的使用者名稱和密碼,然後將客戶端自己的client_id和client_secret傳送給認證伺服器,換取access token. 適用於受信客戶端,比如一種服務對應的移動客戶端。
grant_type=client_credentials
帖子裡舉了一個例子,比如實現一個後臺作業,呼叫API完成一些維護工作,這裡面不涉及到採集終端使用者的使用者名稱和密碼,所以用client_credentials比較合適,這種情況下拿Access Token只需要client_id和client_secret即可,不需要用user_id和password了。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2662635/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java中抽象類和介面的介紹及二者間的區別Java抽象
- HTTP和HTTPS是什麼 二者區別是什麼HTTP
- enable password 7與enable secret的區別
- oracle taf type型別為session和select的區別Oracle型別Session
- 滲透測試和紅藍對抗是什麼?二者之間有何區別?
- ../和./和/的區別
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- Linux中絕對路徑和相對路徑是什麼?二者有何區別?Linux
- Django中的函式make_password、set_password和check_passwordDjango函式
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- 【PROFILE】PASSWORD_REUSE_TIME和PASSWORD_REUSE_MAX引數在Oracle不同版本中的差別Oracle
- shtml和html網頁另存為的一點區別HTML網頁
- subprocess中命令為引數序列和字串的區別字串
- 怎麼在雲伺服器安裝Ubuntu和Linux?Ubuntu和Linux二者有什麼區別嗎?伺服器UbuntuLinux
- ./ 和sh 的區別
- JQuery this和$(this)的區別jQuery
- jquery $(this) 和this的區別jQuery
- T和?的區別
- ++a和a++的區別
- makefile =和:=的區別
- 為oracle listener set passwordOracle
- Mybatis中#{}和${}傳參的區別及#和$的區別小結MyBatis
- lsnrctl中,SET PASSWORD和CHANGE_PASSWORD命令
- 和區別
- MYSQL和SQL的區別MySql
- varchar和char的區別
- &self 和 self 的區別
- var和public的區別
- filter和interceptor的區別Filter
- useEffect 和 useLayoutEffect 的區別
- SDK和API的區別?API
- var 和 let 的區別
- WebApi和MVC的區別WebAPIMVC
- service和systemctl的區別