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

資訊專欄INFORMATION COLUMN

關(guān)于JWT(Json Web Token)的思考及使用心得

taohonghui / 3095人閱讀

摘要:什么是是一個(gè)開(kāi)放的數(shù)據(jù)交換驗(yàn)證標(biāo)準(zhǔn),一般用來(lái)做輕量級(jí)的鑒權(quán)。由于許多接口設(shè)計(jì)是遵循無(wú)狀態(tài)的比如,所以是這一套機(jī)制的替代方案。組成由三部分組成頭部載荷簽名。

什么是JWT?

JWT(Json Web Token)是一個(gè)開(kāi)放的數(shù)據(jù)交換驗(yàn)證標(biāo)準(zhǔn)rfc7519(https://tools.ietf.org/html/r...,一般用來(lái)做輕量級(jí)的API鑒權(quán)。由于許多API接口設(shè)計(jì)是遵循無(wú)狀態(tài)的(比如Restful),所以JWT是Cookie Session這一套機(jī)制的替代方案。

組成

JWT由三部分組成頭部(header)、載荷(payload)、簽名(signature)。頭部定義類型和加密方式;載荷部分放不是很重要的數(shù)據(jù);簽名使用定義的加密方式加密base64后的header和payload和一段你自己的加密key。最后的token由base64(header).base64(payload).base64(signatrue)組成。

使用方式

平時(shí)需要鑒權(quán)的接口需要傳這個(gè)token,可以post字段提交,但是一般建議放在header頭中 ,因?yàn)镴WT一般配合https使用,這樣就萬(wàn)無(wú)一失。

為什么安全?

首先token是服務(wù)端簽發(fā),然后驗(yàn)證時(shí)是用同樣加密方式把header、payload和key再加密遍 然后看是不是和簽名一致 如果不一致就說(shuō)明token是非法的 這里主要靠的是加密(比如HS256)難以被攻破 至少目前吧 另外不得不說(shuō)這里的加密對(duì)服務(wù)器來(lái)說(shuō)是一個(gè)開(kāi)銷 這也是JWT的缺點(diǎn)

使用

我很早就聽(tīng)說(shuō)過(guò)JWT 但那時(shí)候還沒(méi)用上 感覺(jué)近幾年前后端分離思想加速了JWT的使用 MVC前置到前端(VUE、REACT)后端只用提供API API強(qiáng)調(diào)無(wú)狀態(tài) 自然而然使用了JWT這套方案

之前做小程序時(shí) 沒(méi)有絕對(duì)使用JWT這套方案 我把它簡(jiǎn)化了下

最近開(kāi)發(fā)的一套項(xiàng)目用的是Laravel做后端提供API服務(wù),所以自然而然使用了JWT,使用的擴(kuò)展是tymon/jwt-auth 關(guān)于這套擴(kuò)展機(jī)制的具體使用可以參考這篇文章 寫(xiě)的很不錯(cuò):https://laravel-china.org/art...

項(xiàng)目使用時(shí)的具體細(xì)節(jié) JWT三個(gè)時(shí)間概念

JWT有三個(gè)時(shí)間概念: 過(guò)期時(shí)間 寬限時(shí)間 刷新時(shí)間

上面那文章說(shuō)token過(guò)了過(guò)期時(shí)間是不可刷新的,但其實(shí)是可以刷新的,我這邊使用時(shí)可以(開(kāi)啟了黑名單機(jī)制和1min寬限時(shí)間) 但是過(guò)了刷新時(shí)間不能刷新這是肯定的

token刷新

可以借用laravel的中間件實(shí)現(xiàn)自動(dòng)刷新 服務(wù)端判斷過(guò)期了但是在刷新時(shí)間內(nèi)主動(dòng)刷新一次 并把新的token在Header頭中返回給客戶端

記住我功能

我感覺(jué)定義刷新時(shí)間(比如一個(gè)月) + token自動(dòng)刷新機(jī)制這一套就是記住我功能

不能主動(dòng)銷毀Token

默認(rèn)JWT這套方案好像不可以主動(dòng)剔除用戶的,因?yàn)榉?wù)端不會(huì)存token,只是驗(yàn)證。這和session不一樣。 但是我感覺(jué)可以借用黑名單機(jī)制 來(lái)判斷 中間件中判斷該token在剔除黑名單中就銷毀token并返回鑒權(quán)失敗

單點(diǎn)登錄

結(jié)合緩存比如redis存客戶端標(biāo)識(shí)是可以的

多套用戶權(quán)限機(jī)制

比如客戶端有用戶端和商家端兩套用戶機(jī)制(不同表),可以在auth.php定義兩個(gè)guard 分別指定對(duì)應(yīng)的model Login邏輯多帶帶寫(xiě) 比如auth("userApi") auth("corpApi") 可以拿到不同的guard 刷新中間件是可以共用的 不過(guò)router中的middleware方法可以指定具體的middleware

為什么不同權(quán)限體系的刷新中間件可以公用

