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。