Class JwtTokenProvider

java.lang.Object
io.leandev.appfuse.security.auth.JwtTokenProvider

public class JwtTokenProvider extends Object
  • Field Details

    • CLAIM_SESSION_ID

      public static final String CLAIM_SESSION_ID

      Session ID claim 名稱

      用於識別一組 access token 和 refresh token 所屬的會話, 登出時只需將 session ID 加入黑名單,即可同時失效兩種 token。

      See Also:
  • Constructor Details

    • JwtTokenProvider

      public JwtTokenProvider()
  • Method Details

    • generateToken

      public String generateToken(org.springframework.security.core.userdetails.UserDetails userDetails, Map<String,Object> claims, Instant expiryDate)
    • generateToken

      public String generateToken(org.springframework.security.core.userdetails.UserDetails userDetails, Map<String,Object> claims)
    • generateToken

      public String generateToken(org.springframework.security.core.userdetails.UserDetails userDetails, Instant expiryDate)
    • generateToken

      public String generateToken(org.springframework.security.core.userdetails.UserDetails userDetails, Map<String,Object> claims, long jwtExpirationInMs)
    • generateToken

      public String generateToken(org.springframework.security.core.userdetails.UserDetails userDetails, long jwtExpirationInMs)
    • generateToken

      public String generateToken(org.springframework.security.core.Authentication authentication, Map<String,Object> claims)
    • generateToken

      public String generateToken(org.springframework.security.core.Authentication authentication)
    • generateRefreshToken

      public String generateRefreshToken(org.springframework.security.core.Authentication authentication, Map<String,Object> claims)

      產生 Refresh Token

      Refresh Token 使用較長的過期時間,並包含 tokenType claim 以區分。

      Parameters:
      authentication - 認證資訊
      claims - 額外的 claims
      Returns:
      Refresh Token
    • generateRefreshToken

      public String generateRefreshToken(org.springframework.security.core.userdetails.UserDetails userDetails, Map<String,Object> claims)
      產生 Refresh Token
      Parameters:
      userDetails - 用戶資訊
      claims - 額外的 claims
      Returns:
      Refresh Token
    • getRefreshTokenExpirationInMs

      public long getRefreshTokenExpirationInMs()
      取得 Refresh Token 過期時間(毫秒)
    • getUsernameFromJwt

      public String getUsernameFromJwt(String token)
    • getClaimsFromJwt

      public io.jsonwebtoken.Claims getClaimsFromJwt(String token)
    • getSessionIdFromJwt

      public String getSessionIdFromJwt(String token)
      從 JWT token 中取得 session ID
      Parameters:
      token - JWT token(access 或 refresh token)
      Returns:
      session ID,若不存在則回傳 null
    • validateToken

      public void validateToken(String authToken) throws io.jsonwebtoken.JwtException
      Throws:
      io.jsonwebtoken.JwtException
    • refreshToken

      public String refreshToken(String refreshToken) throws io.jsonwebtoken.JwtException
      使用 Refresh Token 產生新的 Access Token
      Parameters:
      refreshToken - Refresh Token
      Returns:
      新的 Access Token
      Throws:
      io.jsonwebtoken.JwtException - 如果 token 無效或不是 refresh token