原创 SpringBootSecurity學習(20)前後端分離版之OAuth2.0刷新token

刷新token 前面的例子和配置都是從頭開始申請授權碼和令牌,現在來看一下如何根據獲取令牌時,回參中的 refresh_token 來刷新令牌。現在在項目中配置的是內存模式的默認用戶名密碼,第一步先改成數據庫查詢的方式,具體過程參考前面的文

原创 SpringBootSecurity學習(19)前後端分離版之OAuth2.0 token的存儲和管理

內存中存儲token 我們來繼續授權服務代碼的下一個優化。現在授權服務中,token的存儲是存儲在內存中的,我們使用的是 InMemoryTokenStore : 圖中的tokenStore方法支持很多種令牌的存儲方式,來看一下: In

原创 SpringBootSecurity學習(18)前後端分離版之 OAuth2.0 數據庫(MyBatis)存儲客戶端

使用Mybatis查詢客戶端信息 前面的例子使用了默認的jdbc配置來動態從數據庫查詢客戶端信息,下面來改用更加靈活的mybatis來實現,改用mybatis,首先pom中換成mybatis的依賴: 然後新建一個實體類,並實現查詢需要的

原创 SpringBootSecurity學習(17)前後端分離版之 OAuth2.0 數據庫(JDBC)存儲客戶端

自動批准授權碼 前面我們授權的流程中,第一步獲取授權碼的時候,都會經歷一個授權是否同意頁面: 這個流程就像第三方登錄成功後,提問是否允許獲取暱稱和頭像信息的頁面一樣,這個過程其實是可以自動同意的,需要在客戶端配置中,增加一個自動批准:

原创 SpringBootSecurity學習(16)前後端分離版之 OAuth2.0 加密配置

示例代碼的改進 前面使用spring cloud security和spring cloud oauth2寫了一個第三方授權的例子,例子非常的簡單,主要目的是用來熟悉OAuth2.0 申請授權的整個流程,這個簡單的示例肯定是不能直接用於生產

原创 SpringBootSecurity學習(15)前後端分離版之 OAuth2.0簡單示例

OAuth2.0 OAuth 引入了一個授權層,用來分離兩種不同的角色:客戶端和資源所有者。客戶端來申請資源,資源所有者同意以後,資源服務器可以向客戶端頒發令牌。客戶端通過令牌,去請求數據。也就是說,OAuth 的核心就是向第三方應用頒發令

原创 SpringBootSecurity學習(14)前後端分離版之 OAuth2.0介紹

登錄總結 前面基本介紹了security的常規用法,同時介紹了JWT和它的一個簡單實現,基本上開發中遇到的登錄問題都能解決了,即使在分佈式開發,或者微服務開發中實現登錄也基本沒有問題了。security本身已經實現的比較完善的安全處理,加上

原创 SpringBootSecurity學習(13)前後端分離版之JWT

JWT 使用 前面簡單介紹了把默認的頁面登錄改爲前後端分離的接口異步登錄的方法,可以幫我們實現基本的前後端分離登錄功能。但是這種基本的登錄和前面的頁面登錄還有一個一樣的地方,就是使用session和cookie來維護登錄狀態,這種方法的問題

原创 SpringBootSecurity學習(12)前後端分離版之簡單登錄

前後端分離 前面討論了springboot下security很多常用的功能,其它的功能建議參考官方文檔學習。網頁版登錄的形式現在已經不是最流行的了,最流行的是前後端分離的登錄方式,前端單獨成爲一個項目,與後臺的交互,包括登錄認證和授權都是由

原创 SpringBootSecurity學習(11)網頁版登錄之URL動態權限

動態權限 前面討論用戶登錄認證的時候,根據用戶名查詢用戶會將用戶擁有的角色一起查詢出來,自動實現判斷當前登錄用戶擁有哪些角色。可以說用戶與角色之間的動態配置和判斷security做的非常不錯。不過在配置方法級別的權限的時候,使用註解雖然是一

原创 SpringBootSecurity學習(10)網頁版登錄之記住我功能

場景 很多登錄都有記住我這個功能,在用戶登陸一次以後,系統會記住用戶一段時間,在這段時間,用戶不用反覆登陸就可以使用我們的系統。記住用戶功能的基本原理如下圖: 用戶登錄的時候,請求發送給過濾器UsernamePasswordAuthent

原创 SpringBootSecurity學習(09)網頁版登錄配置Session共享

場景 當後臺項目由部署在一臺改爲部署在多臺以後,解決session共享問題最常用的辦法就是把session存儲在redis等緩存中。關於session和cookie概念這裏就不再贅述了,在springboot-security環境下,把se

原创 SpringBootSecurity學習(08)網頁版登錄整合MyBatis

創建數據庫 前面介紹了springboot-security整合jdbc從數據庫中查詢用戶的方式,適用性有限,下面介紹最常用的整合MyBatis,這種在開發和生產環境中是最常用,也是最實用的。首先需要創建數據庫表,我們來創建三張表,分別是用

原创 SpringBootSecurity學習(07)網頁版登錄整合JDBC

數據庫中定義用戶 前面我們定義用戶是在配置文件和代碼中定義死的默認用戶,一般在開發中是不會這樣做的,我們的用戶都是來自我們的用戶表,存儲在數據庫中。操作數據庫的技術有很多,spring security默認支持了一個JDBC的方式,下面用這

原创 SpringBootSecurity學習(06)網頁版登錄方法級別的權限

用戶授權 前面討論過,Web應用的安全管理,主要包括兩個方面的內容,一個是用戶身份的認證,即用戶登錄的設計,二是用戶授權,即一個用戶在一個應用系統中能夠執行哪些操作的權限管理。前面介紹了登錄,下面簡單介紹一下用戶授權。用戶擁有的權限是根據用