SpringBoot 통합 Jwt
13054 단어 SpringBoot 노트
JSon Web Token (JWT) 은 네트워크 응용 환경 간 에 성명 을 전달 하기 위해 실 행 된 JSON 기반 의 개방 기준 (RFC 7519) 으로 이 token 은 치밀 하고 안전 하 며 분포 식 사이트 의 단일 로그 인 (SSO) 장면 에 특히 적용 되도록 설계 되 었 다.JWT 의 성명 은 일반적으로 신분 제공 자 와 서비스 제공 자 사이 에 인 증 된 사용자 의 신분 정 보 를 전달 하여 자원 서버 에서 자원 을 얻 을 수 있 도록 하고 다른 업무 논리 에 필요 한 성명 정 보 를 추가 할 수 있다. 이 token 은 인증 에 직접 사용 할 수도 있 고 암호 화 될 수도 있다.
JWT 원리
{
'typ':'JWT',
'alg':'HS256'
}
<!-- jwt -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
import java.util.Date;
import java.util.HashMap;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.interfaces.DecodedJWT;
public class JwtUtil {
/**
*
*
*/
private static final long EXPIRE_TIME = 30*60*1000;
/**
* token
*/
private static final String TOKEN_SECRET = "renxu";
/**
* ,
* @param username
* @param password
* @return token
*/
public static String getToken(String username,String password){
//
Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME);
//
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
//
HashMap<String, Object> header = new HashMap<String,Object>();
header.put("typ", "JWT");
header.put("alg", "HS256");
// username password
return JWT.create().withHeader(header).withClaim("username",username).withClaim("password",password).withExpiresAt(date).sign(algorithm);
}
/**
* token
* @param token
* @return ture: 、false:
*/
public static boolean verification(String token){
try {
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
JWTVerifier verifier = JWT.require(algorithm).build();
DecodedJWT jwt = verifier.verify(token);
return true;
} catch (IllegalArgumentException e) {
return false;
} catch (JWTVerificationException e) {
return false;
}
}
}