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


1.OAuth協議簡介

通過令牌解決密碼泄露問題是OAuth的使命

OAuth角色流程

1,服務提供商(Provider),提供令牌的應用。

  1認證服務器(Authorization Server) 發出去token

  2資源服務器(Resource Server) 驗證token發資源

2,資源所有者(Resource Owner),就是用戶

3,第三方應用(Client),想獲取用戶信息的應用。

流程

這是常用的四種授權模式中的授權碼模式,特點是是用戶在認證服務器上認證的,保證認證的正確性,如果是第三方應用向認證服務器發送認證請求,可能是偽造的,但是用戶直接去認證可以避免。還有就是這個認證服務器會先發一個授權碼給第三方應用服務器,然后第三方服務器會帶着這個授權碼去請求令牌,這樣就要求第三方應用要有一個服務器,同樣也是提高安全性,因為這樣就會讓第三方將令牌放到服務端,用戶客戶端不可見,還有一種簡化模式是不需要這個授權碼的,當然這樣相對就會不安全。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM