Spring cloud微服務安全實戰-6-2JWT認證之認證服務改造


首先來解決認證的問題。

1.效率低,每次認證都要去認證服務器調一次服務。
2.傳遞用戶身份,在請求頭里面,
3.服務之間傳遞請求頭比較麻煩。

jwt令牌。
spring提供了工具,幫你在微服務之間傳遞令牌。讓你不用去寫額外的代碼

服務器端的改造

看一下認證服務器配置的這個類。這里有個tokenStore,就是令牌的存儲器。現在用的是jdbc的TokenStore,令牌是存在數據庫里的

我們new  一個jwtTokenStore它 需要一個參數jwtTokenEnhancer



需要set一個key就是簽名的鍵。jwt本身不是加密的,誰都可以看到令牌里的信息,它用來保證安全的方式就這個簽名。你需要用一個key對這個token進行簽名。然后使用token的人用相同的key去驗證簽名,如果那個簽名證明是這個key簽出去的。那么就說明token里面的內容沒被改過。沒被改過,我就認為它是安全的。 




接收token的人需要這個key來驗證簽名,所以我們要把這個key當做一個服務暴露出去。 這樣使用這個token的人才能通過這個服務拿到 這個key來驗證簽名。

這樣spring Security就會往外暴露一個服務,然后只有經過認證的請求才能訪問服務拿到這個TokenKey.就是這個字符串,然后拿到這個字符串去驗簽名

運行認證服務器測試

看一下jwt到底是個什么樣子,然后再往下走。

直接訪問認證服務器



把token復制出來。


order對應數據庫內可以訪問的resoure_ids




jti可以認為是令牌的id
client_id這個令牌是發給哪個應用的。這里可以看到是發給admin這個應用的

只是防串改,並不信息保密。所以不建議往jwt里面放一些和自己業務 相關的信息。可能會導致你的信息泄露。

這里我們用了簡單的串做為key,生產的時候不要這么去做。因為一旦泄露,發出去的token就危險了。

key做安全措施

之前我們生成的key用來做https的證書,

現在拿這個證書來做簽名的key。復制到認證中心項目里。




KeyStoreKeyFactory需要一個resource,resource就是我們的證書,

還需要證書的密碼

這里配置了證書密碼

這里我們就直接寫死了。

證書在根目錄下面。

給公私鑰起的名字就叫做jojo。拿出來作為加密用的私鑰就 可以了。

啟動測試


重新發請求。




公私鑰都粘上才能驗內容到底是不是被篡改過。這樣token的安全程度就會高一些。
jwt只是防串改,並不能加密里面的信息,信息誰都能看見。

結束

 


免責聲明!

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



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