感覺(jué)是jwt-auth實(shí)現(xiàn)了這機(jī)制 驗(yàn)證token時(shí)會(huì)根據(jù)sub字段判斷 我base64decode兩個(gè)token的payload后發(fā)現(xiàn)sub一個(gè)是1 一個(gè)是2

如果有問(wèn)題歡迎指正!

本文最早發(fā)布于Rootrl"s blog https://rootrl.github.io/2018...

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

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

相關(guān)文章

  • jwt前后端整合方案

    摘要:到這里,基于的前后端分離實(shí)現(xiàn)方案就搞定啦四關(guān)于的一些思考實(shí)際上,在使用的過(guò)程中有一個(gè)比較致命的缺點(diǎn),就是一旦簽發(fā)了,在到期之前就會(huì)始終有效,除非服務(wù)器部署額外的邏輯。結(jié)語(yǔ)以上是關(guān)于基于的前后端分離實(shí)現(xiàn)方案的總結(jié)和思考。 一、jwt是什么 JWT全稱, JSON Web Token,是一個(gè)以JSON為基準(zhǔn)的標(biāo)準(zhǔn)規(guī)范。 舉例:服務(wù)器認(rèn)證以后,生成一個(gè) JSON 對(duì)象,發(fā)回給用戶,就像下...

    nevermind 評(píng)論0 收藏0
  • 理解JWTJSON Web Token)認(rèn)證python實(shí)踐

    摘要:認(rèn)證服務(wù)器,即服務(wù)提供商專門(mén)用來(lái)處理認(rèn)證的服務(wù)器。它與認(rèn)證服務(wù)器,可以是同一臺(tái)服務(wù)器,也可以是不同的服務(wù)器??蛻舳耸褂蒙弦徊将@得的授權(quán),向認(rèn)證服務(wù)器申請(qǐng)令牌。認(rèn)證服務(wù)器對(duì)客戶端進(jìn)行認(rèn)證以后,確認(rèn)無(wú)誤,同意發(fā)放令牌。 最近想做個(gè)小程序,需要用到授權(quán)認(rèn)證流程。以前項(xiàng)目都是用的 OAuth2 認(rèn)證,但是Sanic 使用OAuth2 不太方便,就想試一下 JWT 的認(rèn)證方式。這一篇主要內(nèi)容是 ...

    BigTomato 評(píng)論0 收藏0
  • 關(guān)于 jwt 你應(yīng)該知道事情

    摘要:頭部需要一個(gè)頭部,用于描述關(guān)于該的最基本的信息,例如其類型以及簽名所用的算法等。簽發(fā)者需要準(zhǔn)備一個(gè)可以確認(rèn)自己身份的字符串,這個(gè)字符串我們稱之為。 什么是 jwt ? JWT 全稱叫 JSON Web Token, 是一個(gè)非常輕巧的規(guī)范。這個(gè)規(guī)范允許我們使用 JWT 在用戶和服務(wù)器之間傳遞安全可靠的信息。 jwt 使用場(chǎng)景 jwt 用圖廣泛,例如授權(quán)、鑒權(quán)等。具體一點(diǎn)的話,假如我們有一...

    leone 評(píng)論0 收藏0
  • 使用JWT保護(hù)你Spring Boot應(yīng)用 - Spring Security實(shí)戰(zhàn)

    摘要:創(chuàng)建應(yīng)用有很多方法去創(chuàng)建項(xiàng)目,官方也推薦用在線項(xiàng)目創(chuàng)建工具可以方便選擇你要用的組件,命令行工具當(dāng)然也可以。對(duì)于開(kāi)發(fā)人員最大的好處在于可以對(duì)應(yīng)用進(jìn)行自動(dòng)配置。 使用JWT保護(hù)你的Spring Boot應(yīng)用 - Spring Security實(shí)戰(zhàn) 作者 freewolf 原創(chuàng)文章轉(zhuǎn)載請(qǐng)標(biāo)明出處 關(guān)鍵詞 Spring Boot、OAuth 2.0、JWT、Spring Security、SS...

    wemall 評(píng)論0 收藏0
  • 【轉(zhuǎn)載】json web token使用

    摘要:當(dāng)使用一個(gè)時(shí),其中一個(gè)挑戰(zhàn)就是認(rèn)證。在傳統(tǒng)的應(yīng)用中,服務(wù)端成功的返回一個(gè)響應(yīng)依賴于兩件事。通常包括將發(fā)送的憑證與存儲(chǔ)的憑證進(jìn)行檢查。第一種是使用請(qǐng)求來(lái)通過(guò)驗(yàn)證,使服務(wù)端發(fā)送帶有的響應(yīng)。 做了這么長(zhǎng)時(shí)間的web開(kāi)發(fā),從JAVA EE中的jsf,spring,hibernate框架,到spring web MVC,到用php框架thinkPHP,到現(xiàn)在的nodejs,我自己的看法是越來(lái)越喜...

    UsherChen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<