日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

憑證管理揭秘:Cookie-Session 與 JWT 方案的對(duì)決

來(lái)源: 責(zé)編: 時(shí)間:2024-04-26 17:31:12 211觀看
導(dǎo)讀概述在上一篇文章我們聊完了授權(quán)的過(guò)程,在服務(wù)器對(duì)客戶端完成授權(quán)之后,服務(wù)器會(huì)給客戶端頒發(fā)對(duì)應(yīng)的憑證,客戶端持有該憑證訪問(wèn)服務(wù)端,服務(wù)器便能知道你是誰(shuí),你有什么權(quán)限等信息。這一章我們具體聊聊常見(jiàn)的憑證管理技術(shù)有哪

概述

在上一篇文章我們聊完了授權(quán)的過(guò)程,在服務(wù)器對(duì)客戶端完成授權(quán)之后,服務(wù)器會(huì)給客戶端頒發(fā)對(duì)應(yīng)的憑證,客戶端持有該憑證訪問(wèn)服務(wù)端,服務(wù)器便能知道你是誰(shuí),你有什么權(quán)限等信息。這一章我們具體聊聊常見(jiàn)的憑證管理技術(shù)有哪些。CMq28資訊網(wǎng)——每日最新資訊28at.com

在軟件架構(gòu)中,關(guān)于憑證如何存儲(chǔ)和傳遞,一直有兩種不同的解決思路,兩種不同的解決方式,實(shí)際上反映了兩種不同的架構(gòu)思路:CMq28資訊網(wǎng)——每日最新資訊28at.com

  1. 一種是把所有狀態(tài)信息都放在服務(wù)器端 (Cookie-Session 方案)
  2. 一種是把所有狀態(tài)將信息存儲(chǔ)在客戶端(JWT 方案)

在互聯(lián)網(wǎng)早期,這個(gè)問(wèn)題早就有了明確的答案。大多數(shù)應(yīng)用都采用了 “Cookie-Session” 的方法,這種方法通過(guò)在服務(wù)器上存儲(chǔ)用戶狀態(tài),來(lái)實(shí)現(xiàn)用戶身份的識(shí)別和信息的傳遞。這種方法在很長(zhǎng)一段時(shí)間里都是主流。CMq28資訊網(wǎng)——每日最新資訊28at.com

然而,隨著微服務(wù)和分布式系統(tǒng)的興起,我們發(fā)現(xiàn)由于 CAP 的限制,服務(wù)器端存儲(chǔ)狀態(tài)信息的方式開(kāi)始面臨很多問(wèn)題(微服務(wù)要求服務(wù)端本身是無(wú)狀態(tài),才能實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)縮容)。這就迫使我們重新考慮被放棄的客戶端狀態(tài)存儲(chǔ)方法。在這個(gè)背景下,JWT(JSON Web Token)的令牌的方案開(kāi)始受到關(guān)注。JWT 是一種在客戶端存儲(chǔ)用戶狀態(tài)信息的方式,它允許用戶在不同的服務(wù)器之間自由切換,而不需要重新登錄。這種特性在分布式系統(tǒng)中非常有用。但是要明白,JWT 和 Cookie-Session 只是對(duì)授權(quán)信息存儲(chǔ)的主體(客戶端,服務(wù)端)不同,各有優(yōu)勢(shì),合適場(chǎng)景不同,不存在誰(shuí)比誰(shuí)要先進(jìn)的問(wèn)題。在本節(jié)中,我們將探討 Cookie-Session 和 JWT 兩種方案的相同點(diǎn)和不同點(diǎn),幫你更好地理解這兩種方案的優(yōu)缺點(diǎn),以及它們?cè)诓煌瑘?chǎng)景下的應(yīng)用。CMq28資訊網(wǎng)——每日最新資訊28at.com

cookie-session

總所周知,因?yàn)?HTTP 是無(wú)狀態(tài)協(xié)議,所以 Cookie-Session 的原理其實(shí)很簡(jiǎn)單,就是解決 HTTP 協(xié)議無(wú)狀態(tài)的問(wèn)題,在 RFC 6265 中定義了 HTTP 的狀態(tài)管理機(jī)制,增加 Set-Cookie 指令,服務(wù)端向客戶端發(fā)送一組信息(標(biāo)識(shí))示例:CMq28資訊網(wǎng)——每日最新資訊28at.com

