1. 程式人生 > >SpringBootSecurity學習(16)前後端分離版之 OAuth2.0 加密配置

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

示例程式碼的改進

前面使用spring cloud security和spring cloud oauth2寫了一個第三方授權的例子,例子非常的簡單,主要目的是用來熟悉OAuth2.0 申請授權的整個流程,這個簡單的示例肯定是不能直接用於生產環境的,還有很多需要改進的地方,我們來總結一下:

  • 1、只演示了授權碼的形式,其它的三種(隱藏式,密碼式,客戶端憑證)並沒有熟悉
  • 2、密碼和祕鑰是未加密的
  • 3、oauth的客戶端配置,包括id,祕鑰等資訊是在記憶體中配置死的,無法動態增加
  • 4、token也是放在記憶體中儲存的,無法手動廢止
  • 5、jwt的生成使用的是簡單的祕鑰形式,最好使用非對稱加密的方式,更加安全可靠
  • 6、令牌的申請許可權配置不太合理
  • 7、資源服務中的jwt和令牌驗證配置也不太靈活
  • 8、授權流程應該結合eureka開發和使用
  • 9、沒有驗證令牌中繼特性,等等等等

從上面列舉的問題可以看出,就算示例程式碼能執行,流程也清楚,但是要學會使用Spring Cloud Security,尤其要在生產環境使用,還需要對每個細節都能掌握和了解才行。

加密配置

首先我們來改進第一個地方,實現加密配置。大家知道使用者註冊之後,儲存使用者資料的時候,使用者密碼在資料庫中最好是加密後再儲存,同樣的道理,oauth的客戶端資訊最終也是要儲存在資料庫而不是直接在程式碼中配置死的,它的secret欄位也應該加密後再儲存,下面在授權服務中來配置加密,首先修改security配置類,配置加密方式:

然後將登陸使用者的密碼配置為加密:

然後修改授權配置類,將客戶端配置中的secret配置為加密:

這樣加密配置就完成了。資源服務不用做任何修改。

測試

配置上面三個加密的地方後,加密就配置好了,下面來測試一下,其實測試流程與前面的一樣,客戶端感知不到,得到的access_token如下:

最終訪問結果如下:

程式碼地址:https://gitee.com/blueses/spring-boot-security 17