grant_type爲client_credentials和password兩者的區別

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

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

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

而grant_type爲password則包含refresh_token:spa

何時用client_credentials(客戶端模式)做爲grant_type?3d

下面這個網站有介紹:https://www.poken.com/api/aut...
例如Account creation這個API,從業務上說咱們指望它能夠經過一個未認證過的用戶調用,由於在Account建立以前,不存在authenticated user,這種場景下用grant_type=credentails比較合適。blog

grant_type=password的狀況下,請求access token時,須要在HTTP請求里加上client_id和client_secret兩個參數。token

grant_type = password

客戶端須要用戶的用戶名和密碼,而後將客戶端本身的client_id和client_secret發送給認證服務器,換取access token. 適用於受信客戶端,好比一種服務對應的移動客戶端。rem

grant_type=client_credentials

帖子裏舉了一個例子,好比實現一個後臺做業,調用API完成一些維護工做,這裏面不涉及到採集終端用戶的用戶名和密碼,因此用client_credentials比較合適,這種狀況下拿Access Token只須要client_id和client_secret便可,不須要用user_id和password了。get

要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":
it

相關文章
相關標籤/搜索