javascript
SpringSecurity分布式整合之jwt和rsa说明
JWT介紹
概念說明
從分布式認(rèn)證流程中,我們不難發(fā)現(xiàn),這中間起最關(guān)鍵作用的就是token,token的安全與否,直接關(guān)系到系統(tǒng)的 健壯性,這里我們選擇使用JWT來實(shí)現(xiàn)token的生成和校驗(yàn)。 JWT,全稱JSON Web Token,官網(wǎng)地址https://jwt.io,是一款出色的分布式身份校驗(yàn)方案。可以生成token,也可以解析檢驗(yàn)token。
JWT生成的token由三部分組成
- 頭部:主要設(shè)置一些規(guī)范信息,簽名部分的編碼格式就在頭部中聲明。
- 載荷:token中存放有效信息的部分,比如用戶名,用戶角色,過期時(shí)間等,但是不要放密碼,會(huì)泄露!
- 簽名:將頭部與載荷分別采用base64編碼后,用“.”相連,再加入鹽,最后使用頭部聲明的編碼類型進(jìn)行編 碼,就得到了簽名。【通過隨機(jī)鹽在進(jìn)行加密】
JWT生成token的安全性分析
從JWT生成的token組成上來看,要想避免token被偽造,主要就得看簽名部分了,而簽名部分又有三部分組成,其中頭部和載荷的base64編碼,幾乎是透明的,毫無安全性可言,那么最終守護(hù)token安全的重?fù)?dān)就落在了加入的鹽上面了!
試想:如果生成token所用的鹽與解析token時(shí)加入的鹽是一樣的。豈不是類似于中國人民銀行把人民幣防偽技術(shù) 公開了?大家可以用這個(gè)鹽來解析token,就能用來偽造token。這時(shí),我們就需要對(duì)鹽采用非對(duì)稱加密的方式進(jìn)行加密,以達(dá)到生成token與校驗(yàn)token方所用的鹽不一致的安全效果!
非對(duì)稱加密RSA介紹
- **基本原理:**同時(shí)生成兩把密鑰:私鑰和公鑰,私鑰隱秘保存,公鑰可以下發(fā)給信任客戶端
- 私鑰加密,持有私鑰或公鑰才可以解密
- 公鑰加密,持有私鑰才可解密
- 優(yōu)點(diǎn):安全,難以破解
- 缺點(diǎn):算法比較耗時(shí),為了安全,可以接受
- 歷史:三位數(shù)學(xué)家Rivest、Shamir 和 Adleman 設(shè)計(jì)了一種算法,可以實(shí)現(xiàn)非對(duì)稱加密。這種算法用他們?nèi)?個(gè)人的名字縮寫:RSA。
【總結(jié)】:也就是說,我們加密信息的時(shí)候,使用的是公鑰,而驗(yàn)證token真?zhèn)蔚臅r(shí)候,使用的是公鑰
總結(jié)
以上是生活随笔為你收集整理的SpringSecurity分布式整合之jwt和rsa说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringSecurity分布式整合之
- 下一篇: SpringSecurity分布式整合之