天天看點

Basic Auth 和 OAuth的差別

開放平台有兩種認證方式,一種是Basic Auth,一種是OAuth。

關于OAuth1,OAuth2的異同  移步->> https://blog.csdn.net/qq_15028299/article/details/89028851

1、Basic Auth(HTTP Auth)

Basic Auth簡單點說明就是每次請求API時都提供使用者的username和password。【base64encode(username+":"+password)】

。這種方式優點和缺點都很明顯。

優點:

u 使用非常簡單,

u 開發和調試工作簡單,

u 沒有複雜的頁面跳轉邏輯和互動過程;

u 更利于發起方控制;

缺點:

u 安全性低,每次都需要傳遞使用者名和密碼,使用者名和密碼很大程度上存在被監聽盜取的可能;

u 同時應用本地還需要儲存使用者名和密碼,在應用本身的安全性來說,也存在很大問題;

u 開放平台服務商出于自身安全性的考慮(第三方可以得到該服務商使用者的賬号密碼,對于服務商來說是一種安全隐患),未來也會限制此認證方式(Twitter就計劃在6月份停止Basic Auth的支援)

u 使用者如果更改了使用者名和密碼,還需要重新進行密碼校驗的過程。

2、OAuth

OAuth為使用者資源的授權提供了一個安全、開放的标準,将會是以後開發平台普遍遵守的,目前Twitter、Sina微網誌、豆瓣、Google等都提供對它的支援。它分為幾個互動過程:

1)應用用APP KEY和APP SECRET換取OAuth_token;

2)應用将使用者引導到服務商的頁面對該OAuth_token進行授權(可能需要輸入使用者名和密碼);

3)服務商的頁面跳轉回應用,應用再根據參數去服務商獲得Access Token;

4)使用這個Access Token就可以通路API了。

上述過程如下圖所示:

OAuth認證過程

OAuth的優點:

u 安全性高,使用者的賬戶和密碼隻需要提供一次,而且是在服務商的頁面上提供,防止了Basic Auth反複傳輸密碼帶來的安全隐患;

u Access Token通路權限僅限于應用,被竊取不會影響使用者在該服務商的其他服務;

u Access Token即使被監聽丢失了随時可以撤銷,不像密碼丢失可能就被别人篡改了;

u 使用者修改了密碼也不會影響該應用的正常使用。

OAuth和Basic Auth兩種方式的差別, OAuth是一種比較通用的,安全的認證方式,不需要使用者名密碼,隻需要使用者授權;basic auth是一種基于使用者名密碼的認證,每次通路都需帶上使用者的使用者名密碼。

繼續閱讀