在Java中,生成和驗證JSON Web Tokens(JWT)可以使用開源庫 jjwt。JWT是一種基于JSON的令牌,在用戶成功登錄時生成,用于在不同的客戶端和服務器之間傳輸身份驗證信息。
下面是一個簡單的示例,演示如何使用jjwt庫來生成和驗證JWT:
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.Claims; // 生成JWT String jwt = Jwts.builder() .setSubject("john.doe") .setIssuer("example.com") .claim("name", "John Doe") .claim("role", "admin") .signWith(SignatureAlgorithm.HS256, "secretkey") .compact(); // 驗證JWT try { Claims claims = Jwts.parser() .setSigningKey("secretkey") .parseClaimsJwt(jwt) .getBody(); System.out.println("Subject: " + claims.getSubject()); System.out.println("Issuer: " + claims.getIssuer()); System.out.println("Name: " + claims.get("name")); System.out.println("Role: " + claims.get("role")); } catch (Exception e) { System.out.println("Invalid token."); }
首先,我們使用builder方法創建一個JWT,并使用setSubject和setIssuer方法設置主題和發行者。然后,我們使用claim方法添加自定義聲明,例如name和role。最后,我們使用signWith方法用指定的算法和密鑰簽名JWT,并使用compact方法將其生成為字符串。
在驗證JWT時,我們使用parser方法創建一個JWT解析器,設置密鑰后并使用parseClaimsJwt方法解析JWT。如果解析成功,我們可以使用getBody方法獲取JWT的聲明,例如主題、發行者、自定義聲明等。如果解析失敗,我們將收到一個異常,表明JWT無效。
可以看到,使用jjwt庫生成和驗證JWT非常簡單。當然,還有更多高級功能和選項可用,您可以查看jjwt文檔以了解更多詳細信息。