HTTP/1.1 200 OKContent-type: text/htmlSet-Cookie: session_token=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT; Path=/

客戶端收到指令后在此后一段時(shí)間的 HTTP 請(qǐng)求中都發(fā)給服務(wù)端會(huì)話信息(在 Header 中攜帶 cookie 信息),以便服務(wù)器區(qū)分不同的客戶端:CMq28資訊網(wǎng)——每日最新資訊28at.com

GET /profile HTTP/1.1Host: www.example.comCookie: sessionid=xyzasdzxc123789456

客戶端的 Cookies 里通常只存儲(chǔ)一個(gè)無(wú)意義,不重復(fù)的字符串,通常命名是 sessionid 或 jessionid ,服務(wù)端則根據(jù)該字符串作為 Key,和用戶信息建立關(guān)聯(lián)后存儲(chǔ)在服務(wù)端的內(nèi)存或者緩存中。再輔以一些超時(shí)自動(dòng)清理的措施來(lái)管理會(huì)話。CMq28資訊網(wǎng)——每日最新資訊28at.com

它們的交互過(guò)程如下:CMq28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片CMq28資訊網(wǎng)——每日最新資訊28at.com

這種服務(wù)端的狀態(tài)管理機(jī)制就是 Session,Cookie-Session 也是最傳統(tǒng),但今天依然廣泛應(yīng)用于大量系統(tǒng)中的,由服務(wù)端與客戶端聯(lián)動(dòng)來(lái)完成的狀態(tài)管理機(jī)制。CMq28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

cookie-session 的方案在存儲(chǔ)授權(quán)信息具有以下優(yōu)勢(shì):CMq28資訊網(wǎng)——每日最新資訊28at.com

  1. 安全性:由于狀態(tài)信息都存儲(chǔ)在服務(wù)端,cookie-session 方案在安全性上有天然的優(yōu)勢(shì),能完全規(guī)避上下文信息在傳輸過(guò)程中被篡改的風(fēng)險(xiǎn)
  2. 靈活性:由于存儲(chǔ)在服務(wù)端,服務(wù)端可以存儲(chǔ)各種數(shù)據(jù)對(duì)象,而不僅僅是字符串
  3. 狀態(tài)控制:服務(wù)端維護(hù)狀態(tài)的優(yōu)勢(shì)在于可以根據(jù)自己的意愿隨時(shí)修改,清除上下文信息,可以很輕松實(shí)現(xiàn)用戶強(qiáng)制下線的功能。

Cookie-Session 在單體服務(wù)環(huán)境中是最合適的方案,但是因?yàn)榉?wù)端有狀態(tài),當(dāng)需要水平擴(kuò)展服務(wù)能力,要部署集群時(shí)就開(kāi)始面臨麻煩了。接下來(lái)的 JWT 令牌就是 Cookie-Session 在分布式環(huán)境的替代品,但是不能說(shuō) JWT 要比 Cookie-Session 更加先進(jìn),更不可能全面取代 Cookie-Session 機(jī)制。CMq28資訊網(wǎng)——每日最新資訊28at.com

JWT

當(dāng)服務(wù)端有多臺(tái),并且不能存儲(chǔ)狀態(tài)的時(shí)候,客戶端就要承擔(dān)存儲(chǔ)有狀態(tài)(授權(quán)信息)的職責(zé)了。這就是 JWT 令牌的方案思路。CMq28資訊網(wǎng)——每日最新資訊28at.com

JWT(JSON Web Token)是一種定義在 RFC 7519 標(biāo)準(zhǔn)中的令牌格式,主要應(yīng)用于現(xiàn)代分布式應(yīng)用系統(tǒng)中,經(jīng)常與 OAuth2 協(xié)議配合使用。在深入探討 JWT 的結(jié)構(gòu)之前,我們先來(lái)直觀地了解一下它的基本形式。示例:CMq28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片CMq28資訊網(wǎng)——每日最新資訊28at.com

