【发布时间】:2020-01-22 11:35:54
【问题描述】:
使用在线 JWT 调试器对 JWT 令牌进行编码和解码,我创建了这个简单令牌
编码令牌的秘密是qwertypassword
标题是{ "alg": "HS256"}
有效载荷是{ "sub": "admin", "aud": "Solr"}
当您使用非 base64 编码的密钥进行编码时,它会生成 JWT
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6IlNvbHIifQ.5T7L_L1MPfQ_5FjKGa1fTPqrzwK4bNSM812nW6oyjb8
当秘密是 base64 编码时,它会生成 JWT
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6IlNvbHIifQ.SWCJDd6B_m7xr_puQH-wgbxvXyJYXH9lTpldOU0eQKc
这里是生成 JWT 的 Java 代码,用于当密钥不是 base64 编码时。
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
public class JWTEncodeTest {
public static void main(String[] args) {
try {
String secretkey="qwertypassword";
//The JWT signature algorithm we will be using to sign the token
String jwtToken = Jwts.builder()
.setSubject("admin")
.setAudience("Solr")
.signWith(SignatureAlgorithm.HS256,secretkey.getBytes()).compact();
System.out.println("jwtToken=");
System.out.println(jwtToken);
} catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
我在这段 Java 代码中缺少什么来生成 JWT,其中秘密 base64 编码以生成 JWT 值
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6IlNvbHIifQ.SWCJDd6B_m7xr_puQH-wgbxvXyJYXH9lTpldOU0eQKc
【问题讨论】:
-
你有什么问题?你不能只对你的
secretkey进行base64 编码吗?请参阅 stackoverflow.com/questions/13109588/encoding-as-base64-in-java 了解如何使用 base64。