grant_type爲client_credentials和password二者的區別

最近工作中需要使用到oauth,注意到oauth客戶端的grant_type值可以指定爲client_credentials和password兩種,很好奇所以網上搜索了一下,發現stackoverflow上一個帖子:
https://stackoverflow.com/que...

這位網友注意到一個有趣的點:

grant_type=client_credentials時,請求的響應中不包含refresh_token:

而grant_type爲password則包含refresh_token:

什麼時候用client_credentials(客戶端模式)作爲grant_type?

下面這個網站有介紹:https://www.poken.com/api/aut...
例如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的原創文章,請關注公衆號"汪子熙":

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章