JSON WEB Token(JWT)

最近面試被問及單點登錄怎麼解決?本身的項目先後端分離,本身實現token認證,token有失效時間,token中包含用戶基本的信息。且一個當用戶從新登錄後,原來的token就會失效,這麼安全的一個token怎麼就被別人認爲不安全了呢?本身孤陋寡聞,被問及jwt?沒聽過的名詞,一查rfc,原來這麼回事,和本身實現的token認證徹底差很少嘛,並且比jwt自己更安全,即便token被泄露,只須要用戶從新登錄認證一次,泄露的token當即失效,但jwt不同,它若是泄露,在有效期內,依然有效,不可控。不過應該也能經過技術手段解決這種問題git

JSON WEB Token (JWT)

摘要

JSON Web Token(JWT) 是一個簡潔,二者傳輸之間是URL安全的方式。
這個聲明在JWT中被編碼爲JSON對象被用於負載(payload)(JWS)簽名結構或做爲一個明文的
JSON Web 加密(JWE)結構,以MAC(消息受權碼)或加密方式使這個聲明爲數字簽名或完整性保護web

  • 1 介紹
  • 2 術語
  • 3 JWT概述
  • 3.1 JWT例子
  • 4 JWT聲明
  • 4.1 註冊聲明名稱
  • 4.1.1 iss(Issuer)聲明
  • 4.1.2 sub(Subject)聲明
  • 4.1.3 aud(Audience)聲明
  • 4.1.4 exp(Expiration Time)聲明
  • 4.1.5 nbf(Not Before)聲明
  • 4.1.6 iat(Issued At)聲明
  • 4.1.7 jti(JWT ID)聲明
  • 4.2 公共聲明名稱
  • 4.3 私有聲明名稱
  • 5 JOSE 頭部
  • 5.1 typ(Type)頭部參數
  • 5.2 cty(Content Type)頭部參數
  • 5.3 將聲明覆製爲頭部參數
  • 6 非安全(Unsecured)的JWTs
  • 6.1 非安全的JWTs例子
  • 7 建立和驗證JWTs
  • 7.1 建立一個JWT
  • 7.2 驗證一個JWT
  • 7.3 字符串比較規則
  • 8 實現要求
  • 9 URI是一個JWT
  • 10 IANA思考
  • 10.1 JSON Web Token聲明註冊
  • 10.1.1 註冊模版
  • 10.1.2 初始化註冊內容
  • 10.2 子命名空間註冊 urn:ietf:params:oauth:token-type:jwt
  • 10.2.1 註冊內容
  • 10.3 媒體類型註冊
  • 10.3.1 註冊內容
  • 10.4 頭部參數名稱註冊
  • 10.4.1 註冊內容
  • 11 安全考慮
  • 11.1 信任依據
  • 11.2 簽名或加密順序
  • 12 隱私考慮
  • 13 參考
  • 13.1 規範參考
  • 13.2 信息性參考
  • 附錄A JWT例子
  • a.1 JWT加密示例
  • a.2 JWT嵌套示例
  • 附錄B JWTs到SAML關係斷言
  • 附錄C JWTs到SWTs(簡單Web token)關係

1.介紹

JWT 是一個簡潔聲明格式,同於空間受限的環境,如HTTP受權頭部和URI查詢參數。
JWT將聲明編碼爲JSON對象用於傳輸。它使用一個JWS的數據結構或JWE的數據結構。
JWT與jot單詞發音同樣面試

2.術語

JWS定義規範json

  • JSON Web Signature(JWS)
  • Base64uri Encoding
  • Header parameter
  • JOSE Header
  • JWS Compact Serialization
  • JWS payload
  • JWS Signature
  • Unsecured JWS

JWE定義規範後端

  • JSON Web Encryption(JWE)
  • Content Encryption Key(CEK)
  • JWE Compact Serialization
  • JWE Encrypted Key
  • JWE Initialization Vector

Internet Security Glossary定義規範安全

  • Ciphertext
  • Digital Signature
  • Message Authentication Code(MAC)
  • Plaintext

JSON Web Token(JWT)數據結構

  • 一個字符串的集合聲明做爲一個JSON對象編碼於JWS或JWE結構內,使這個聲明變爲數字簽名或MAC或加密

JWT Claims Set前後端分離

  • 包含由JWT傳輸的聲明的JSON對象

Claim編碼

  • 關於某個主題的一條信息,一個聲明表示由一個名稱和值組成的
  • Claim Name
    這個名稱是聲明的一部分,老是一個字符串類型
  • Claim Value
    這個值是聲明的一部分,一個聲明的值能夠是任意的JSON對象
  • Nested JWT 使用嵌套簽名和/或加密的JWT,在嵌套的JWT中,被用做一個有效載荷或明文值分別包含JWS或JWE結構
相關文章
相關標籤/搜索