[精讚] [會員登入]
906

[JAVA] JWS, JWT, JWE, JOSE是什麼?

[JAVA] JWS, JWT, JWE, JOSE是什麼?非常的複雜,儘量來搞清楚..

此文完整連結 http://n.sfs.tw/10097

複製連結 [JAVA] JWS, JWT, JWE, JOSE是什麼?@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2016-10-30 03:37:56 最後編修
2016-10-29 21:35:52 By 瘦河馬
 

JWS (JSON Web Signatures) 定義在RFC7515[1]

   JSON Web Signature (JWS) represents content secured with digital
   signatures or Message Authentication Codes (MACs) using JSON-based
   data structures.

使用數位簽章 或 以Json為底的資料結構訊息認證碼[2] 來確保內容安全 的網頁簽章方式

JWS包函有:

   o  JOSE Header
   o  JWS Payload
   o  JWS Signature

其中JOSE是兩個部分的集合(二擇一或共存):

   o  JWS Protected Header
   o  JWS Unprotected Header

JOSE (JSON Object Signing and Encryption)[5] 是JSON物件簽章和編碼的方法

JWE (JSON Web Encryption)定義在RFC7516[3]中:

   JSON Web Encryption (JWE) represents encrypted content using JSON-
   based data structures [RFC7159].  The JWE cryptographic mechanisms
   encrypt and provide integrity protection for an arbitrary sequence of
   octets.

上面提到使用以Json為底的資料結構訊息認證碼加密後的內容就是 JWE

JWT ( JSON Web Token)定義在RFC7519[2]中:

   JSON Web Token (JWT) is a compact claims representation format
   intended for space constrained environments such as HTTP
   Authorization headers and URI query parameters.  JWTs encode claims
   to be transmitted as a JSON [RFC7159] object that is used as the
   payload of a JSON Web Signature (JWS) [JWS] structure or as the
   plaintext of a JSON Web Encryption (JWE) [JWE] structure, enabling
   the claims to be digitally signed or integrity protected with a
   Message Authentication Code (MAC) and/or encrypted.  JWTs are always
   represented using the JWS Compact Serialization or the JWE Compact
   Serialization.


JWT是緊湊宣告表示格式,適用於空間受限的環境,像HTTP的授權表頭 或 URI的query參數。JWT可放在JWS的載體或JWE的文字方式承載。

實作

在Nimbus JOSE+ JWT是有名的JAVA library [4],可以採用maven安裝,來看一下他的範例

// Create an HMAC-protected JWS object with some payload
JWSObject jwsObject = new JWSObject(new JWSHeader(JWSAlgorithm.HS256),
                                    new Payload("Hello world!"));
 
// We need a 256-bit key for HS256 which must be pre-shared
byte[] sharedKey = new byte[32];
new SecureRandom().nextBytes(sharedKey);
 
// Apply the HMAC to the JWS object
jwsObject.sign(new MACSigner(sharedKey));
 
// Output to URL-safe format
jwsObject.serialize();


這麼會搶鏡頭是怎樣?!

參考資料

[1] RFC7515 JWS https://tools.ietf.org/html/rfc7515
[2] RFC 7159 JWT RFC7159
[3] RFC7516 JWE https://tools.ietf.org/html/rfc7516
[4] Nimbus JOSE+JWT @connect2id
[5] JOSE https://datatracker.ietf.org/wg/jose/documents/
 

 

你可能感興趣的文章

[JAVA] 撰寫驗證伺服器 #1 僅僅只是做個記錄,這篇的參考效用不大

在Centos7 下安裝 Wildfly10 wildfly以前叫JBoss,2014.11.20改名叫Wildfly,起始版本是Wildfly8,現在已經出到Wil

[JAVA] 撰寫驗證伺服器 #3 -- 建立IDP伺服器 僅僅只是做個記錄,這篇的參考效用非常之微小

[Wildfly10] 發佈war檔 deploy war file onto wildfly10

[JAVA] 撰寫驗證伺服器 #2 -- 安裝測試專案 僅僅只是做個記錄,這篇的參考效用非常微小

如何在linux下執行java 原生的java應用程式可以使用簡單的方法在console下面寫出來,適合作簡單的應用

[NetBeans] 使用git複製別人的專案 NetBeans使用git複製別人的專案及版本控制

[JAVA] JWS, JWT, JWE, JOSE是什麼? [JAVA] JWS, JWT, JWE, JOSE是什麼?非常的複雜,儘量來搞清楚..

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[jQuery] select 元件的取值及給值 html中的元件select,在jquery中要如何使用?

[Freebsd] 定時測試 ADSL 是否斷線並重連 中華電信 ADSL 雖有固定 ip,可是他卻會不定時「斷線」, 使用以下的 方法可以定時測試是否斷線,以及重新撥接。

一個邏輯的錯誤刪了全部檔案的經驗 今天本來想做一件很簡單的事,但卻足足浪費我多一倍的時間,再加上刪掉我全部的檔案,原因只是因為我自己的邏輯錯誤。

NETCRAFT發現你的網站及作業系統 NETCRAFT可以發現你的網站及作業系統

[PHP] 檢查檔案是否是圖檔 使用getimagesize函數檢查檔案是否是圖檔