1. 程式人生 > >JSON Web Token (JWT)生成Token及解密實戰

JSON Web Token (JWT)生成Token及解密實戰

昨天講解了JWT的介紹、應用場景、優點及注意事項等,今天來個JWT具體的使用實踐吧。

從JWT官網支援的類庫來看,jjwt是Java支援的演算法中最全的,推薦使用,網址如下。

https://github.com/jwtk/jjwt

下面來看看如何使用jjwt來實現JWT token的生成與解密,主要用到sha512演算法來演示。

1、匯入jjwt的maven包。

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>
0.9.0</version> </dependency>

注意:JJWT依賴Jackson 2.x,低版本將報錯。

2、建立一個JWTTest測試類。

3、建立金鑰;

這裡使用sha512演算法,所以需要一個金鑰。

Key KEY =newSecretKeySpec("javastack".getBytes(),
            SignatureAlgorithm.HS512.getJcaName());

這樣就生成了一個固定的金鑰:javastack

4、生成JWT token。

核心程式碼如下:

Map<String,Object> stringObjectMap =
newHashMap<>(); stringObjectMap.put("type","1"); String payload ="{\"user_id\":\"1341137\", \"expire_time\":\"2018-01-01 0:00:00\"}"; String compactJws =Jwts.builder().setHeader(stringObjectMap) .setPayload(payload).signWith(SignatureAlgorithm.HS512, KEY).compact(); System.out.println("jwt key:"+newString
(KEY.getEncoded())); System.out.println("jwt payload:"+ payload); System.out.println("jwt encoded:"+ compactJws);

注意:header可以不用設定,claims不能和payload同時設定。

輸出結果:

jwt key:javastack
jwt payload:{"user_id":"1341137","expire_time":"2018-01-01 0:00:00"}
jwt encoded:eyJ0eXBlIjoiMSIsImFsZyI6IkhTNTEyIn0.eyJ1c2VyX2lkIjoiMTM0MTEzNyIsICJleHBpcmVfdGltZSI6IjIwMTgtMDEtMDEgMDowMDowMCJ9.cnyXRnwczgNcNYqV6TUY2MaMfk6vujsZltC8Q51l40dwYJg516oZcV4VDKOypPT8fD7AE63PIhfdm2ALVrfv5A

5、解密JWT token內容。

核心程式碼如下:

Jws<Claims> claimsJws =Jwts.parser().setSigningKey(KEY).parseClaimsJws(compactJws);
JwsHeader header = claimsJws.getHeader();
Claims body = claimsJws.getBody();
System.out.println("jwt header:"+ header);
System.out.println("jwt body:"+ body);
System.out.println("jwt body user-id:"+ body.get("user_id",String.class));

輸出結果:

jwt header:{type=1, alg=HS512}
jwt body:{user_id=1341137, expire_time=2018-01-010:00:00}
jwt body user-id:1341137

再用密文去JWT官網的偵錯程式解密一下,看是否成功。

解密成功,其他演算法使用邏輯一樣,這樣我們可以使用JWT來實現不同服務之間資料的安全傳遞。


相關推薦

JSON Web Token (JWT)生成Token解密實戰

昨天講解了JWT的介紹、應用場景、優點及注意事項等,今天來個JWT具體的使用實踐吧。 從JWT官網支援的類庫來看,jjwt是Java支援的演算法中最全的,推薦使用,網址如下。 下面來看看如何使用jjwt來實現JWT token的生成與解密,主要用到sha

JSON Web Token (JWT)生成Token解密實戰

昨天講解了JWT的介紹、應用場景、優點及注意事項等,今天來個JWT具體的使用實踐吧。從JWT官網支援的類庫來看,jjwt是Java支援的演算法中最全的,推薦使用,網址如下。https://github.com/jwtk/jjwt下面來看看如何使用jjwt來實現JWT toke

