JWT--- json web token 服務(wù)端身份驗證使用心得

JWT--- json web token 服務(wù)端身份驗證使用心得

一臀稚、為什么使用jwt

JSON Web Token(JWT)是目前最流行的跨域身份驗證解決方案,

  1. 傳統(tǒng)身份驗證手段session
  • 通過在客戶端cookie中存儲session id 输吏,

  • 發(fā)起請求時攜帶cookie诫尽,

  • 服務(wù)器根據(jù)cookie存儲的session id 到臨時文件夾中查找對應(yīng)的session

  • 讀取session信息并對比數(shù)據(jù),達到確認身份的目的

這種方式的問題是沒有分布式架構(gòu)佩耳,擴展不易留夜,如果只使用一臺服務(wù)器,該模式?jīng)]有問題撵摆,如果使用多臺服務(wù)器集群,則需要一個統(tǒng)一的session數(shù)據(jù)庫來保存信息害晦,這樣負載均衡下特铝,各個服務(wù)器才能實現(xiàn)數(shù)據(jù)共享,達到統(tǒng)一驗證的效果壹瘟;另一個問題是會產(chǎn)生較大的I/O 開銷鲫剿,加大服務(wù)器壓力

二、jwt介紹

使用過程

  1. 用戶登錄后稻轨,服務(wù)端生成一個唯一字符串并返回灵莲,成為token (令牌)

  2. 用戶后續(xù)操作攜帶都token,服務(wù)端獲取token并進行身份驗證,token不正確或者過期均攔截后續(xù)操作

結(jié)構(gòu)介紹

  1. 分為三個部分殴俱,header,payload,sign 分別成為頭部政冻,有效載荷,簽名

  2. header:


{

    "typ":"JWT",

    "alg":"HS256"

}

一般包括兩部分线欲,typ名稱明场,alg表示簽名使用的算法,

  1. payload:

{

  "iss":"發(fā)行人",

    "exp":"到期時間",

    "sub":"主題",

    "aud":"用戶",

    "nbf":"在此之前不可用",

    "iat":"發(fā)布時間",

    "jti":"jwt id 用于標(biāo)識該jwt",

    "username":"admin",

    "timestamp" :"時間戳"

}

有效載荷包含默認字段和自定義字段

  1. sign簽名哈希:

$header_str = base64_encode($header);

$payload_str = base64_encode($payload);

$secret = "自定義密鑰";

$sign = hash_hmac("HS256",$header_str.$payload_str,$secret)

簽名哈希由頭和有效荷載連接后,添加自定義的密鑰后按照指定的加密方式生成l

  1. 最終token:

header 李丰、 payload苦锨、sign 由 . 連接為一個字符串后 組成token

使用方法

  1. 客戶端接收服務(wù)器返回的JWT,將其存儲在Cookie或localStorage中趴泌。

  2. 此后舟舒,客戶端將在與服務(wù)器交互中都會帶JWT。如果將它存儲在Cookie中嗜憔,就可以自動發(fā)送秃励,但是不會跨域,因此一般是將它放入HTTP請求的Header Authorization字段中痹筛。

  3. Authorization: Bearer

  4. 當(dāng)跨域時莺治,也可以將JWT被放置于POST請求的數(shù)據(jù)主體中;

問題和趨勢

  1. JWT默認不加密帚稠,但可以加密。生成原始令牌后床佳,可以使用改令牌再次對其進行加密滋早。

  2. 當(dāng)JWT未加密方法是,一些私密數(shù)據(jù)無法通過JWT傳輸砌们。

  3. JWT不僅可用于認證杆麸,還可用于信息交換搁进。善用JWT有助于減少服務(wù)器請求數(shù)據(jù)庫的次數(shù)。

  4. JWT的最大缺點是服務(wù)器不保存會話狀態(tài)昔头,所以在使用期間不可能取消令牌或更改令牌的權(quán)限饼问。也就是說,一旦JWT簽發(fā)揭斧,在有效期內(nèi)將會一直有效莱革。

  5. JWT本身包含認證信息,因此一旦信息泄露讹开,任何人都可以獲得令牌的所有權(quán)限盅视。為了減少盜用,JWT的有效期不宜設(shè)置太長旦万。對于某些重要操作闹击,用戶在使用時應(yīng)該每次都進行進行身份驗證。

  6. 為了減少盜用和竊取成艘,JWT不建議使用HTTP協(xié)議來傳輸代碼赏半,而是使用加密的HTTPS協(xié)議進行傳輸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末淆两,一起剝皮案震驚了整個濱河市除破,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琼腔,老刑警劉巖瑰枫,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丹莲,居然都是意外死亡光坝,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門甥材,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盯另,“玉大人,你說我怎么就攤上這事洲赵≡Ч撸” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵叠萍,是天一觀的道長芝发。 經(jīng)常有香客問我,道長苛谷,這世上最難降的妖魔是什么辅鲸? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮腹殿,結(jié)果婚禮上独悴,老公的妹妹穿的比我還像新娘例书。我一直安慰自己,他們只是感情好刻炒,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布决采。 她就那樣靜靜地躺著,像睡著了一般坟奥。 火紅的嫁衣襯著肌膚如雪树瞭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天筏勒,我揣著相機與錄音移迫,去河邊找鬼。 笑死管行,一個胖子當(dāng)著我的面吹牛厨埋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捐顷,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼荡陷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了迅涮?” 一聲冷哼從身側(cè)響起废赞,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叮姑,沒想到半個月后唉地,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡传透,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年耘沼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朱盐。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡群嗤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兵琳,到底是詐尸還是另有隱情狂秘,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布躯肌,位于F島的核電站者春,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏羡榴。R本人自食惡果不足惜碧查,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望校仑。 院中可真熱鬧忠售,春花似錦、人聲如沸迄沫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羊瘩。三九已至泰佳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尘吗,已是汗流浹背逝她。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留睬捶,地道東北人黔宛。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像擒贸,于是被迫代替她去往敵國和親臀晃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361