最近面試被問及單點登錄怎麼解決?本身的項目先後端分離,本身實現token認證,token有失效時間,token中包含用戶基本的信息。且一個當用戶從新登錄後,原來的token就會失效,這麼安全的一個token怎麼就被別人認爲不安全了呢?本身孤陋寡聞,被問及jwt?沒聽過的名詞,一查rfc,原來這麼回事,和本身實現的token認證徹底差很少嘛,並且比jwt自己更安全,即便token被泄露,只須要用戶從新登錄認證一次,泄露的token當即失效,但jwt不同,它若是泄露,在有效期內,依然有效,不可控。不過應該也能經過技術手段解決這種問題git
JSON Web Token(JWT) 是一個簡潔,二者傳輸之間是URL安全的方式。
這個聲明在JWT中被編碼爲JSON對象被用於負載(payload)(JWS)簽名結構或做爲一個明文的
JSON Web 加密(JWE)結構,以MAC(消息受權碼)或加密方式使這個聲明爲數字簽名或完整性保護web
JWT 是一個簡潔聲明格式,同於空間受限的環境,如HTTP受權頭部和URI查詢參數。
JWT將聲明編碼爲JSON對象用於傳輸。它使用一個JWS的數據結構或JWE的數據結構。
JWT與jot單詞發音同樣面試
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結構