@SuppressWarnings("Convert2Diamond") @Test public void shouldAddHeaderClaim() throws Exception { Map<String, Object> header = new HashMap<String, Object>(); header.put("asd", 123); String signed = JWTCreator.init() .withHeader(header) .sign(Algorithm.HMAC256("secret")); assertThat(signed, is(notNullValue())); String[] parts = signed.split("\\."); String headerJson = new String(Base64.decodeBase64(parts[0]), StandardCharsets.UTF_8); assertThat(headerJson, JsonMatcher.hasEntry("asd", 123)); }
public static String createToken(Map<String, String> data, Date expireTime) throws UnsupportedEncodingException { Map<String, Object> map = Maps.newHashMap(); map.put("alg", "HS256"); map.put("typ", "JWT"); if (data == null) { data = new HashMap<>(0); } // 过期时间 Date now = new Date(); if (expireTime == null) { Calendar time = Calendar.getInstance(); time.add(Calendar.DATE, DEFAULT_EXPIRE_DAYS); expireTime = time.getTime(); } JWTCreator.Builder builder = JWT.create().withHeader(map).withClaim("iss", data.containsKey("iss") ? data.remove("iss") : DEFAULT_ISS); for (Map.Entry<String, String> entry : data.entrySet()) { builder = builder.withClaim(entry.getKey(), entry.getValue()); } String token = builder.withIssuedAt(now) .withExpiresAt(expireTime) .sign(Algorithm.HMAC256(SECRET)); return token; }
@Override public String createJWT(Map<String, String> data) { Assert.notNull(apiConfig, "apiConfig尚未初始化"); Builder builder = JWT.create().withHeader(headerClaims); Set<Entry<String, String>> entrySet = data.entrySet(); for (Entry<String, String> entry : entrySet) { builder.withClaim(entry.getKey(), entry.getValue()); } Calendar expiredTime = Calendar.getInstance(); expiredTime.add(Calendar.SECOND, apiConfig.getJwtExpireIn()); try { return builder // 过期时间 .withExpiresAt(expiredTime.getTime()) // 创建时间 .withIssuedAt(new Date()) // 签名 .sign(Algorithm.HMAC256(apiConfig.getJwtSecret())); } catch (Exception e) { logger.error(e.getMessage(), e); throw Errors.ERROR_OPT_JWT.getException(); } }
/** * WT生成Token. * @param obj * @return str */ public String createToken(Object obj) { Date iatDate = new Date(); // expire time Calendar nowTime = Calendar.getInstance(); nowTime.add(calendarField, calendarInterval); Date expiresDate = nowTime.getTime(); // header Map Map<String, Object> map = new HashMap<>(); map.put("alg", "HS256"); map.put("typ", "JWT"); // header JWTCreator.Builder builder = JWT.create().withHeader(map); // payload JSONObject json = JSONObject.parseObject(JSON.toJSONString(obj)); for (String key : json.keySet()) { builder.withClaim(key, json.get(key).toString()); } builder.withIssuedAt(iatDate); // sign time builder.withExpiresAt(expiresDate); // expire time String token = builder.sign(Algorithm.HMAC256(SECRET)); // signature return token; }
public static String createToken(String username, String userId) { Map<String, Object> header = new HashMap<>(2); header.put("alg", "HS256"); header.put("typ", "JWT"); Calendar calendar = Calendar.getInstance(); Date now = calendar.getTime(); calendar.add(Calendar.DAY_OF_MONTH, 3); Date expireDate = calendar.getTime(); return JWT.create().withHeader(header) .withClaim("iss", "hera") .withClaim("aud", "2dfire") .withClaim("username", username) .withClaim("userId", userId) .withIssuedAt(now) .withExpiresAt(expireDate) .sign(algorithm); }