1.OAuth協議簡介spring
經過令牌解決密碼泄露問題是OAuth的使命後端
OAuth角色流程api
1,服務提供商(Provider),提供令牌的應用。安全
1認證服務器(Authorization Server) 發出去token服務器
2資源服務器(Resource Server) 驗證token發資源app
2,資源全部者(Resource Owner),就是用戶前後端分離
3,第三方應用(Client),想獲取用戶信息的應用。ide
流程3d
這是經常使用的四種受權模式中的受權碼模式,特色是是用戶在認證服務器上認證的,保證認證的正確性,若是是第三方應用向認證服務器發送認證請求,多是僞造的,可是用戶直接去認證能夠避免。還有就是這個認證服務器會先發一個受權碼給第三方應用服務器,而後第三方服務器會帶着這個受權碼去請求令牌,這樣就要求第三方應用要有一個服務器,一樣也是提升安全性,由於這樣就會讓第三方將令牌放到服務端,用戶客戶端不可見,還有一種簡化模式是不須要這個受權碼的,固然這樣相對就會不安全。blog
2.SpringSocial
當springsocial經過令牌拿取用戶信息而且構建Authentication放入SecurityContext的時候,就表示用戶登錄了,而上面這幅圖裏面的流程是別SpringSecurity封裝到一個SocialAuthenticationFilter的過濾器裏面了
代碼實現:
1ServiceProvider接口是由服務提供商負責實現的,OAuth2Operations接口負責流程裏面1-5步的操做api接口是用來方便用戶自定義信息的接口,
2connection是封裝用戶信息的實例,它是由ConnectionFactory建立的,ConnectionFactory裏面要有服務提供的信息,因此要有ServiceProvider去走完它的流程。apiAdapter是負責將不一樣的服務提供商提供的信息整合成標準的connection。而後就是對應關係,DB UserConnection負責存儲用戶的對應關係,而後操做這個UserConnection是UserConnectionRespository。
到此只是完成了獲取qq等應用的受權令牌,可是並無將token放到springsecurity裏面進行登錄驗證,下面開始走完springsecurity完成登錄過程
springsocialoauth開發token驗證方式,適用pc先後端分離和移動app的用戶驗證。