成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JWT必知必會

張金寶 / 1596人閱讀

摘要:最近,項目的安全認證機制全面采用。為了伸縮性考慮,采用機制,必然面臨著應(yīng)用狀態(tài)的問題,而且必然牽涉到的復制。為了安全性考慮,機制僅驗證時天然對免疫。若有可能,使用標志。采用來防止這是因為,在站點上發(fā)起向站點的請求時,站點的同樣會被發(fā)送給。

最近,項目的安全認證機制全面采用JWT?,F(xiàn)在,趁整個工作基本告一段落之際,將一些知識點總結(jié)一下發(fā)布出來。

為什么要遷移?

原因很簡單,就以下幾點:

為了遷移到微服務(wù)架構(gòu),由于服務(wù)分拆之后,單一的登錄入口點消失了,采用Token是必然之選。

為了伸縮性考慮,采用Cookie + Session機制,必然面臨著應(yīng)用狀態(tài)的問題,而且必然牽涉到session的復制。采用Token,天然避免這一點。這里并非是指完全無Session化,但起碼可以降至最少。

為了移動端考慮,Token更適合移動端,比Cookie更靈活了。

為了安全性考慮,Token機制【僅驗證request header時】天然對CSRF免疫。

JWT為何物?

JWT由三部分組成:header + payload + signature,每部分是一個Json表示。最終的Token對這三部分進行編碼之后的字符串,中間用“.”分割:

token = encodeBase64(header) + "." + encodeBase64(payload) + "." + encodeBase64(signature) # token is now: 
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI 

在應(yīng)用與服務(wù)器之間傳遞的就是上述字符串形式的Token。

如何使用JWT?

使用JWT的應(yīng)用基本都遵循下面的使用流程:

訪問登錄點。

登錄服務(wù)驗證之后,簽發(fā)證書返回給客戶端。

客戶端保存證書,并在每次請求時將其附在request header中,表示已經(jīng)登錄。

服務(wù)器接收請求之后,通過簽名和時戳,驗證Token的有效性。

若有效,則響應(yīng)客戶端。

對應(yīng)的request header如下:

Authorization:Bearer 

整個過程如下圖:

在一般的應(yīng)用中,驗證成功之后,服務(wù)器可能會在Cookie或Session中保留一些用戶相關(guān)的額外信息,簡化后續(xù)的編程,同時避免反復讀取數(shù)據(jù)庫。

在JWT,同樣可以實現(xiàn)這樣的功能:只需將相應(yīng)的內(nèi)容放入payload即可。這樣,下次從客戶端發(fā)送的token中便可以解碼得出。

驗證JWT的有效性時,會考慮至少下面兩點:

簽名是否正確?

Token是否到期?

整個過程的編碼其實并不復雜,請參見文后的鏈接,這里不再啰嗦。

使用中的注意事項

出于安全性,注意以下幾點:

簽名證書需要安全存放

不要將敏感信息放置于token中

請結(jié)合SSL使用

如果要在Cookie中保存Token【此時,服務(wù)器要同時驗證cookie或header中是否有token】

留意Token的大小超過Cookie的限制

請使用HttpOnly標志。若有可能,使用Secure標志。

采用Synchronize Token來防止CSRF【這是因為,在A站點上發(fā)起向B站點的請求時,B站點的Cookie同樣會被發(fā)送給B。若不使用另一個Token來防護,則無法得知cookie中的JWT是否屬于從A->B,還是從B->B。目前,大部分現(xiàn)有的框架已經(jīng)支持】。

為了防止replay attack,可加上jti、exp和iat聲明

以上是對JWT的旋風式說明,其他的內(nèi)容,請參見參考文獻。

參考文獻

Get Started with JSON Web Tokens

Introduction to JSON Web Tokens

維基百科上的JWT

Vert.x Web的JWT例子

Where to Store your JWTs – Cookies vs HTML5 Web Storage

Use JWT The Right Way!

Authentication: Cookies vs JWTs and why you’re doing it wrong

How to store a JWT token inside an HTTP only cookie?

Cookies vs Tokens: The Definitive Guide

管理JWT的生命周期

JWT規(guī)范

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/11225.html

相關(guān)文章

  • 前端必知必會HTTP請求系列(二)簡單一點的HTTP協(xié)議

    摘要:通過請求和響應(yīng)的交換達成通信協(xié)議中已經(jīng)規(guī)定了請求是從客戶端發(fā)出,最后由服務(wù)端響應(yīng)這個請求并返回。隨后的字符串指明了請求訪問的資源對象。協(xié)議自身不對請求和響應(yīng)之間的通信狀態(tài)進行保存,也就是說這個級別。從前發(fā)送請求后需等待并受到響應(yīng)。 showImg(https://segmentfault.com/img/bVbmDsG?w=1024&h=538); http協(xié)議用戶客戶端和服務(wù)器之間的...

    xbynet 評論0 收藏0
  • 前端必知必會HTTP請求系列(三)HTTP報文內(nèi)的http信息

    摘要:報文用于協(xié)議交互的信息被稱為報文?,F(xiàn)在出現(xiàn)的各種首部字段及狀態(tài)碼稍后會闡述。狀態(tài)碼響應(yīng)報文包含了多個范圍的內(nèi)容使用。如果服務(wù)器無法響應(yīng)范圍請求,則會返回狀態(tài)碼和完整的實體內(nèi)容。 showImg(https://segmentfault.com/img/bVbthNL?w=900&h=500); http報文 用于HTTP協(xié)議交互的信息被稱為HTTP報文。請求端的http報文叫做請求報文...

    Invoker 評論0 收藏0
  • java必知必會之SecureSocket

    SSL,Secure Sockets Layer,安全Socket層TLS,Transport Layer Security,傳輸層安全協(xié)議 package network.secure; import java.io.*; import javax.net.ssl.*; public class HTTPSClient { public static void main(Strin...

    kidsamong 評論0 收藏0

發(fā)表評論

0條評論

張金寶

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<