SpringBootSecurity學習(21)前后端分離版之OAuth2.0非對稱加密


JWT轉換器

前面的例子中,都是在授權服務配置類中配置了一個很簡單的jwt轉換器,如下:

file

可以看到我們只用setSigningKey方法配置了一個秘鑰,這里使用的是簡單的對稱加密的方式來加密jwt內容,同時資源服務器中使用的也是同樣的秘鑰配置jwt轉換器:

file

除了對稱加密的方式,生產環境使用非常多的是更加安全的非對稱加密的方式來加密jwt。

生成公私鑰

公私鑰對可以使用jdk的命令 keytool 來生成,首先來看一下這個命令下有哪些參數:

file

中文的參數說明很清晰,我們需要使用 -genkeypair 參數生成秘鑰對。再來看一下 keytool -genkeypair 之下還有哪些參數:

file

這些都是設置密鑰對的屬性參數。下面我們來使用keytool命令生成JKS(Java KeyStore)文件,命令如下:

  • keytool -genkeypair -alias oauth2 -keyalg RSA -keypass oauth2 -keystore oauth2.jks -storepass oauth2

從參數說明可以看出,別名為 oauth2,秘鑰算法為 RSA,秘鑰口令為 oauth2,秘鑰庫(文件)名稱為 oauth2.jks,秘鑰庫口令為oauth2。輸入命令回車后,后面還有七個問題需要回答,分別是(問題后面括號內的內容是我的回答):

  • 您的名字與姓氏是什么?(oauth2)

  • 您的組織單位名稱是什么?(oauth2)

  • 您的組織名稱是什么?(oauth2)

  • 您所在的城市或區域名稱是什么?(bj)

  • 您所在的省/市/自治區名稱是什么?(bj)

  • 該單位的雙字母國家/地區代碼是什么?(cn)

  • CN=oauth2, OU=oauth2, O=oauth2, L=bj, ST=bj, C=cn是否正確?(是)

最后一個回答 是 輸入完回車后,jks文件就生成了,具體過程如下:

file

生成的秘鑰庫文件如下:

file

生成完成后,將jks文件拷貝到resources文件夾下即可。

修改授權服務配置類

這里只需要修改jwt轉換器即可:

file

其中,"oauth2".toCharArray() 這里配置的是口令,getKeyPair("oauth2") 這里配置的是別名。

根據jks文件獲取公鑰

輸入命令:

  • keytool -list -rfc -keystore oauth2.jks -storepass oauth2

會打印出公鑰:

file

在資源服務的resources文件夾下面,新建一個pub.txt文件,將公鑰復制進去:

file

file

這里復制的內容就是兩行等號之間的內容。

修改資源服務配置類

資源服務配置類也只需要修改jwt轉換器配置:

file

setSigningKey方法支持對稱和非對稱加密,它會對秘鑰進行判斷,來看一下源碼:

file

測試

jwt轉換器加密方式修改完成了,測試流程按照以前的方式獲取令牌,訪問受保護資源即可:

file

訪問接口:

file

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

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


免責聲明!

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



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