用Java解碼JWT令牌 | java-jwt
1.概述RESTAPI安全性中經常使用JSONWeb令牌(JWT)。[1]儘管可以通過諸如SpringSecurityOAuth之類的框架來解析令牌,但我們還是希望以自己的代碼處理令牌。在本教程中,我們將解碼並驗證JWT的完整性[2]。2.JWT令牌的結構首先,讓我們了解一下JWT令牌的結構:標頭payload(通常稱為主體)簽名簽名是可選的。有效的JWT令牌只能由標頭和有效負載部分組成。但是,我們使用簽名部分來驗證標頭和有效負載中安全授權的內容。這些部分錶示為以句點(‘.)分隔的base64編碼字符串。通過設計,任何人都可以解碼JWT令牌並讀取標頭和有效負載部分的內...
1.概述REST API安全性中經常使用JSON Web令牌(JWT)。[1]儘管可以通過諸如Spring Security OAuth之類的框架來解析令牌,但我們還是希望以自己的代碼處理令牌。
在本教程中,我們將解碼並驗證JWT的完整性[2]。
2. JWT令牌的結構首先,讓我們了解一下JWT令牌的結構:
標頭 payload (通常稱為主體) 簽名簽名是可選的。有效的JWT令牌只能由標頭和有效負載部分組成。但是,我們使用簽名部分來驗證標頭和有效負載中安全授權的內容。
這些部分錶示為以句點(‘.)分隔的base64編碼字符串。通過設計,任何人都可以解碼JWT令牌並讀取標頭和有效負載部分的內容。但是,我們需要訪問用於創建簽名的密鑰以驗證令牌的完整性。
最常見的是,JWT包含用戶的“聲明”。這些代表有關用戶的數據,API可以使用這些數據來授予權限或跟踪提供令牌的用戶。解碼令牌可以使應用程序使用數據,而驗證則可以使應用程序相信JWT是由受信任的源生成的。
讓我們看看如何在Java中解碼和驗證令牌。
3.解碼JWT令牌我們可以使用內置的Java函數解碼令牌。
首先,讓我們將令牌分為幾個部分:
String[] chunks = token.split("\.");我們應該注意,傳遞給String.split的正則表達式使用轉義的.避免使用。的字符。意思是“任何字符”。
我們的chunks數組現在應該具有2或3個與JWT的部分相對應的元素。
接下來,讓我們使用base64解碼器對標頭和有效負載部分進行解碼:
Base64.Decoder decoder = Base64.getDecoder(); String header = new String(decoder.decode(chunks[0])); String payload = new String(decoder.decode(chunks[1]));讓我們使用JWT令牌運行以下代碼(我們可以在線解碼[3]以比較結果):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....