OAuth是Open Authority的縮寫,是令牌代替用戶密碼訪問應用的又一標準,前面一期介紹過SSO單點登錄(SpringBoot模擬單點登錄),也是令牌登陸的一種方式。
OAuth2.0最典型的授權碼認證方式:
資源服務器和鑑權服務器都是屬於資源所有方,也就是最終的服務提供方,第三接入方需要先與鑑權服務器申請合作獲取客戶編碼。
對於資源服務器來說,需要做的是
1 accessToken和clientId的校驗
2 token校驗通過後要對token訪問權限做好限制
對於鑑權服務器來說,需要做的是
1 接受第三方應用的申請,維護clientId
2 提供登入頁面,做用戶、密碼鑑權
3 授權碼生成和驗證
4 token的生成
5 clientId、token的維護,一般clientId入庫,token入內存
OAuth2.0最主要的是授權碼方式和簡單方式,簡單方式就是省略了上面客戶端獲取code然後交換token的過程。
OAuth2.0網上資料經常拿來跟SSO混爲一談,個人覺得這兩個概念一定要區分開,根本是兩回事。
SSO是爲了解決一個用戶在鑑權服務器登陸過一次以後,可以在任何應用中暢通無阻,一次登陸,多系統訪問,操作用戶是實打實的該應用的官方用戶,用戶的權限和分域以鑑權服務器的存儲爲準。
OAuth2.0解決的是通過令牌獲取某個系統的操作權限,因爲有clientId的標識,一次登陸只能對該系統生效,第三方應用的操作用戶不是鑑權系統的官方用戶,授權權限鑑權中心可以做限制。