【发布时间】:2021-07-10 10:18:41
【问题描述】:
我有以下代码来生成 JWT 令牌。
public TestTokenGenerator() {
try {
if (signer == null) {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
byte[] keySpecBytes = Base64.decodeBase64(getKey());
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keySpecBytes);
PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
signer = new RsaSigner((RSAPrivateKey) privateKey, "SHA512withRSA");
}
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
public static void main(String[] args) {
TestTokenGenerator gen = new TestTokenGenerator();
gen.customerJwt("MYUSER");
}
public String customerJwt(String userCode) {
String token = jwt(userCode, "wd.idp.ext.abc.com");
return token;
}
private String jwt(String userCode, String iss) {
Map<String, Object> claims = new HashMap<>();
claims.put("user_name", userCode);
claims.put("sub", userCode);
claims.put("amr", "[aht]");
String jwt = JwtHelper.encode(OBJECT_MAPPER.formatMap(claims), signer).getEncoded();
log.info("User: {}, Token: {}, Claims: {}", userCode, jwt, claims);
return jwt;
}
private String getKey() {
return "WEQRwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCJ2sTFNuBVzhey"
}
如何将标头(例如“kid”:“b0ec688af03dd7875116bf6d36c3584256ieirir”)添加到上述令牌。
上面的代码在令牌头中缺少kid,如下所示
【问题讨论】:
-
我用mvnrepository.com/artifact/io.jsonwebtoken/jjwt/0.9.1,添加自定义header没有问题。会有帮助吗?
标签: java spring-security jwt