OAuth和傳統的SSO有什么區別?
OAuth與SSO的區別OAuth是一種授權協議,只是為用戶資源的授權提供了一個安全的、開放而又簡易的標準。
OAuth 2.0為客戶端開發者開發Web應用,桌面端應用程序,移動應用及客廳設備提供特定的授權流程。用戶提交的賬戶密碼不提交到本地,而是提交到授權服務器,待服務器確認后,返回本APP一個訪問令牌,本APP即可用該訪問令牌訪問資源服務器的資源。由于用戶的賬號密碼并不與本APP直接交互,而是與官方服務器交互,因而它是安全的。
OAuth2.0解決的是通過令牌獲取某個系統的操作權限,因為有clientId的標識,一次登陸只能對該系統生效,第三方應用的操作用戶不是鑒權系統的官方用戶,授權權限鑒權中心可以做限制。
SSO是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。一個用戶在鑒權服務器登陸過一次以后,可以在任何應用中暢通無阻,一次登陸,多系統訪問,操作用戶是實打實的該應用的官方用戶,用戶的權限和分域以鑒權服務器的存儲為準。通常處理的是一個公司的不同應用間的訪問登陸問題。如企業應用有很多業務子系統,只需登陸一個系統,就可以實現不同子系統間的跳轉,而避免了登陸操作。
通俗的講,OAuth是為解決不同公司的不同產品實現登陸的一種簡便授權方案,通常這些授權服務都是由大客戶網站提供的,如QQ,新浪微博,人人網等。而使用這些服務的客戶可能是大客戶網站,也可能是小客戶網站。使用OAuth授權的好處是,在為用戶提供某些服務時,可減少或避免因用戶懶于注冊而導致的用戶流失問題。
OAuth與SSO的應用場景不同,雖然可以使用OAuth實現SSO,但并不建議這么做。不過,如果SSO和OAuth結合起來的話,理論上是可以打通各個公司的各個不同應用間的登陸問題,但現實往往是殘酷的。