JWT 생 성 및 검증(2017-12-26 수정판)
2928 단어 자바 기반
말 하지 말고 코드 를 붙 여 라.
package com.life.app.token;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.lang3.StringUtils;
import org.bouncycastle.util.encoders.Base64;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
/**
* Json web token
*
*/
public class JWT {
// key
private static final String SECRET_KEY = "xxxxxxx";
/**
*
*
* @return
*/
private static SecretKey generalKey() {
byte[] encodeKey = Base64.decode(SECRET_KEY);
return new SecretKeySpec(encodeKey, 0, encodeKey.length, "AES");
}
/**
* JWT
*
* @param jti JWT , token( )
* @param sub JWT ( )
* @param expiredTimeAt ( ms+ ms), ms( )
* @param claims
* @return
*/
public static String createJWT(String jti, String sub, long expiredTimeAt, Map claims) {
//
SecretKey secretKey = generalKey();
// JWT, ,
JwtBuilder builder = Jwts.builder()
.setIssuedAt(new Date())
.signWith(SignatureAlgorithm.HS256, secretKey);
// jti
if(!StringUtils.isBlank(jti)) {
builder.setId(jti);
}
// sub
if(!StringUtils.isBlank(sub)) {
builder.setSubject(sub);
}
//
if (expiredTimeAt > 0) {
Date expDate = new Date(expiredTimeAt);
builder.setExpiration(expDate);
}
//
if (claims != null) {
//
for (Map.Entry en : claims.entrySet()) {
builder.claim(en.getKey(), en.getValue());
}
}
return builder.compact();
}
/**
*
* JWT
*
* @param jwt
* @return claims, ,
* @throws ExpiredJwtException,SignatureException,Exception token , ,
*/
public static Map parseJWT(String jwt) {
SecretKey secretKey = generalKey();
try {
Map claims = Jwts.parser()
.setSigningKey(secretKey)
.parseClaimsJws(jwt)
.getBody();
return claims;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
Map map = new HashMap();
map.put("userId", 10000);
String jwt = createJWT("", "", System.currentTimeMillis() + 30*60*1000, map);
System.out.println(jwt);
/**
* parseJWT(jwt) Claims ,
* Claims Map , Map , Map
*/
Map claims = parseJWT(jwt);
System.out.println(claims.get("userId"));
System.out.println(claims.get("iat"));
System.out.println(claims.get("exp"));
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
범용 용법 예시앞으로 51CTO 에 정착 해 기술 개발 에 전념 할 테 니 잘 부탁드립니다.다음 코드 는 자신 이 (저자: 이 흥 화) 를 공부 할 때 두 드 린 코드 로 주석 이 완비 되 어 있다. 범용 클래스 Point. ja...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.