Package com.restapi.template.security
Class JwtTokenProvider
- java.lang.Object
-
- com.restapi.template.security.JwtTokenProvider
-
@Component public class JwtTokenProvider extends java.lang.ObjectJWT 토큰 처리기.- Version:
- 1.0
- Author:
- always0ne
-
-
Field Summary
Fields Modifier and Type Field Description private longaccessTokenValidMilSecondAccessToken 유효시간(10분).private java.security.Keykeyencrypted Secret Key.private longrefreshTokenValidMilSecondRefreshToken 유효시간(일주일).private java.lang.StringsecretKeySecret Key.
-
Constructor Summary
Constructors Constructor Description JwtTokenProvider()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.StringcreateAccessToken(java.lang.String userId, java.util.List<UserRole> roles)AccessToken 생성.java.lang.StringcreateRefreshToken(java.lang.String userId, java.util.List<UserRole> roles)RefreshToken 생성.protected java.lang.StringgenerateToken(java.lang.String userId, java.util.List<UserRole> roles, long tokenValidMilSecond)JWTToken 생성.org.springframework.security.core.AuthenticationgetAuthentication(io.jsonwebtoken.Claims claims)Spring Security 인증토큰 발급.private java.util.Collection<? extends org.springframework.security.core.GrantedAuthority>getAuthorities(io.jsonwebtoken.Claims claims)JWT 토큰 데이터 Roles 추출.io.jsonwebtoken.ClaimsgetClaimsFromToken(java.lang.String token)토큰에서 토큰 데이터를 추출.java.lang.StringgetUserId(io.jsonwebtoken.Claims claims)JWT 토큰 데이터 에서 UserID 추출.protected voidinit()SecretKey 암호화 하면서 초기화.io.jsonwebtoken.ClaimsresolveToken(javax.servlet.http.HttpServletRequest req)Http Request 에서 JWT 토큰의 데이터 추출.
-
-
-
Field Detail
-
secretKey
@Value("${jwt.secretKey}") private java.lang.String secretKeySecret Key.
-
key
private java.security.Key key
encrypted Secret Key.
-
accessTokenValidMilSecond
private final long accessTokenValidMilSecond
AccessToken 유효시간(10분).- See Also:
- Constant Field Values
-
refreshTokenValidMilSecond
private final long refreshTokenValidMilSecond
RefreshToken 유효시간(일주일).- See Also:
- Constant Field Values
-
-
Method Detail
-
init
@PostConstruct protected void init()
SecretKey 암호화 하면서 초기화.
-
createAccessToken
public java.lang.String createAccessToken(java.lang.String userId, java.util.List<UserRole> roles)AccessToken 생성.- Parameters:
userId- 발급할 사용자의 아이디roles- 사용자에게 허용할 권한- Returns:
- AccessToken
-
createRefreshToken
public java.lang.String createRefreshToken(java.lang.String userId, java.util.List<UserRole> roles)RefreshToken 생성.- Parameters:
userId- 발급할 사용자의 아이디roles- 사용자에게 허용할 권한- Returns:
- AccessToken
-
generateToken
protected java.lang.String generateToken(java.lang.String userId, java.util.List<UserRole> roles, long tokenValidMilSecond)JWTToken 생성.- Parameters:
userId- 발급할 사용자의 아이디roles- 사용자에게 허용할 권한tokenValidMilSecond- 토큰 유효시간- Returns:
- AccessToken
-
resolveToken
public io.jsonwebtoken.Claims resolveToken(javax.servlet.http.HttpServletRequest req)
Http Request 에서 JWT 토큰의 데이터 추출. Authorization 헤더에 Bearer [Token] 형태로 되어야 함- Parameters:
req- Http 요청- Returns:
- 토큰 데이터
-
getClaimsFromToken
public io.jsonwebtoken.Claims getClaimsFromToken(java.lang.String token)
토큰에서 토큰 데이터를 추출.- Parameters:
token- JWT 토큰- Returns:
- 토큰 데이터
-
getAuthentication
public org.springframework.security.core.Authentication getAuthentication(io.jsonwebtoken.Claims claims)
Spring Security 인증토큰 발급. accessToken 은 주기가 짧기 때문에 검사없이 허용한다. 매번 DB에 검증 하기엔 OverHead 가 너무 큼- Parameters:
claims- JWT 토큰 데이터- Returns:
- Spring Security 인증토큰
-
getUserId
public java.lang.String getUserId(io.jsonwebtoken.Claims claims)
JWT 토큰 데이터 에서 UserID 추출.- Parameters:
claims- JWT 토큰 데이터- Returns:
- UserId
-
getAuthorities
private java.util.Collection<? extends org.springframework.security.core.GrantedAuthority> getAuthorities(io.jsonwebtoken.Claims claims)
JWT 토큰 데이터 Roles 추출.- Parameters:
claims- JWT 토큰 데이터- Returns:
- 사용자 권한 정보
-
-