190307 JWT Authentication

JWT 的架構如下。

[Header].[Payload].[Signature]

Server 端拿到 Token 後,先驗證 Token 的正確性。

[Signature] = Base64Url( encrypt( [Header].[Payload] ))

-------------------------------------------------------------------------

確認 [Signature] 未被更改後,再來就是檢查是否超過規定時間。

在拆解 Token 時,會用到 Regular Expression。

JWT 是由點(.)將 Header, Payload 與 Signature 串接在一塊。

但點(.)在正規表示法中是保留字元。

所以使用 Java 的 String 的 split 拆解 Token 時,必須用反斜線(\)來知會正規表示法的 Parser 將點(.)視為字元而非正規表示法規則的一部份。

但 Back Slash (\) 在 Java 中為跳脫字元。

所以當在 Java 中要使用點(.)做為正規表示法中的字元來拆解字串時,則必須將其表示為下面這樣。

string.split( "\\." ) ;

-------------------------------------------------------------------------

Java EE 中要讀取既有的 JSON,可使用 javax.json.Json 類別。

可透過 InputStream 或 Read 來建立 JsonReader 物件。

前面談到的 Token,經由 Base64 URL Decoder 解碼所拿到的 byte array 我們就可直接使用 ByteArrayInputStream 來建立 JsonReader。





留言

這個網誌中的熱門文章

泰文子音與字形之間的變化

AUTOMAXX UP-5HX 使用心得