<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      認證協議:OAuth 2.0 和 JWT的學習總結

      生活化場景說明OAuth 2.0 和 JWT

      • OAuth 2.0(酒店門禁)

      用戶(房客)把門禁權限委托給酒店前臺(授權服務器),清潔工(第三方應用)拿到臨時門卡(access token)就能進門打掃,但開不了保險箱(敏感操作)。這個場景能覆蓋四個核心角色和token流轉邏輯。

      • JWT(帶防偽印章的體檢報告)

      醫生(資源服務器)拆開信封就能看到所有健康數據(payload),印章(簽名)保證沒人篡改

      • OAuth 是鑰匙 ;JWT 是信息包

      JWT常作為OAuth的token載體。就像酒店給的門卡(OAuth token)里嵌入了房客身份信息(JWT),保安刷卡時能直接顯示房號而不查數據庫
      微信登錄用OAuth流程,返回的token如果是JWT格式就能直接解析用戶昵稱

      一、OAuth 2.0:授權委托協議 (借鑰匙協議)

      核心問題 OAuth 解決

      • 想象一下:你有一個裝滿私人照片的網盤(資源服務器)?,F在有一個在線打印店(第三方應用)說可以幫你把照片打印成精美相冊。打印店需要訪問你的照片才能工作。
      • 最差的做法: 你把網盤的用戶名和密碼直接告訴打印店。這太危險了!打印店不僅能看到你所有照片,還能刪除、修改它們,甚至用你的賬號干別的事。
      • OAuth 要解決的問題: 如何讓打印店只獲得訪問你照片的權限,而不需要知道你的網盤密碼?并且,你還能控制這個權限的范圍(比如只讀)和有效期。

      OAuth 2.0 是怎么做的?(授權碼模式 - 最常見)

      把它想象成一個“借鑰匙”的過程,涉及幾個角色:

      1. 你 (資源擁有者): 擁有照片的人。
      2. 你的網盤 (資源服務器): 存放照片的地方。
      3. 打印店 (第三方應用/客戶端): 想訪問你照片的應用。
      4. 網盤公司 (授權服務器): 管理用戶賬號和權限發放的官方機構(通常和資源服務器是同一家)。

      步驟:

      1. 打印店請求授權: 你去打印店下單。打印店說:“我們需要訪問你網盤里‘度假照片’文件夾的照片。請去網盤公司官方認證頁面確認一下?!?/li>
      2. 你登錄并授權 (關鍵!): 你被重定向到網盤公司的官方登錄頁面。你輸入自己的用戶名和密碼(只給網盤公司看?。?/strong>。登錄后,頁面問你:“打印店申請訪問你的‘度假照片’文件夾,權限是【只讀】,有效期1小時。同意嗎?”
      3. 你同意授權: 你點擊“同意”。網盤公司認證服務器記錄下你的授權決定。
      4. 授權碼: 網盤公司服務器生成一個一次性的、短命的“授權碼”,通過瀏覽器重定向回傳給打印店。
      5. 打印店換取“鑰匙”: 打印店拿到授權碼后,連同它自己的身份證明(App ID + Secret)直接(不經過你的瀏覽器)發送給網盤公司的授權服務器,說:“看,用戶給了我授權碼,請給我真正的‘鑰匙’吧?!?/li>
      6. 發放“鑰匙”: 網盤公司授權服務器驗證打印店的身份和授權碼有效后,頒發一個 Access Token (訪問令牌)。這就是那把“鑰匙”!同時可能還會發一個 Refresh Token (刷新令牌,用于在鑰匙快過期時換新鑰匙)。
      7. 打印店使用“鑰匙”: 打印店拿著 Access Token 去訪問你的網盤(資源服務器),說:“用戶授權我來拿‘度假照片’文件夾的照片,這是憑證(Token)?!?網盤服務器驗證這個 Token 確實是自家授權服務器發的、且有效、且權限匹配(只讀、特定文件夾),就把照片給打印店了。
      8. 你用后即焚 (可選): 打印店完成工作后,可以主動歸還鑰匙(使 Token 失效),或者鑰匙自己到期(Token 過期)。

      OAuth 2.0 的精髓

      • 你不需要告訴第三方應用你的密碼! 密碼只給受信任的官方(授權服務器)。
      • 細粒度控制: 你可以控制應用能訪問什么(范圍 Scope:如只讀照片)、能訪問多久(Token 有效期)。
      • 隨時撤銷: 你可以在網盤公司的設置里隨時撤銷對某個應用的授權,那把“鑰匙”就立刻失效了。
      • 應用獨立認證: 第三方應用也需要向授權服務器證明自己是誰(App ID + Secret)。

      通俗總結 OAuth 2.0: 它是一套標準流程,讓你可以安全地授權一個應用(比如打印店)去訪問你在另一個服務(比如網盤)上的特定資源(比如照片),而無需把你的密碼告訴那個應用。核心是頒發一個代表特定權限的、有時效的“令牌”(Access Token)給第三方應用。


      二、JWT:信息包裝和驗證標準 (帶印章的紙條)

      核心問題 JWT 解決

      • 在 OAuth 2.0 里,最后給第三方應用的是 Access Token。這個 Token 是什么?可以是一個隨機的字符串(像酒店房卡號),服務器需要查數據庫才能知道這個 Token 對應哪個用戶、有什么權限。
      • JWT 提供另一種思路: 能不能把這個 Token 本身就包含用戶信息和權限?就像一個自帶信息的證件,服務器只要驗證這個證件是真實有效的,就能直接讀取里面的信息,不用每次都查數據庫。這就是 JWT。

      JWT 是什么?

      JWT 全稱 JSON Web Token。你可以把它想象成一張經過防偽處理、自帶信息的紙條。它由三部分組成,用點 . 連接:Header.Payload.Signature

      1. Header (頭): 說明這個 JWT 的類型(JWT)和用了什么簽名算法(比如 HMAC SHA256 或 RSA)。就像紙條的抬頭,說明了紙條的格式和防偽方式。
        • 示例: {"alg": "HS256", "typ": "JWT"} (然后用 Base64 編碼)
      2. Payload (載荷): 這里存放實際要傳遞的信息,也叫 Claims (聲明)。通常包含:
        • 標準聲明:如 簽發者 (iss)、過期時間 (exp)、受眾 (aud)、生效時間 (iat) 等。
        • 自定義聲明: 這才是核心! 比如用戶ID (sub)、用戶名、用戶角色、權限范圍 (scope) 等。你想讓 Token 攜帶什么信息都可以放這里(注意不要放敏感信息如密碼)。
        • 示例: {"sub": "1234567890", "name": "小明", "iat": 1516239022, "exp": 1516239322, "scope": "read:photos"} (然后用 Base64 編碼)
      3. Signature (簽名): 這是最關鍵的部分,用于防偽!
        • 服務器用 Header 里聲明的算法,一個只有服務器自己知道的密鑰 (Secret Key)私鑰 (Private Key),對 Header + '.' + Payload 進行簽名計算。
        • 計算結果就是 Signature。它像是一個獨特的“防偽印章”或“指紋”。

      最終 JWT = Base64(Header) + '.' + Base64(Payload) + '.' + Base64(Signature)

      JWT 怎么工作?(以 OAuth Access Token 為例)

      1. 簽發: 授權服務器驗證用戶身份和授權后,生成包含用戶信息和權限的 Payload,加上 Header,然后用密鑰生成 Signature,組合成 JWT 發給客戶端(打印店)。
      2. 傳遞: 客戶端拿著這個 JWT(作為 Access Token)去訪問資源服務器(網盤)。
      3. 驗證: 資源服務器收到 JWT:
        • 檢查簽名: 用預先和授權服務器約定好的密鑰(或授權服務器的公鑰)重新計算 Header + '.' + Payload 的簽名。如果計算出來的簽名和 JWT 里的 Signature 完全一致,就證明:
          • 這個 JWT 是合法的授權服務器簽發的(因為只有它知道密鑰或持有私鑰)。
          • JWT 的內容(Header + Payload)在傳輸過程中沒有被篡改(改一點簽名就對不上)。
        • 檢查有效期: 讀取 Payload 里的 exp (過期時間) 和 iat (簽發時間),確認 Token 沒有過期。
        • 檢查權限: 讀取 Payload 里的 scope 等信息,確認客戶端請求的操作(如讀取照片)在授權范圍內。
      4. 處理請求: 驗證通過后,資源服務器直接讀取 Payload 里的信息(如用戶ID sub),就知道是誰在訪問、有什么權限,然后處理請求(返回照片)。整個過程不需要去查數據庫驗證 Token 有效性!

      JWT 的精髓

      • 自包含: Token 本身攜帶了有用的信息(Payload)。
      • 可驗證: 通過簽名機制,接收方可以驗證 Token 是誰發的、內容是否被篡改。簽名是核心安全機制。
      • 無狀態: 資源服務器不需要存儲 Token 的狀態(如 Session),只需驗證簽名和有效期即可。這使得擴展(加服務器)更容易。
      • 靈活: Payload 可以自定義各種你需要的信息。

      通俗總結 JWT: 它是一種標準格式的“加密小紙條”(JSON Web Token)。這個小紙條自身就寫明了包含哪些用戶信息(Payload),并且帶有一個特殊的防偽印章(Signature)。服務器只需要驗證這個印章是真的(用密鑰或公鑰),就能完全信任紙條上寫的信息是真實、未被篡改的。它常用于作為 OAuth 2.0 的 Access Token,讓資源服務器能快速驗證請求者身份和權限。


      OAuth 2.0 和 JWT 的關系

      • OAuth 2.0 是一個授權框架: 它定義了流程(怎么借鑰匙),規定了角色(你、網盤、打印店、網盤公司),以及核心概念(授權、Access Token)。
      • JWT 是一種 Token 的實現方式: 它定義了 Access Token(鑰匙)可以長什么樣、里面裝什么信息、如何保證這個鑰匙是真實可靠的(通過簽名)。
      • OAuth 2.0 不強制規定 Token 格式: Access Token 可以是一個隨機字符串(不透明令牌),也可以是一個 JWT(自包含令牌)。JWT 是 OAuth 2.0 中 Access Token 的一種非常流行和有用的格式選擇。
      • JWT 不局限于 OAuth: JWT 也可以用在其他需要安全傳遞信息的場景,比如用戶登錄后,服務器生成一個包含用戶ID的 JWT 返回給瀏覽器(作為 Session Token),瀏覽器后續請求帶上它,服務器驗證簽名就能知道用戶是誰。

      簡單來說:OAuth 2.0 是“怎么安全地借鑰匙”的規則說明書,而 JWT 是一種“自帶身份信息和防偽標識的智能鑰匙”的制作標準。 OAuth 2.0 可以選擇使用 JWT 這種智能鑰匙。

      posted @ 2025-08-12 13:50  hqq的進階日記  閱讀(58)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美 日韩 国产 成人 在线观看| 性欧美暴力猛交69hd| 久久精品不卡一区二区| 亚洲精品一区二区三区中文字幕| 国产高清亚洲一区亚洲二区| 亚洲第一精品一二三区| 无码中文字幕日韩专区| 国产日韩av一区二区在线| 国产成人综合95精品视频| 野外做受三级视频| 国产人妻人伦精品婷婷| 伊人色综合一区二区三区影院视频 | 国产第一页屁屁影院| 亚洲日本韩国欧美云霸高清| 国产一区二区三区九精品| 全球成人中文在线| 亚洲男人天堂2018| 国产精品国三级国产专区| 欧美成aⅴ人高清免费| 国产精品一区二区传媒蜜臀| 中文字幕日韩有码av| 国产成人高清亚洲综合| 亚洲av永久无码精品天堂久久| 米奇影院888奇米色99在线| 亚洲成人网在线观看| 国产成人亚洲精品在线看| 天堂一区二区三区av| 久久国产精品不只是精品| 亚洲精品漫画一二三区| 国产精欧美一区二区三区| 国产一区二区精品久久呦| 国产成人精品久久综合| 开心激情站一区二区三区| 综合色一色综合久久网| 亚洲欧美日韩愉拍自拍美利坚| 亚洲熟女国产熟女二区三区| 国产综合视频一区二区三区| 九九综合va免费看| 久久99国内精品自在现线| 精品无码国产日韩制服丝袜| 四虎永久在线高清免费看|