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

  • 2019 年 10 月 11 日
  • 筆記

刷新token

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

file

然後修改授權服務配置類,在 endpoints 中配置userDetailsService:

file

修改成數據庫方式也是為了創建userDetailsService對象,刷新令牌時會根據此對象對用戶信息進行檢查。這樣刷新令牌的配置就完成了。

測試

首先根據前面的正常流程,申請授權碼,然後獲取到令牌:

file

回參中有一個參數是 refresh_token 這個參數就是專門用來刷新令牌的,下面來看如何刷新令牌。刷新令牌和獲取令牌一樣,需要用post的方式訪問同一個地址 :

  • /oauth/token

不同的是,刷新令牌需要四個參數:

  • grant_type:值必須是 refresh_token

  • client_id

  • client_secret

  • refresh_token : 上次獲取令牌時回參中的 refresh_token

通過上面四個參數可以看出,刷新令牌中每次變化的參數只有refresh_token。我們來使用本次獲取的 refresh_token 來刷新令牌:

file

可以看到刷新令牌和從頭開始獲取令牌返回的結果是一樣的,使用本次刷新請求中返回的refresh_token替換上面的參數,還可以再次刷新。有興趣可以多試幾次。

代碼地址: https://gitee.com/blueses/spring-boot-security 25

本文由博客一文多發平台 OpenWrite 發佈!