如何實(shí)現(xiàn)單點(diǎn)登錄功能 Jwt的token如何像session一樣去延長(zhǎng)時(shí)間?
Jwt的token如何像session一樣去延長(zhǎng)時(shí)間?隨著技術(shù)的發(fā)展和分布式web應(yīng)用的普及,通過(guò)會(huì)話管理用戶(hù)登錄狀態(tài)的成本越來(lái)越高。因此,它逐漸發(fā)展成為一種令牌方式來(lái)進(jìn)行登錄身份驗(yàn)證,然后利用令牌獲
Jwt的token如何像session一樣去延長(zhǎng)時(shí)間?
隨著技術(shù)的發(fā)展和分布式web應(yīng)用的普及,通過(guò)會(huì)話管理用戶(hù)登錄狀態(tài)的成本越來(lái)越高。因此,它逐漸發(fā)展成為一種令牌方式來(lái)進(jìn)行登錄身份驗(yàn)證,然后利用令牌獲取緩存在redis中的用戶(hù)信息。隨著JWT的出現(xiàn),驗(yàn)證方法更加簡(jiǎn)單方便。它不使用redis緩存,而是直接基于令牌取出保存的用戶(hù)信息,驗(yàn)證令牌的可用性,使單點(diǎn)登錄更容易。
JWT通常包含兩個(gè)令牌:訪問(wèn)令牌和刷新令牌。當(dāng)用戶(hù)通過(guò)登錄等方式成功驗(yàn)證身份時(shí),服務(wù)器會(huì)生成一個(gè)訪問(wèn)令牌和一個(gè)刷新令牌,并返回前端存儲(chǔ)。兩個(gè)令牌的過(guò)期時(shí)間都將在服務(wù)器上設(shè)置,但訪問(wèn)令牌的過(guò)期時(shí)間較短,而刷新令牌的過(guò)期時(shí)間較長(zhǎng)。當(dāng)當(dāng)前端向服務(wù)器發(fā)送請(qǐng)求時(shí),訪問(wèn)令牌將與請(qǐng)求一起發(fā)送到服務(wù)器,以驗(yàn)證請(qǐng)求者的身份。當(dāng)服務(wù)器發(fā)現(xiàn)訪問(wèn)令牌已過(guò)期時(shí),它將返回失敗信息。此時(shí),前端需要使用refresh token從服務(wù)器申請(qǐng)新的訪問(wèn)令牌。如果刷新令牌沒(méi)有問(wèn)題,服務(wù)器將生成一個(gè)新的訪問(wèn)令牌。如果刷新令牌已過(guò)期,則需要要求用戶(hù)再次登錄以驗(yàn)證其身份。
總之,JWT擴(kuò)展是通過(guò)使用過(guò)期時(shí)間較長(zhǎng)的刷新令牌重新申請(qǐng)新的訪問(wèn)令牌來(lái)實(shí)現(xiàn)的。當(dāng)刷新令牌也已過(guò)期時(shí),不可能延長(zhǎng)時(shí)間。
jwt如何防止多端登錄?
阻止多終端登錄?為什么我們要通過(guò)JWT??
JWT只存儲(chǔ)用戶(hù)的基本信息。JWT的目的是減少數(shù)據(jù)庫(kù)搜索并提高響應(yīng)時(shí)間。
如果要阻止多終端登錄,只需檢查JWT是否成功,然后執(zhí)行redis檢查。
Redis群集。效率很高。Redis有一個(gè)稱(chēng)為bitmap的數(shù)據(jù)結(jié)構(gòu)。命令是setbit key offset 1,這意味著將對(duì)應(yīng)于鍵的二進(jìn)制向量的偏移位設(shè)置為1。
例如,鍵對(duì)應(yīng)的二進(jìn)制是:000000,偏移對(duì)應(yīng)的位置是第二個(gè)設(shè)置為1。是010000。
密鑰表示唯一密鑰,偏移量表示用戶(hù)ID。如果登錄成功,相應(yīng)位置將設(shè)置為1,注銷(xiāo)將設(shè)置為0。此命令在設(shè)置為1時(shí)只能成功一次
setbit islogin ID001 1 user 1 login成功
setbit islogin ID001 0 user 1 logoff
setbit islogin ID002 1 user 2 login成功
setbit islogin ID002 0在不同的場(chǎng)景下,單點(diǎn)登錄的實(shí)現(xiàn)方式不同。當(dāng)應(yīng)用系統(tǒng)是同一域名下的不同站點(diǎn)時(shí),通常采用cookie驗(yàn)證。當(dāng)應(yīng)用系統(tǒng)在同一個(gè)域名中,但數(shù)據(jù)是不同的子域時(shí),應(yīng)用系統(tǒng)采用cookie和sessionid相結(jié)合的方式。當(dāng)應(yīng)用系統(tǒng)被劃分為不同的域時(shí),采用cookie和站點(diǎn)間的重定向。玉賦科技針對(duì)不同場(chǎng)景有不同的單點(diǎn)登錄模式。目前市場(chǎng)上做單點(diǎn)登錄的主流公司,如宇福科技,都可以在單點(diǎn)登錄領(lǐng)域進(jìn)行深度培育,以滿(mǎn)足客戶(hù)對(duì)如何實(shí)現(xiàn)單點(diǎn)登錄的需求?如何實(shí)現(xiàn)統(tǒng)一認(rèn)證?問(wèn)題的難點(diǎn)在于,玉字的單點(diǎn)登錄可以幫助企業(yè)快速實(shí)現(xiàn)云認(rèn)證。支持SAML、oidc、CAS、ouath等主流協(xié)議??蓪?shí)現(xiàn)快速部署,交貨期短,適用于各行業(yè)企業(yè)。
如何實(shí)現(xiàn)單點(diǎn)登錄?
單點(diǎn)登錄意味著用戶(hù)只能訪問(wèn)所有受信任的應(yīng)用系統(tǒng)一次,與4A中的統(tǒng)一認(rèn)證相對(duì)應(yīng),我們都知道統(tǒng)一認(rèn)證將依賴(lài)于一個(gè)統(tǒng)一的賬戶(hù)。因此,實(shí)現(xiàn)單點(diǎn)登錄的前提是統(tǒng)一賬戶(hù)(用戶(hù))。單點(diǎn)登錄、統(tǒng)一審核、權(quán)限、門(mén)戶(hù),這些要求是結(jié)合在一起的。請(qǐng)參考下圖。單點(diǎn)登錄的實(shí)現(xiàn)并不能統(tǒng)一權(quán)限。東軟有一個(gè)很好的產(chǎn)品,可以實(shí)現(xiàn)單點(diǎn)登錄。Iam是個(gè)好產(chǎn)品。他們?cè)诠俜骄W(wǎng)站上介紹https://platform.neusoft.com/