APP使用者登入解決方案——JWT(java web token生成Token

什麼是JSON Web Token?JSON Web Token(JWT)是一個開放式標準(RFC 7519),它定義了一種緊湊且自包含的方式,用於在各方之間以JSON物件安全傳輸資訊。這些資訊可以通過數字簽名進行驗證和信任。可以使用祕密(使用HMAC演算法)或使用RSA的公

國服最強JWT生成Token做登錄校驗講解,看完保證你學會!

共享 jwt 存儲 node 基於 clas 成功 講解 算法 轉載於:https://blog.csdn.net/u011277123/article/details/78918390Free碼農 2017-12-28 00:08:02 JWT簡介 JWT(j

Spring Security Oauth2使用JWT生成Token

轉載務必說明出處:https://blog.csdn.net/LiaoHongHB/article/details/84031281 在我們平時使用oauth2的協議中,生成的token是基於oauth2協議本身的生成策略,如下面的程式碼(一般在登陸成功的handler中生成token).:

利用JWT生成Token

開篇 實現Token的方式有很多,本篇介紹的是利用Json Web Token(JWT)生成的Token.JWT生成的Token有什麼好處呢? 安全性比較高,加上密匙加密而且支援多種演算法。 攜帶的資訊是自定義的,而且可以做到驗證token是否過期。 驗證資訊

Java中使用JWT生成Token進行介面鑑權實現

先介紹下利用JWT進行鑑權的思路: 1、使用者發起登入請求。 2、服務端建立一個加密後的JWT資訊,作為Token返回。 3、在後續請求中JWT資訊作為請求頭,發給服務端。 4、服務端拿到JWT之後進行解密,正確解密表示此次請求合法,驗證通過;解密失敗說明Token無效或者已過期。 流程圖如下:

zbb20190110 jwt生成token

TokenUtil package com.zbb.app.jwt; import io.jsonwebtoken.Claims; import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.Jwts; import io.json

從零開始搭建前後端分離的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的專案框架之七使用JWT生成Token(個人見解)

  在 上一篇 中講到了在NetCore專案中如何進行全域性的請求模型驗證,只要在請求模型中加了驗證特性,介面使用時只用將資料拿來使用,而不用去關係資料是否符合業務需求。   這篇中將講些個人對於JWT的看法和使用,在網上也能找到很多相關資料和如何使用,基本都是直接嵌到 &nbs

5 Easy Steps to Understanding JSON Web Tokens (JWT)

5 Easy Steps to Understanding JSON Web Tokens (JWT)In this article, the fundamentals of what JSON Web Tokens (JWT) are, and why they are used will be expla

微服務架構中的身份驗證問題 :JSON Web Tokens( JWT)

場景介紹 軟體安全是一件很負責的問題,由於微服務系統中每個服務都要處理安全問題,所以在微服務場景下會更加複雜,一般我們會四種面向微服務系統的身份驗證方案。 在傳統的單體架構中,單個服務儲存所有的使用者資料,可以校驗使用者,並在認證成功後建立HTTP會

理解JWTJSON Web Token)認證python實踐

原文:https://segmentfault.com/a/1190000010312468?utm_source=tag-newest 幾種常用的認證機制 HTTP Basic Auth HTTP Basic Auth 在HTTP中,基本認證是一種用來允許Web瀏覽器或其他客戶端程式在請求時

什麽是JWTJSON WEB TOKEN

加密 string style 直接 協議 策略 ade aud images 什麽是JWT Json web token(JWT)是為了網絡應用環境間傳遞聲明而執行的一種基於JSON的開發標準(RFC 7519),該token被設計為緊湊且安全的,特別適用於分

JWT--JSON WEB TOKEN

hmac 授權 消費者 隨著 相關 數據 cors 服務器端 容易 轉自簡書 http://www.jianshu.com/p/576dbf44b2ae 什麽是JWT Json web token (JWT), 是為了在網絡應用環境間傳遞聲明而執行的一種基於JSON的開放標

JWT(JSON WEB TOKEN) / oauth2 / SSL

bash 字符 維護 ssl 信息 簡單 角色 ron 保存會話 1: JWT:   為了在網絡應用環境間傳遞聲明而執行的一種基於JSON的開放標準((RFC 7519).該token被設計為緊湊且安全的,特別適用於分布式站點的單點登錄(SSO)場景。JWT的聲明一般被用來

JWT JSON Web Token

bubuko 可靠的 分組 使用 dig pan alt 可靠 stringify JWT(JSON Web Token) 允許我們使用JWT在用戶和服務器之間傳遞安全可靠的信息的規範。 JWT由三個部分組成:header(頭部)、payload(載荷)、signature

深入淺出JWT(JSON Web Token )

sha 安全 nature 調試器 orm 攔截 們的 登錄 長度限制 1. JWT 介紹 JSON Web Token(JWT)是一個開放式標準(RFC 7519),它定義了一種緊湊(Compact)且自包含(Self-contained)的方式,用於在各方之間以JSON

Json Web TokenJWT

.json import form hid color 執行 加密方法 isa dep Json web token (JWT),是為了在網絡應用環境間傳遞聲明而執行的一種基於JSON的開放標準((RFC 7519)。該token被設計為緊湊且安全的,特別適用於分布式站點的

[認證授權] 2.OAuth2授權(續) & JWT(JSON Web Token)

har 表示 一個 wii body 是什麽 ibm 其他 user 1 RFC6749還有哪些可以完善的? 1.1 撤銷Token 在上篇[認證授權] 1.OAuth2授權 中介紹到了OAuth2可以幫我們解決第三方Client訪問受保護資源的問題,但是只提供了如何獲

JWTJSON WEB Token)正確使用場景

頁面包含 eth token 生成 example 各類 場景 bottom container https://www.jianshu.com/p/af8360b83a9f 講真,別再使用JWT了! ThoughtWorks中國 2017.08.16 08