28

我一直在用Java編寫一個RESTful服務。這是我瞭解到現在(糾正我,如果我錯了):JSON Web Signature(JWS)和JSON Web Token(JWT)之間有什麼區別?

令牌授權使用完成JSON Web令牌(智威湯遜)它有三個部分:標頭,有效載荷和祕密(在客戶端和服務器之間共享)。

我瞭解了這個概念,並且在閱讀JWT的同時,偶然發現了JSON Web簽名(JWS)

JWS也是一個類似於JWT的編碼實體,具有標頭,有效載荷和共享密鑰。

問題:這兩個概念,即JWT和JWS有什麼區別?如果他們在技術上相似,那麼他們的執行有什麼不同?

這是我第一次使用基於令牌的身份驗證,所以有可能我誤解了這個概念。

P.S.在瀏覽this website上的示例時,我瞭解了JWS。

回答

27

JWT實際上使用 JWS其簽名,從規格:

JSON網絡令牌(JWT)是代表 要求雙方之間傳送的緊湊,安全網址的手段。 JWT中的聲明是 編碼爲JavaScript對象表示法(JSON)對象,該對象用作JSON Web簽名(JWS)結構的有效內容的 或JSON Web加密(JWE)結構的明文的 ,聲稱被數字簽名或MAC和/或加密。

所以一個JWT是JWS結構JSON對象作爲有效載荷。一些可選鍵(或索賠)已經被定義,如issaudexp

這也意味着它的完整性保護並不僅僅限定於共享祕密,但也可以使用公共/專用密鑰密碼術。

+0

好吧,這是有道理的。那麼,如果有效載荷包含聲明集,我的用戶信息會在哪裏?你能告訴我一個例子嗎? – leo

+0

請查看附錄A中的示例:https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32 –

+0

聲明將包含用戶信息。下面是代碼中的一個示例,其中有關於正在進行的操作的註釋。https://bitbucket.org/b_c/jose4j/wiki/JWT%20Examples –

相關問題