注意:JWT 令牌不加密,只使用 Base64URL 轉(zhuǎn)碼,所以 JWT 令牌里別放敏感信息,令牌只解決防篡改的問(wèn)題,并不解決防泄漏的問(wèn)題,JWT 令牌都可以在 JWT 官網(wǎng)(https://jwt.io)上進(jìn)行解碼。如圖所示,JWT(JSON Web Token)由三部分組成:Header(頭部)、Payload(負(fù)載)、Signature(簽名)。這三部分之間使用點(diǎn)(.)分隔。CMq28資訊網(wǎng)——每日最新資訊28at.com

Header:Header 部分通常包含令牌的類型(通常是 JWT)和使用的加密算法,例如 HS256:CMq28資訊網(wǎng)——每日最新資訊28at.com

{  "alg": "HS256",  "typ": "JWT"}

Payload:Payload 部分包含所需的聲明,這些聲明可以包括用戶信息或其他相關(guān)數(shù)據(jù)。例如,用戶ID和過(guò)期時(shí)間:CMq28資訊網(wǎng)——每日最新資訊28at.com

{  "sub": "1234567890",  "name": "John Doe",  "iat": 1516239022,  "exp": 1516242622}

負(fù)載部分,JWT 在 RFC 7519 中推薦(非強(qiáng)制約束)了七項(xiàng)聲明名稱(Claim Name),如有需要用到這些內(nèi)容,建議字段名與官方的保持一致:CMq28資訊網(wǎng)——每日最新資訊28at.com

  • iss(Issuer):簽發(fā)人。
  • exp(Expiration Time):令牌過(guò)期時(shí)間。
  • sub(Subject):主題。
  • aud (Audience):令牌受眾。
  • nbf (Not Before):令牌生效時(shí)間。
  • iat (Issued At):令牌簽發(fā)時(shí)間。
  • jti (JWT ID):令牌編號(hào)。

此外在 RFC 8225、RFC 8417、RFC 8485 等規(guī)范文檔,以及 OpenID 等協(xié)議中,都定義有約定好公有含義的名稱,可以參考 IANA JSON Web Token Registry。CMq28資訊網(wǎng)——每日最新資訊28at.com

Signature:Signature 是使用 Header 中指定的算法和一個(gè)密鑰對(duì) Header 和 Payload 進(jìn)行簽名得到的。對(duì)前面兩部分內(nèi)容進(jìn)行加密計(jì)算,以例子里使用的 JWT 默認(rèn)的 HMAC SHA256 算法為例,將通過(guò)以下公式產(chǎn)生簽名值:CMq28資訊網(wǎng)——每日最新資訊28at.com

HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload) , secret)

簽名的意義在于確保負(fù)載中的信息是可信的、沒(méi)有被篡改的,也沒(méi)有在傳輸過(guò)程中丟失任何信息。因?yàn)楸缓灻膬?nèi)容哪怕發(fā)生了一個(gè)字節(jié)的變動(dòng),也會(huì)導(dǎo)致整個(gè)簽名發(fā)生顯著變化。JWT 默認(rèn)使用的 HMAC SHA256 算法是一種密鑰哈希算法,適用于單體應(yīng)用中,因?yàn)榧用芎万?yàn)證都需要由同一授權(quán)服務(wù)完成。在多方或分布式應(yīng)用中,通常使用非對(duì)稱加密算法進(jìn)行簽名。這種情況下,授權(quán)服務(wù)使用私鑰簽名,并通過(guò)遵循 JSON Web Key 規(guī)范公開(kāi)一個(gè)公鑰。這個(gè)公鑰用于驗(yàn)證簽名,使其他服務(wù)能夠獨(dú)立驗(yàn)證 JWT 的真實(shí)性,無(wú)需直接與授權(quán)服務(wù)通信。CMq28資訊網(wǎng)——每日最新資訊28at.com

JWT 令牌的交互流程如下:CMq28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片CMq28資訊網(wǎng)——每日最新資訊28at.com

說(shuō)明:如果是在分布式環(huán)境下,通常會(huì)有單獨(dú)的認(rèn)證服務(wù)器來(lái)負(fù)責(zé)頒發(fā)令牌。CMq28資訊網(wǎng)——每日最新資訊28at.com

發(fā)送令牌

按照 HTTP 協(xié)議的規(guī)范,客戶端可以通過(guò)多種方式使用 HTTP 協(xié)議發(fā)送 JWT 令牌給服務(wù)端。最標(biāo)準(zhǔn)的方式是將 JWT 放在 HTTP 的 Authorization 頭部中,通常與 Bearer 方案一起使用。這種方法簡(jiǎn)單且符合 RESTful API 的最佳實(shí)踐:CMq28資訊網(wǎng)——每日最新資訊28at.com

GET /api/resource HTTP/1.1Host: example.comAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIx......

總結(jié)

