반응형
Token 클래스
package com.mit.algorithm;
import static org.junit.Assert.assertEquals;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import com.mit.dto.User;
import io.fusionauth.jwt.Signer;
import io.fusionauth.jwt.Verifier;
import io.fusionauth.jwt.domain.JWT;
import io.fusionauth.jwt.hmac.HMACSigner;
import io.fusionauth.jwt.hmac.HMACVerifier;
public class Token {
static Signer signer = HMACSigner.newSHA256Signer("mit team");
public String getToken(User user) {
// Useremail로 토큰을 만든다.
// plusMinutes 는 토큰을 등록하는 시간임 지금은 1분
JWT jwt = new JWT().setIssuer(user.getEmail()).setIssuedAt(ZonedDateTime.now(ZoneOffset.UTC))
.setSubject("f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3")
.setExpiration(ZonedDateTime.now(ZoneOffset.UTC).plusMinutes(30));
// Sign and encode the JWT to a JSON string representation
String token = JWT.getEncoder().encode(jwt, signer);
return token;
}
public String getToken(String data) {
// Useremail로 토큰을 만든다.
// plusMinutes 는 토큰을 등록하는 시간임 지금은 1분
JWT jwt = new JWT().setIssuer(data).setIssuedAt(ZonedDateTime.now(ZoneOffset.UTC))
.setSubject("f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3")
.setExpiration(ZonedDateTime.now(ZoneOffset.UTC).plusMinutes(3));
// Sign and encode the JWT to a JSON string representation
String token = JWT.getEncoder().encode(jwt, signer);
return token;
}
// 복호화 하는 방법 : 내이름 넣음
// 토큰이 필요한 API 정보에 대해서 유효성을 체크해주면된다
static Verifier verifier = HMACVerifier.newVerifier("mit team");
// Token이 유효하면 True 유효하지 않으면 False를 반환한다.
// API를 받을때 유효한 토큰인지 함께 검사한다.
public boolean cmpToekn(String token) {
try {
// Build an HMC verifier using the same secret that was used to sign the JWT
JWT jwt = JWT.getDecoder().decode(token, verifier);
assertEquals(jwt.subject, "f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3");
} catch (Exception e) {
return false;
}
return true;
}
}
Token 클래스안에는 Token을 만드는것과 Token을 검증하는 함수가 들어있다.
아래 Maven 추가하고 사용해보자
<!-- JWt -->
<dependency>
<groupId>io.fusionauth</groupId>
<artifactId>fusionauth-jwt</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
</dependency>
반응형
'Spring' 카테고리의 다른 글
Spring : 이미지업로드 및 이미지 반환. (0) | 2020.07.31 |
---|---|
스프링 Swagger 커스텀 마이징을 해보자 (0) | 2020.07.24 |
Spring properties 설정 (0) | 2020.07.22 |
Spring git으로 pull 받은 프로젝트 임폴트가안될때 (0) | 2020.07.21 |
Spring 설치하기 및 설정하기 (0) | 2020.07.15 |