如果SessionID和Token都存在 redis 里讓多個服務(wù)器共享
那沒什么區(qū)別吧?
關(guān)于有無狀態(tài)和是否restful
他們都需要在服務(wù)端保存信息,我覺得都是stateful
為何有的說Token就是stateless和restful,而Cookie/SessionID 則不是?
可以看下jwt這種token,是不需要存在服務(wù)器的,所有認證信息(用戶id,過期時間等)是被加密在token當(dāng)中的,在服務(wù)端解密token就可以獲取認證信息,不像session需要在服務(wù)器那里,根據(jù)cookie來取回狀態(tài)。
至于安全問題,jwt+https基本是很安全的了。這種stateless的token還有個好處是他可以無痛拓展,因為session的文件是存放到磁盤上的,當(dāng)你有第二臺服務(wù)器時,為了共享登陸,你不得不把session文件轉(zhuǎn)移到redis或其他介質(zhì)上,而jwt本身自帶所有認證信息,直接使用
很多人是按session的方式來使用token,所以覺得兩者一樣。
session思維是這樣:傳遞sessionID或者所謂的token到服務(wù)端,然后服務(wù)端根據(jù)這個鍵值找到用戶數(shù)據(jù),也許是session文件,也許在redis里,然后讀取里面的數(shù)據(jù)uid=1,至此用戶身份確立。
而真正的token思維是這樣:uid=1直接保存在客戶端,當(dāng)然不會只保留這么簡單的數(shù)據(jù),很容易偽造。實際保存數(shù)據(jù)可能是這樣uid=1|6166b2002fdcb5df,后面一部分簽名是根據(jù)第一部分數(shù)據(jù)加密所得,而加密算法只有服務(wù)端知道,你就沒辦法偽造數(shù)據(jù)了。服務(wù)端獲取這個token后,對第一部分數(shù)據(jù)驗簽,和第二部分比對,如果一致,直接確立用戶身份uid=1。整個操作直接在內(nèi)存中運算,不需要讀取session文件或redis。你甚至可以把整個用戶信息uid=1&nickname=xxx&money=1000保存到token里。
比如常用的JWT,是用 . 分割成3部分,每部分再base64_encode,但思路是一樣的。
雖然我不是大神,但是可以介紹一個大神
Token 認證的來龍去脈 segmentfault.com/a/1190000013010835 by 邊城
如果我們把所有狀態(tài)信息都附加在 Token 上,服務(wù)器就可以不保存。但是服務(wù)端仍然需要認證 Token 有效。不過只要服務(wù)端能確認是自己簽發(fā)的 Token,而且其信息未被改動過,那就可以認為 Token 有效——“簽名”可以作此保證。平時常說的簽名都存在一方簽發(fā),另一方驗證的情況,所以要使用非對稱加密算法。但是在這里,簽發(fā)和驗證都是同一方,所以對稱加密算法就能達到要求,而對稱算法比非對稱算法要快得多(可達數(shù)十倍差距)。更進一步思考,對稱加密算法除了加密,還帶有還原加密內(nèi)容的功能,而這一功能在對 Token 簽名時并無必要——既然不需要解密,摘要(散列)算法就會更快??梢灾付艽a的散列算法,自然是 HMAC。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。