JWT 令牌是分布式系統(tǒng)下憑證載體的優(yōu)秀解決方案,它優(yōu)點(diǎn)眾多:CMq28資訊網(wǎng)——每日最新資訊28at.com

  1. 解決了分布式系統(tǒng)下的狀態(tài)信息的管理問(wèn)題,讓服務(wù)端無(wú)狀態(tài),實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)縮容。
  2. 結(jié)構(gòu)簡(jiǎn)單,輕量,憑證本身包含重要信息,服務(wù)端無(wú)需再查詢數(shù)據(jù)庫(kù)
  3. 通過(guò)密鑰對(duì)和簽名的方式,保證憑證信息的無(wú)法被篡改,保證了憑證的真實(shí)性

但是沒(méi)有完美的解決方案,cookie-session 的優(yōu)點(diǎn)也 JWT 也缺點(diǎn):CMq28資訊網(wǎng)——每日最新資訊28at.com

  1. 會(huì)話難以主動(dòng)失效:服務(wù)端難以注銷令牌,如果非要實(shí)現(xiàn),就要把狀態(tài)信息轉(zhuǎn)移存儲(chǔ)到 redis 中。
  2. 攜帶的信息有限:雖然 HTTP 沒(méi)有限制 Header 中可存儲(chǔ)的大小限制,但是 HTTP 服務(wù)端大多都有存儲(chǔ)上限,例如 tomcat 限制 8kb,nginx 限制 4kb
  3. 客戶端令牌泄露風(fēng)險(xiǎn):客戶端令牌存在哪里 ?Cookie ? localStrong ? Indexed ? 存在哪里都有泄露風(fēng)險(xiǎn)。只要拿到令牌就能冒認(rèn)客戶端身份
  4. 服務(wù)端無(wú)狀態(tài)會(huì)導(dǎo)致很多常見(jiàn)的功能難以實(shí)現(xiàn),例如:踢人下線,統(tǒng)計(jì)在線人數(shù)等等。。

本文鏈接:http://m.www897cc.com/showinfo-26-85860-0.html憑證管理揭秘:Cookie-Session 與 JWT 方案的對(duì)決

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Go 語(yǔ)言入門指南:基礎(chǔ)語(yǔ)法和常用特性解析

