SpringSocial和OAuth協議開發第三方登錄

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的用戶驗證。

相關文章
相關標籤/搜索