刷新token 前面的例子和配置都是從頭開始申請授權碼和令牌,現在來看一下如何根據獲取令牌時,回參中的 refresh_token 來刷新令牌。現在在項目中配置的是記憶體模式的預設用戶名密碼,第一步先改成資料庫查詢的方式,具體過程參考前面的文章即可,來看security配置類: 然後修改授權服務配置類 ...
刷新token
前面的例子和配置都是從頭開始申請授權碼和令牌,現在來看一下如何根據獲取令牌時,回參中的 refresh_token 來刷新令牌。現在在項目中配置的是記憶體模式的預設用戶名密碼,第一步先改成資料庫查詢的方式,具體過程參考前面的文章即可,來看security配置類:
然後修改授權服務配置類,在 endpoints 中配置userDetailsService:
修改成資料庫方式也是為了創建userDetailsService對象,刷新令牌時會根據此對象對用戶信息進行檢查。這樣刷新令牌的配置就完成了。
測試
首先根據前面的正常流程,申請授權碼,然後獲取到令牌:
回參中有一個參數是 refresh_token 這個參數就是專門用來刷新令牌的,下麵來看如何刷新令牌。刷新令牌和獲取令牌一樣,需要用post的方式訪問同一個地址 :
- /oauth/token
不同的是,刷新令牌需要四個參數:
grant_type:值必須是 refresh_token
client_id
client_secret
refresh_token : 上次獲取令牌時回參中的 refresh_token
通過上面四個參數可以看出,刷新令牌中每次變化的參數只有refresh_token。我們來使用本次獲取的 refresh_token 來刷新令牌:
可以看到刷新令牌和從頭開始獲取令牌返回的結果是一樣的,使用本次刷新請求中返回的refresh_token替換上面的參數,還可以再次刷新。有興趣可以多試幾次。
代碼地址: https://gitee.com/blueses/spring-boot-security 25
本文由博客一文多發平臺 OpenWrite 發佈!