下一篇: 大廠的OLAP架構(gòu)啥樣的?

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
另类春色校园亚洲| 亚洲欧美日韩电影| 在线精品视频免费观看| 亚洲国产老妈| 一区二区精品国产| 欧美在线视频观看免费网站| 久久午夜精品一区二区| 欧美另类在线播放| 国产精品国产成人国产三级| 国产亚洲精品自拍| 91久久黄色| 亚洲综合精品自拍| 久久九九国产| 欧美看片网站| 国产小视频国产精品| 亚洲国产中文字幕在线观看| 亚洲一区二区成人| 久久综合狠狠| 国产精品高精视频免费| 伊人成人网在线看| 中文成人激情娱乐网| 久久久久久久久伊人| 欧美日韩精品一区二区在线播放 | 欧美成人精品一区二区三区| 国产精品v片在线观看不卡| 国产一区二区三区四区在线观看 | 午夜久久99| 欧美国产精品久久| 国产午夜精品视频免费不卡69堂| 亚洲精品精选| 久久久综合免费视频| 国产精品v日韩精品| 亚洲国产精品日韩| 欧美在线3区| 欧美日韩一区二区三区四区五区 | 国产日韩欧美不卡| 一本一本a久久| 六月婷婷一区| 国产色爱av资源综合区| 中文成人激情娱乐网| 欧美成人免费全部| 国产一区二区三区高清播放| 在线一区二区三区四区五区| 女人香蕉久久**毛片精品| 国产欧美一区二区三区在线看蜜臀| 日韩视频―中文字幕| 久久人人爽人人| 国产农村妇女精品一二区| av成人动漫| 欧美电影免费观看网站| 韩国三级电影一区二区| 亚洲男人av电影| 欧美日韩视频一区二区| 亚洲激情欧美| 麻豆成人av| 精品9999| 久久久久久久久久久久久9999 | 99综合在线| 欧美成人免费在线视频| 激情欧美国产欧美| 欧美一区午夜精品| 国产精品一区二区你懂的| 一本色道久久综合一区| 欧美国产日韩精品免费观看| 尤物九九久久国产精品的特点| 欧美一区二区三区免费观看视频 | 欧美日韩不卡一区| 亚洲成人在线视频播放| 欧美在线免费观看亚洲| 国产精品视频内| 正在播放亚洲一区| 欧美日韩一区二区在线| 99re视频这里只有精品| 欧美激情视频一区二区三区在线播放 | 麻豆91精品| 伊人精品久久久久7777| 久久久久久久一区| 激情视频一区二区| 久久亚洲图片| 在线观看欧美成人| 免费亚洲电影| 亚洲国产日韩美| 欧美护士18xxxxhd| 亚洲精品字幕| 欧美日韩91| 中国女人久久久| 国产精品久久久久久影视| 亚洲字幕一区二区| 国产乱码精品一区二区三| 午夜日韩激情| 国产亚洲一二三区| 久久人人精品| 亚洲欧洲另类国产综合| 欧美激情综合五月色丁香小说| 亚洲美女视频在线免费观看| 欧美日韩国产bt| 亚洲午夜电影| 国产精品亚洲激情| 欧美综合77777色婷婷| 狠狠久久亚洲欧美| 免费日韩成人| 99国产麻豆精品| 国产精品福利久久久| 性欧美在线看片a免费观看| 国产一区二区三区无遮挡| 久久综合伊人77777麻豆| 亚洲激情视频网站| 欧美日本中文| 午夜精品99久久免费| 激情国产一区二区| 欧美日韩不卡视频| 午夜影视日本亚洲欧洲精品| 精品成人免费| 欧美日韩国产成人在线| 亚洲欧美日韩中文视频| 激情久久中文字幕| 欧美理论视频| 羞羞视频在线观看欧美| 在线观看久久av| 欧美日韩精品免费| 欧美一级成年大片在线观看| 欲香欲色天天天综合和网| 欧美日本中文字幕| 欧美一区二区三区在线观看视频 | 欧美视频在线观看一区| 欧美在线一二三四区| 亚洲国产日韩在线一区模特| 欧美调教vk| 久久久999| 99www免费人成精品| 国产乱码精品一区二区三区av| 久久永久免费| 亚洲一级在线观看| 1769国产精品| 国产精品久久久久久户外露出| 久久精品一区二区三区中文字幕| 亚洲国产综合91精品麻豆| 国产精品青草久久久久福利99| 久久视频一区| 亚洲免费中文| 亚洲激情一区二区三区| 国产欧美日韩不卡免费| 欧美激情亚洲国产| 欧美在线视频观看免费网站| 亚洲精品免费一区二区三区| 国产手机视频一区二区| 欧美日韩成人一区二区| 久久久五月婷婷| 亚洲伊人一本大道中文字幕| 亚洲国产精品成人精品| 国产欧美在线观看| 欧美女激情福利| 久久婷婷亚洲| 午夜精品一区二区三区在线视 | 亚洲综合久久久久| 亚洲人成人77777线观看| 国产亚洲精品激情久久| 一区二区免费在线播放| 国内精品久久久久久久影视蜜臀| 欧美色图麻豆| 欧美成人精品h版在线观看| 欧美综合二区| 亚洲综合欧美日韩| 99视频超级精品| 亚洲成在人线av| 国产欧美日韩在线播放| 欧美日韩亚洲不卡| 裸体丰满少妇做受久久99精品 | 欧美午夜视频| 欧美欧美午夜aⅴ在线观看| 久久亚洲精品中文字幕冲田杏梨| 亚洲欧美在线免费| 99香蕉国产精品偷在线观看| 亚洲国产成人精品久久久国产成人一区| 国产麻豆视频精品| 国产精品xnxxcom| 欧美激情一区二区| 麻豆视频一区二区| 久久久777| 欧美一区影院| 午夜电影亚洲| 亚洲永久在线观看| 在线性视频日韩欧美| 亚洲日本激情| 91久久国产综合久久91精品网站| 精品二区视频| 韩国av一区二区三区| 国产欧美一区二区三区另类精品| 国产精品家庭影院| 欧美视频在线视频| 欧美日韩一区在线观看视频| 欧美精品videossex性护士| 欧美18av| 欧美激情一区二区三区成人 | 狠狠综合久久| 激情久久五月天| 一区二区在线视频观看| 黄网动漫久久久| 亚洲成人在线视频网站| 激情六月婷婷综合| 永久免费视频成人| 在线观看欧美激情| 亚洲国内高清视频| 亚洲美女免费精品视频在线观看|