Class JwtTokenProvider


  • @Component
    public class JwtTokenProvider
    extends java.lang.Object
    JWT 토큰 처리기.
    Version:
    1.0
    Author:
    always0ne
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String createAccessToken​(java.lang.String userId, java.util.List<UserRole> roles)
      AccessToken 생성.
      java.lang.String createRefreshToken​(java.lang.String userId, java.util.List<UserRole> roles)
      RefreshToken 생성.
      protected java.lang.String generateToken​(java.lang.String userId, java.util.List<UserRole> roles, long tokenValidMilSecond)
      JWTToken 생성.
      org.springframework.security.core.Authentication getAuthentication​(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.Claims getClaimsFromToken​(java.lang.String token)
      토큰에서 토큰 데이터를 추출.
      java.lang.String getUserId​(io.jsonwebtoken.Claims claims)
      JWT 토큰 데이터 에서 UserID 추출.
      protected void init()
      SecretKey 암호화 하면서 초기화.
      io.jsonwebtoken.Claims resolveToken​(javax.servlet.http.HttpServletRequest req)
      Http Request 에서 JWT 토큰의 데이터 추출.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • secretKey

        @Value("${jwt.secretKey}")
        private java.lang.String secretKey
        Secret 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
    • Constructor Detail

      • JwtTokenProvider

        public JwtTokenProvider()
    • 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:
        사용자 권한 정보