grant_type为client_credentials和password二者的区别
最近工作中需要使用到oauth,注意到oauth客戶端的grant_type值可以指定為client_credentials和password兩種,很好奇所以網上搜索了一下,發現stackoverflow上一個帖子:
https://stackoverflow.com/questions/34842895/difference-between-grant-type-client-credentials-and-grant-type-password-in-auth
這位網友注意到一個有趣的點:
grant_type=client_credentials時,請求的響應中不包含refresh_token:
而grant_type為password則包含refresh_token:
什么時候用client_credentials(客戶端模式)作為grant_type?
下面這個網站有介紹:https://www.poken.com/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的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的grant_type为client_credentials和password二者的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Twitter 清理遗留认证用户,库克等
- 下一篇: 我国天文学家为银河系精确“称重”:约为8